Initial commit
This commit is contained in:
		
						commit
						a5bfa83769
					
				| 
						 | 
				
			
			@ -0,0 +1,31 @@
 | 
			
		|||
 | 
			
		||||
Microsoft Visual Studio Solution File, Format Version 12.00
 | 
			
		||||
# Visual Studio Version 16
 | 
			
		||||
VisualStudioVersion = 16.0.31911.196
 | 
			
		||||
MinimumVisualStudioVersion = 10.0.40219.1
 | 
			
		||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "kolos", "kolos\kolos.vcxproj", "{E7474878-D708-4D5F-98F6-2F86CF62DDD3}"
 | 
			
		||||
EndProject
 | 
			
		||||
Global
 | 
			
		||||
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 | 
			
		||||
		Debug|x64 = Debug|x64
 | 
			
		||||
		Debug|x86 = Debug|x86
 | 
			
		||||
		Release|x64 = Release|x64
 | 
			
		||||
		Release|x86 = Release|x86
 | 
			
		||||
	EndGlobalSection
 | 
			
		||||
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
 | 
			
		||||
		{E7474878-D708-4D5F-98F6-2F86CF62DDD3}.Debug|x64.ActiveCfg = Debug|x64
 | 
			
		||||
		{E7474878-D708-4D5F-98F6-2F86CF62DDD3}.Debug|x64.Build.0 = Debug|x64
 | 
			
		||||
		{E7474878-D708-4D5F-98F6-2F86CF62DDD3}.Debug|x86.ActiveCfg = Debug|Win32
 | 
			
		||||
		{E7474878-D708-4D5F-98F6-2F86CF62DDD3}.Debug|x86.Build.0 = Debug|Win32
 | 
			
		||||
		{E7474878-D708-4D5F-98F6-2F86CF62DDD3}.Release|x64.ActiveCfg = Release|x64
 | 
			
		||||
		{E7474878-D708-4D5F-98F6-2F86CF62DDD3}.Release|x64.Build.0 = Release|x64
 | 
			
		||||
		{E7474878-D708-4D5F-98F6-2F86CF62DDD3}.Release|x86.ActiveCfg = Release|Win32
 | 
			
		||||
		{E7474878-D708-4D5F-98F6-2F86CF62DDD3}.Release|x86.Build.0 = Release|Win32
 | 
			
		||||
	EndGlobalSection
 | 
			
		||||
	GlobalSection(SolutionProperties) = preSolution
 | 
			
		||||
		HideSolutionNode = FALSE
 | 
			
		||||
	EndGlobalSection
 | 
			
		||||
	GlobalSection(ExtensibilityGlobals) = postSolution
 | 
			
		||||
		SolutionGuid = {C17EDCD4-5F67-47A4-A6C9-279E88BBD010}
 | 
			
		||||
	EndGlobalSection
 | 
			
		||||
EndGlobal
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,118 @@
 | 
			
		|||
#include <iostream>
 | 
			
		||||
#include <vector>
 | 
			
		||||
 | 
			
		||||
using namespace std;
 | 
			
		||||
 | 
			
		||||
struct Video {
 | 
			
		||||
    string name;
 | 
			
		||||
    int length;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct User {
 | 
			
		||||
    int id;
 | 
			
		||||
    string name;
 | 
			
		||||
    string surname;
 | 
			
		||||
    int subDuration;
 | 
			
		||||
    bool avaliable;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
class VoD {
 | 
			
		||||
    vector<User> users;
 | 
			
		||||
    vector<Video> videos;
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
    void addUser(string name, string surname, int subDuration) {
 | 
			
		||||
        int len = users.size();
 | 
			
		||||
        User tmp;
 | 
			
		||||
        tmp.id = len;
 | 
			
		||||
        tmp.name = name;
 | 
			
		||||
        tmp.surname = surname;
 | 
			
		||||
        tmp.subDuration = subDuration;
 | 
			
		||||
        tmp.avaliable = true;
 | 
			
		||||
        users.push_back(tmp);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void removeUser(int id) {
 | 
			
		||||
        /*users.erase(
 | 
			
		||||
            remove_if(users.begin(), users.end(), [&](User const& user) {
 | 
			
		||||
                return user.id == id;
 | 
			
		||||
                }),
 | 
			
		||||
            users.end());*/
 | 
			
		||||
        users.at(id).avaliable = false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void extendSub(int userId, int days) {
 | 
			
		||||
        if (!users.at(userId).avaliable) cout << "User with ID " << userId << " is not avaliable" << endl;
 | 
			
		||||
        users.at(userId).subDuration = users.at(userId).subDuration + days;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void watchVideo(int userId) {
 | 
			
		||||
        if (!users.at(userId).avaliable) cout << "User with ID " << userId << " is not avaliable" << endl;
 | 
			
		||||
        else if (users.at(userId).subDuration > 0) cout << "User " << users.at(userId).name << " can watch" << endl;
 | 
			
		||||
        else cout << "User " << users.at(userId).name << " cannot watch (expired " << (users.at(userId).subDuration * -1) << " days ago)" << endl;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    friend void displayUsers(VoD);
 | 
			
		||||
    friend void displayVideos(VoD);
 | 
			
		||||
 | 
			
		||||
    bool isSubValidForUser(int id) {
 | 
			
		||||
        User user = users.at(id);
 | 
			
		||||
        if (user.subDuration > 0 && users.at(id).avaliable) return true;
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void addVideo(string name, int length) {
 | 
			
		||||
        Video tmp;
 | 
			
		||||
        tmp.name = name;
 | 
			
		||||
        tmp.length = length;
 | 
			
		||||
        videos.push_back(tmp);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void removeVideo(string name) {
 | 
			
		||||
        videos.erase(
 | 
			
		||||
            remove_if(videos.begin(), videos.end(), [&](Video const& video) {
 | 
			
		||||
                return video.name == name;
 | 
			
		||||
                }),
 | 
			
		||||
            videos.end());
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void displayUsers(VoD vod) {
 | 
			
		||||
    for (vector<User>::iterator i = vod.users.begin(); i != vod.users.end(); i++) {
 | 
			
		||||
        User user = *i;
 | 
			
		||||
        if (!user.avaliable) continue; // iterowanie wektora z "pustym" polem wywala³o segfault, nie wiem dlaczego skoro podejœcie z displayVideos() dzia³a tam prawid³owo
 | 
			
		||||
        cout << "ID: " << user.id << ", " << user.name << " " << user.surname;
 | 
			
		||||
        if (vod.isSubValidForUser(user.id)) cout << ", sub valid for " << user.subDuration << " days" << endl;
 | 
			
		||||
        else cout << ", sub expired " << (user.subDuration * -1) << " days ago" << endl; // ujemne wartoœci subDuration to wygas³y abonament, mno¿ymy przez -1 by zamieniæ na normalne dni
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void displayVideos(VoD vod) {
 | 
			
		||||
    for (vector<Video>::iterator i = vod.videos.begin(); i != vod.videos.end(); i++) {
 | 
			
		||||
        Video vid = *i;
 | 
			
		||||
        cout << "Name: " << vid.name << ", length: " << vid.length << " minutes" << endl;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int main()
 | 
			
		||||
{
 | 
			
		||||
    VoD vod;
 | 
			
		||||
    vod.addVideo("Interstellar", 180);
 | 
			
		||||
    vod.addVideo("The Martian", 125);
 | 
			
		||||
    vod.addVideo("Gravity", 100);
 | 
			
		||||
    displayVideos(vod);
 | 
			
		||||
    vod.removeVideo("The Martian");
 | 
			
		||||
    displayVideos(vod);
 | 
			
		||||
    vod.addUser("Andrzej", "Kretoszczur", 7);
 | 
			
		||||
    vod.addUser("Stefan", "Myszojelen", 14);
 | 
			
		||||
    vod.addUser("Jakub", "Dodo", 21);
 | 
			
		||||
    displayUsers(vod);
 | 
			
		||||
    vod.removeUser(1);
 | 
			
		||||
    displayUsers(vod);
 | 
			
		||||
    vod.extendSub(0, -35);
 | 
			
		||||
    vod.extendSub(1, 14); 
 | 
			
		||||
    vod.extendSub(2, 7);
 | 
			
		||||
    displayUsers(vod);
 | 
			
		||||
    vod.watchVideo(0);
 | 
			
		||||
    vod.watchVideo(2);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,147 @@
 | 
			
		|||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 | 
			
		||||
  <ItemGroup Label="ProjectConfigurations">
 | 
			
		||||
    <ProjectConfiguration Include="Debug|Win32">
 | 
			
		||||
      <Configuration>Debug</Configuration>
 | 
			
		||||
      <Platform>Win32</Platform>
 | 
			
		||||
    </ProjectConfiguration>
 | 
			
		||||
    <ProjectConfiguration Include="Release|Win32">
 | 
			
		||||
      <Configuration>Release</Configuration>
 | 
			
		||||
      <Platform>Win32</Platform>
 | 
			
		||||
    </ProjectConfiguration>
 | 
			
		||||
    <ProjectConfiguration Include="Debug|x64">
 | 
			
		||||
      <Configuration>Debug</Configuration>
 | 
			
		||||
      <Platform>x64</Platform>
 | 
			
		||||
    </ProjectConfiguration>
 | 
			
		||||
    <ProjectConfiguration Include="Release|x64">
 | 
			
		||||
      <Configuration>Release</Configuration>
 | 
			
		||||
      <Platform>x64</Platform>
 | 
			
		||||
    </ProjectConfiguration>
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <PropertyGroup Label="Globals">
 | 
			
		||||
    <VCProjectVersion>16.0</VCProjectVersion>
 | 
			
		||||
    <Keyword>Win32Proj</Keyword>
 | 
			
		||||
    <ProjectGuid>{e7474878-d708-4d5f-98f6-2f86cf62ddd3}</ProjectGuid>
 | 
			
		||||
    <RootNamespace>kolos</RootNamespace>
 | 
			
		||||
    <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
 | 
			
		||||
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
 | 
			
		||||
    <ConfigurationType>Application</ConfigurationType>
 | 
			
		||||
    <UseDebugLibraries>true</UseDebugLibraries>
 | 
			
		||||
    <PlatformToolset>v142</PlatformToolset>
 | 
			
		||||
    <CharacterSet>Unicode</CharacterSet>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
 | 
			
		||||
    <ConfigurationType>Application</ConfigurationType>
 | 
			
		||||
    <UseDebugLibraries>false</UseDebugLibraries>
 | 
			
		||||
    <PlatformToolset>v142</PlatformToolset>
 | 
			
		||||
    <WholeProgramOptimization>true</WholeProgramOptimization>
 | 
			
		||||
    <CharacterSet>Unicode</CharacterSet>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
 | 
			
		||||
    <ConfigurationType>Application</ConfigurationType>
 | 
			
		||||
    <UseDebugLibraries>true</UseDebugLibraries>
 | 
			
		||||
    <PlatformToolset>v142</PlatformToolset>
 | 
			
		||||
    <CharacterSet>Unicode</CharacterSet>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
 | 
			
		||||
    <ConfigurationType>Application</ConfigurationType>
 | 
			
		||||
    <UseDebugLibraries>false</UseDebugLibraries>
 | 
			
		||||
    <PlatformToolset>v142</PlatformToolset>
 | 
			
		||||
    <WholeProgramOptimization>true</WholeProgramOptimization>
 | 
			
		||||
    <CharacterSet>Unicode</CharacterSet>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
 | 
			
		||||
  <ImportGroup Label="ExtensionSettings">
 | 
			
		||||
  </ImportGroup>
 | 
			
		||||
  <ImportGroup Label="Shared">
 | 
			
		||||
  </ImportGroup>
 | 
			
		||||
  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
 | 
			
		||||
    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
 | 
			
		||||
  </ImportGroup>
 | 
			
		||||
  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
 | 
			
		||||
    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
 | 
			
		||||
  </ImportGroup>
 | 
			
		||||
  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
 | 
			
		||||
    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
 | 
			
		||||
  </ImportGroup>
 | 
			
		||||
  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
 | 
			
		||||
    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
 | 
			
		||||
  </ImportGroup>
 | 
			
		||||
  <PropertyGroup Label="UserMacros" />
 | 
			
		||||
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
 | 
			
		||||
    <LinkIncremental>true</LinkIncremental>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
 | 
			
		||||
    <LinkIncremental>false</LinkIncremental>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
 | 
			
		||||
    <LinkIncremental>true</LinkIncremental>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
 | 
			
		||||
    <LinkIncremental>false</LinkIncremental>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
 | 
			
		||||
    <ClCompile>
 | 
			
		||||
      <WarningLevel>Level3</WarningLevel>
 | 
			
		||||
      <SDLCheck>true</SDLCheck>
 | 
			
		||||
      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
 | 
			
		||||
      <ConformanceMode>true</ConformanceMode>
 | 
			
		||||
    </ClCompile>
 | 
			
		||||
    <Link>
 | 
			
		||||
      <SubSystem>Console</SubSystem>
 | 
			
		||||
      <GenerateDebugInformation>true</GenerateDebugInformation>
 | 
			
		||||
    </Link>
 | 
			
		||||
  </ItemDefinitionGroup>
 | 
			
		||||
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
 | 
			
		||||
    <ClCompile>
 | 
			
		||||
      <WarningLevel>Level3</WarningLevel>
 | 
			
		||||
      <FunctionLevelLinking>true</FunctionLevelLinking>
 | 
			
		||||
      <IntrinsicFunctions>true</IntrinsicFunctions>
 | 
			
		||||
      <SDLCheck>true</SDLCheck>
 | 
			
		||||
      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
 | 
			
		||||
      <ConformanceMode>true</ConformanceMode>
 | 
			
		||||
    </ClCompile>
 | 
			
		||||
    <Link>
 | 
			
		||||
      <SubSystem>Console</SubSystem>
 | 
			
		||||
      <EnableCOMDATFolding>true</EnableCOMDATFolding>
 | 
			
		||||
      <OptimizeReferences>true</OptimizeReferences>
 | 
			
		||||
      <GenerateDebugInformation>true</GenerateDebugInformation>
 | 
			
		||||
    </Link>
 | 
			
		||||
  </ItemDefinitionGroup>
 | 
			
		||||
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
 | 
			
		||||
    <ClCompile>
 | 
			
		||||
      <WarningLevel>Level3</WarningLevel>
 | 
			
		||||
      <SDLCheck>true</SDLCheck>
 | 
			
		||||
      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
 | 
			
		||||
      <ConformanceMode>true</ConformanceMode>
 | 
			
		||||
    </ClCompile>
 | 
			
		||||
    <Link>
 | 
			
		||||
      <SubSystem>Console</SubSystem>
 | 
			
		||||
      <GenerateDebugInformation>true</GenerateDebugInformation>
 | 
			
		||||
    </Link>
 | 
			
		||||
  </ItemDefinitionGroup>
 | 
			
		||||
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
 | 
			
		||||
    <ClCompile>
 | 
			
		||||
      <WarningLevel>Level3</WarningLevel>
 | 
			
		||||
      <FunctionLevelLinking>true</FunctionLevelLinking>
 | 
			
		||||
      <IntrinsicFunctions>true</IntrinsicFunctions>
 | 
			
		||||
      <SDLCheck>true</SDLCheck>
 | 
			
		||||
      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
 | 
			
		||||
      <ConformanceMode>true</ConformanceMode>
 | 
			
		||||
    </ClCompile>
 | 
			
		||||
    <Link>
 | 
			
		||||
      <SubSystem>Console</SubSystem>
 | 
			
		||||
      <EnableCOMDATFolding>true</EnableCOMDATFolding>
 | 
			
		||||
      <OptimizeReferences>true</OptimizeReferences>
 | 
			
		||||
      <GenerateDebugInformation>true</GenerateDebugInformation>
 | 
			
		||||
    </Link>
 | 
			
		||||
  </ItemDefinitionGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <ClCompile Include="Mikolaj_Rosa_w65567.cpp" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
 | 
			
		||||
  <ImportGroup Label="ExtensionTargets">
 | 
			
		||||
  </ImportGroup>
 | 
			
		||||
</Project>
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,22 @@
 | 
			
		|||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <Filter Include="Source Files">
 | 
			
		||||
      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
 | 
			
		||||
      <Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
 | 
			
		||||
    </Filter>
 | 
			
		||||
    <Filter Include="Header Files">
 | 
			
		||||
      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
 | 
			
		||||
      <Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
 | 
			
		||||
    </Filter>
 | 
			
		||||
    <Filter Include="Resource Files">
 | 
			
		||||
      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
 | 
			
		||||
      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
 | 
			
		||||
    </Filter>
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <ClCompile Include="Mikolaj_Rosa_w65567.cpp">
 | 
			
		||||
      <Filter>Source Files</Filter>
 | 
			
		||||
    </ClCompile>
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
</Project>
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,4 @@
 | 
			
		|||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 | 
			
		||||
  <PropertyGroup />
 | 
			
		||||
</Project>
 | 
			
		||||
		Loading…
	
		Reference in New Issue