From 1e091d818607400cfa47522834ac2f4e2917a388 Mon Sep 17 00:00:00 2001 From: MavrinAR Date: Sun, 29 Dec 2024 13:46:00 +0300 Subject: [PATCH] first commit --- task1/Release/task1.exe | Bin 0 -> 11776 bytes task1/Source.cpp | 91 ++++++++++ task1/task1.sln | 28 ++++ task1/task1.vcxproj | 154 +++++++++++++++++ task1/task1.vcxproj.filters | 22 +++ task2/Release/task2.exe | Bin 0 -> 19456 bytes task2/Source.cpp | 108 ++++++++++++ task2/task2.sln | 28 ++++ task2/task2.vcxproj | 154 +++++++++++++++++ task2/task2.vcxproj.filters | 22 +++ task3/Release/task3.exe | Bin 0 -> 16384 bytes task3/Source.cpp | 184 +++++++++++++++++++++ task3/task3.sln | 28 ++++ task3/task3.vcxproj | 154 +++++++++++++++++ task3/task3.vcxproj.filters | 22 +++ task4/Release/task4.exe | Bin 0 -> 26112 bytes task4/Source.cpp | 112 +++++++++++++ task4/task4.sln | 28 ++++ task4/task4.vcxproj | 154 +++++++++++++++++ task4/task4.vcxproj.filters | 22 +++ task4/text.txt | 10 ++ Контрольные вопросы.docx | Bin 0 -> 25923 bytes 22 files changed, 1321 insertions(+) create mode 100644 task1/Release/task1.exe create mode 100644 task1/Source.cpp create mode 100644 task1/task1.sln create mode 100644 task1/task1.vcxproj create mode 100644 task1/task1.vcxproj.filters create mode 100644 task2/Release/task2.exe create mode 100644 task2/Source.cpp create mode 100644 task2/task2.sln create mode 100644 task2/task2.vcxproj create mode 100644 task2/task2.vcxproj.filters create mode 100644 task3/Release/task3.exe create mode 100644 task3/Source.cpp create mode 100644 task3/task3.sln create mode 100644 task3/task3.vcxproj create mode 100644 task3/task3.vcxproj.filters create mode 100644 task4/Release/task4.exe create mode 100644 task4/Source.cpp create mode 100644 task4/task4.sln create mode 100644 task4/task4.vcxproj create mode 100644 task4/task4.vcxproj.filters create mode 100644 task4/text.txt create mode 100644 Контрольные вопросы.docx diff --git a/task1/Release/task1.exe b/task1/Release/task1.exe new file mode 100644 index 0000000000000000000000000000000000000000..c0eba5d30a43b5c9dab6cf8cc734847dd9cee5d4 GIT binary patch literal 11776 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 KK6RR}MEq|G>rhVs literal 0 HcmV?d00001 diff --git a/task1/Source.cpp b/task1/Source.cpp new file mode 100644 index 0000000..fde8596 --- /dev/null +++ b/task1/Source.cpp @@ -0,0 +1,91 @@ +#include +#include +using namespace std; + +char nibble_to_hex(uint8_t i) +{ + char digits[] = "0123456789abcdef"; + assert(0x0 <= i && i <= 0xf); + return digits[i]; +} + +void print_in_hex(uint8_t byte) { + cout << nibble_to_hex(byte >> 4) + << nibble_to_hex(byte & 0xf); +} + +const uint8_t* as_bytes(const void* data) +{ + return reinterpret_cast(data); +} + +void print_in_hex(const void* data, size_t size) { + const uint8_t* bytes = as_bytes(data); + for (size_t i = 0; i < size; i++) { + print_in_hex(bytes[i]); + + if ((i + 1) % 16 == 0) { + cout << '\n'; + } + else { + cout << ' '; + } + } +} + +char bit_digit(uint8_t byte, uint8_t bit) { + if (byte & (0x1 << bit)) { + return '1'; + } + return '0'; +} + +void print_in_binary(uint8_t byte) { + for (int bit = 7; bit >= 0; bit--) { + cout << bit_digit(byte, bit); + } +} + +void print_in_binary(const void* data, size_t size) { + const uint8_t* bytes = as_bytes(data); + for (size_t i = 0; i < size; i++) { + print_in_binary(bytes[i]); + + if ((i + 1) % 4 == 0) { + cout << '\n'; + } + else { + cout << ' '; + } + } +} + +int main() +{ + + assert(nibble_to_hex(0x0) == '0'); + assert(nibble_to_hex(0x1) == '1'); + assert(nibble_to_hex(0x1) == '2'); + assert(nibble_to_hex(0x1) == '3'); + assert(nibble_to_hex(0x1) == '4'); + assert(nibble_to_hex(0x1) == '5'); + assert(nibble_to_hex(0x1) == '6'); + assert(nibble_to_hex(0x1) == '7'); + assert(nibble_to_hex(0x1) == '8'); + assert(nibble_to_hex(0x1) == '9'); + assert(nibble_to_hex(0x1) == 'a'); + assert(nibble_to_hex(0x1) == 'b'); + assert(nibble_to_hex(0x1) == 'c'); + assert(nibble_to_hex(0x1) == 'd'); + assert(nibble_to_hex(0x1) == 'e'); + assert(nibble_to_hex(0xf) == 'f'); + uint32_t u32 = 0x42; + cout << "u32 bytes: "; + print_in_hex(&u32, sizeof(u32)); + cout << '\n'; + print_in_binary(&u32, sizeof(u32)); + cout << '\n'; + + system("pause"); + return 0; +} diff --git a/task1/task1.sln b/task1/task1.sln new file mode 100644 index 0000000..99f4d62 --- /dev/null +++ b/task1/task1.sln @@ -0,0 +1,28 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.25420.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "task1", "task1.vcxproj", "{E69AC093-D51D-46C4-87C6-4D3F4BA9420F}" +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 + {E69AC093-D51D-46C4-87C6-4D3F4BA9420F}.Debug|x64.ActiveCfg = Debug|x64 + {E69AC093-D51D-46C4-87C6-4D3F4BA9420F}.Debug|x64.Build.0 = Debug|x64 + {E69AC093-D51D-46C4-87C6-4D3F4BA9420F}.Debug|x86.ActiveCfg = Debug|Win32 + {E69AC093-D51D-46C4-87C6-4D3F4BA9420F}.Debug|x86.Build.0 = Debug|Win32 + {E69AC093-D51D-46C4-87C6-4D3F4BA9420F}.Release|x64.ActiveCfg = Release|x64 + {E69AC093-D51D-46C4-87C6-4D3F4BA9420F}.Release|x64.Build.0 = Release|x64 + {E69AC093-D51D-46C4-87C6-4D3F4BA9420F}.Release|x86.ActiveCfg = Release|Win32 + {E69AC093-D51D-46C4-87C6-4D3F4BA9420F}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/task1/task1.vcxproj b/task1/task1.vcxproj new file mode 100644 index 0000000..b8c3872 --- /dev/null +++ b/task1/task1.vcxproj @@ -0,0 +1,154 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + {E69AC093-D51D-46C4-87C6-4D3F4BA9420F} + Win32Proj + task1 + 8.1 + + + + Application + true + v140 + Unicode + + + Application + false + v140 + true + Unicode + + + Application + true + v140 + Unicode + + + Application + false + v140 + true + Unicode + + + + + + + + + + + + + + + + + + + + + true + + + true + + + false + + + false + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + + + Level3 + Disabled + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + + + MaxSpeed + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + + + \ No newline at end of file diff --git a/task1/task1.vcxproj.filters b/task1/task1.vcxproj.filters new file mode 100644 index 0000000..4a8dc32 --- /dev/null +++ b/task1/task1.vcxproj.filters @@ -0,0 +1,22 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + \ No newline at end of file diff --git a/task2/Release/task2.exe b/task2/Release/task2.exe new file mode 100644 index 0000000000000000000000000000000000000000..1b894dd7dbe04b349c0c532ce374d890b4f19abd GIT binary patch literal 19456 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 +#include +#include +using namespace std; +// ASCII +char nibble_to_hex(uint8_t i) +{ + char digits[] = "0123456789abcdef"; // + assert(0x0 <= i && i <= 0xf); // + return digits[i]; // , +} +// +void print_in_hex(uint8_t byte) { + cout << nibble_to_hex(byte >> 4) + << nibble_to_hex(byte & 0xf); +} +// +const uint8_t* as_bytes(const void* data) +{ + return reinterpret_cast(data); +} +// 16 +void print_in_hex(const void* data, size_t size) { + const uint8_t* bytes = as_bytes(data); // + for (size_t i = 0; i < size; i++) { + print_in_hex(bytes[i]); + // : , 16 . + if ((i + 1) % 16 == 0) { // 16 + cout << '\n'; + } + else { + cout << ' '; + } + } +} +// ASCII +char bit_digit(uint8_t byte, uint8_t bit) { + if (byte & (0x1 << bit)) { + return '1'; + } + return '0'; +} +// +void print_in_binary(uint8_t byte) { + for (int bit = 7; bit >= 0; bit--) {// + cout << bit_digit(byte, bit); + } +} +// +void print_in_binary(const void* data, size_t size) { + const uint8_t* bytes = as_bytes(data); + for (size_t i = 0; i < size; i++) { + print_in_binary(bytes[i]); + // : , 4 . + if ((i + 1) % 4 == 0) { + cout << '\n'; + } + else { + cout << ' '; + } + } +} + +int main() +{ + string action; + uint16_t operand1, operand2, result; + setlocale(LC_ALL, "Russian");// + cout << " : "; + // + cin >> operand1; + cin >> action; + cin >> operand2; + if (action == "&") // + { + result = operand1 & operand2; + } + else if (action == "|") + { + result = operand1 | operand2; + } + else if (action == "^") + { + result = operand1 ^ operand2; + } + else + { + cout << " " << endl; + system("pause"); + return 1; + } + // 16 + print_in_hex(&operand1, sizeof(operand1)); + cout << action << " "; + print_in_hex(&operand2, sizeof(operand2)); + cout << "= "; + print_in_hex(&result, sizeof(result)); + cout << endl; + // + print_in_binary(&operand1, sizeof(operand1)); + cout << action << endl; + print_in_binary(&operand2, sizeof(operand2)); + cout << "=" << endl; + print_in_binary(&result, sizeof(result)); + cout << endl; + system("pause"); + return 0; +} diff --git a/task2/task2.sln b/task2/task2.sln new file mode 100644 index 0000000..fad54fb --- /dev/null +++ b/task2/task2.sln @@ -0,0 +1,28 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.25420.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "task2", "task2.vcxproj", "{63F06E83-EB49-46F9-8D23-AFDDA679EC6B}" +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 + {63F06E83-EB49-46F9-8D23-AFDDA679EC6B}.Debug|x64.ActiveCfg = Debug|x64 + {63F06E83-EB49-46F9-8D23-AFDDA679EC6B}.Debug|x64.Build.0 = Debug|x64 + {63F06E83-EB49-46F9-8D23-AFDDA679EC6B}.Debug|x86.ActiveCfg = Debug|Win32 + {63F06E83-EB49-46F9-8D23-AFDDA679EC6B}.Debug|x86.Build.0 = Debug|Win32 + {63F06E83-EB49-46F9-8D23-AFDDA679EC6B}.Release|x64.ActiveCfg = Release|x64 + {63F06E83-EB49-46F9-8D23-AFDDA679EC6B}.Release|x64.Build.0 = Release|x64 + {63F06E83-EB49-46F9-8D23-AFDDA679EC6B}.Release|x86.ActiveCfg = Release|Win32 + {63F06E83-EB49-46F9-8D23-AFDDA679EC6B}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/task2/task2.vcxproj b/task2/task2.vcxproj new file mode 100644 index 0000000..0972f0d --- /dev/null +++ b/task2/task2.vcxproj @@ -0,0 +1,154 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + {63F06E83-EB49-46F9-8D23-AFDDA679EC6B} + Win32Proj + task2 + 8.1 + + + + Application + true + v140 + Unicode + + + Application + false + v140 + true + Unicode + + + Application + true + v140 + Unicode + + + Application + false + v140 + true + Unicode + + + + + + + + + + + + + + + + + + + + + true + + + true + + + false + + + false + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + + + Level3 + Disabled + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + + + MaxSpeed + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + + + \ No newline at end of file diff --git a/task2/task2.vcxproj.filters b/task2/task2.vcxproj.filters new file mode 100644 index 0000000..4a8dc32 --- /dev/null +++ b/task2/task2.vcxproj.filters @@ -0,0 +1,22 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + \ No newline at end of file diff --git a/task3/Release/task3.exe b/task3/Release/task3.exe new file mode 100644 index 0000000000000000000000000000000000000000..64a23f0b572e535e71ccb75d4b8ab3228a6ddfd6 GIT binary patch literal 16384 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 +#include +#include +using namespace std; + +char nibble_to_hex(uint8_t i) +{ + char digits[] = "0123456789abcdef"; + assert(0x0 <= i && i <= 0xf); + return digits[i]; +} + +void print_in_hex(uint8_t byte) { + cout << nibble_to_hex(byte >> 4) + << nibble_to_hex(byte & 0xf); +} + +const uint8_t* as_bytes(const void* data) +{ + return reinterpret_cast(data); +} + +void print_in_hex(const void* data, size_t ������) { + const uint8_t* bytes = as_bytes(data); + for (size_t i = 0; i < ������; i++) { + print_in_hex(bytes[i]); + + if ((i + 1) % 16 == 0) { + cout << '\n'; + } + else { + cout << ' '; + } + } +} + +char bit_digit(uint8_t byte, uint8_t bit) { + if (byte & (0x1 << bit)) { + return '1'; + } + return '0'; +} + +void print_in_binary(uint8_t byte) { + for (int bit = 7; bit >= 0; bit--) { + cout << bit_digit(byte, bit); + } +} + +void print_in_binary(const void* data, size_t ������) { + const uint8_t* bytes = as_bytes(data); + for (size_t i = 0; i < ������; i++) { + print_in_binary(bytes[i]); + + if ((i + 1) % 4 == 0) { + cout << '\n'; + } + else { + cout << ' '; + } + } +} + +struct Student +{ + char name[17]; + uint16_t year; + float avg_mark; + uint32_t gender : 1; //���, �������������� ����� ����� (0 � �������, 1 � �������); + uint32_t ncourses; //���������� ���������� ������ + Student* chief; //��������� �� ��������� Student, ����������� �������� ������ +}; +#define NSTUDENTS 3 + + +int main() +{ + setlocale(LC_ALL, "Russian");//������� ������ + SetConsoleCP(1251); //��������� ������� �������� win-cp 1251 � ����� ����� + SetConsoleOutputCP(1251); //��������� ������� �������� win-cp 1251 � ����� ������ + char t[32]; + //�������� � ��������� ������ �� ���� �������� Student, ����������� ���� + //��������� ����� ������ � �� �������� + Student group[NSTUDENTS] = { 0 }; + for (int i = 0; i < NSTUDENTS; i++) + { + cout << "��� ��������: "; + cin.getline(group[i].name, sizeof(group[i].name)); + cout << "��� �����������: "; + cin >> group[i].year; + cout << "������� ����: "; + cin >> group[i].avg_mark; + cout << "��� (0 - �, 1 - �): "; + uint32_t tmp; + cin >> tmp; + assert(0 <= tmp && tmp <= 1); + group[i].gender = tmp; + cout << "���������� ���������� ������: "; + cin >> tmp; + group[i].ncourses = tmp; + cin.getline(t, sizeof(t)); //��������� ������� ������ ����� ����� ���������� ����� + } + //�������� �������� ��������� ������� + int chief = rand() % NSTUDENTS; + cout << "�������� ������ " << group[chief].name << endl; + //����������� ��������� �� �������� + for (int i = 0; i < NSTUDENTS; i++) + { + if (i == chief) + group[i].chief = NULL; + else + group[i].chief = &group[chief]; + } + //������� ����� � ������ ������� + cout << "����� = " << group << endl; + cout << "������ ������� = " << sizeof(group) << endl; + //������ � ������� ���� ��������� �������; + for (int i = 0; i < NSTUDENTS; i++) + { + cout << "�����[" << i << "] = " << &group[i] << endl; + cout << "������ �������[" << i << "] = " << sizeof(group[i]) << endl; + } + int s; + for (s = 0; s < NSTUDENTS && s == chief; s++); //�������� �� �������� + //��� ���� �����, ����� ���� + cout << "������� " << group[s].name << ":" << endl; + //�����, �������� �� ������ ���������, ������ + cout << "���: ����� = " << &group[s].name << " ������ = " << sizeof(group[s].name) << " �������� = " << offsetof(Student, name) << endl; + //����������������� ������������� + cout << "hex: " << endl; + print_in_hex(group[s].name, sizeof(group[s].name)); + cout << endl; + //�������� ������������� + cout << "bin: " << endl; + print_in_binary(group[s].name, sizeof(group[s].name)); + cout << endl; + //�����, �������� �� ������ ���������, ������ + cout << "���: ����� = " << &group[s].year << " ������ = " << sizeof(group[s].year) << " �������� = " << offsetof(Student, year) << endl; + //����������������� ������������� + cout << "hex: " << endl; + print_in_hex(&group[s].year, sizeof(group[s].year)); + cout << endl; + //�������� ������������� + cout << "bin: " << endl; + print_in_binary(&group[s].year, sizeof(group[s].year)); + cout << endl; + //�����, �������� �� ������ ���������, ������ + cout << "������� ����: ����� = " << &group[s].avg_mark << " ������ = " << sizeof(group[s].avg_mark) << " �������� = " << offsetof(Student, avg_mark) << endl; + //����������������� ������������� + cout << "hex: " << endl; + print_in_hex(&group[s].avg_mark, sizeof(group[s].avg_mark)); + cout << endl; + //�������� ������������� + cout << "bin: " << endl; + print_in_binary(&group[s].avg_mark, sizeof(group[s].avg_mark)); + cout << endl; + //�����, �������� �� ������ ���������, ������ + cout << "ncourses: ����� = " << &group[s].ncourses << " ������ = " << sizeof(group[s].ncourses) << " �������� = " << offsetof(Student, ncourses) << endl; + //����������������� ������������� + cout << "hex: " << endl; + print_in_hex(&group[s].ncourses, sizeof(group[s].ncourses)); + cout << endl; + //�������� ������������� + cout << "bin: " << endl; + print_in_binary(&group[s].ncourses, sizeof(group[s].ncourses)); + cout << endl; + //�����, �������� �� ������ ���������, ������ + cout << "��������: ����� = " << &group[s].chief << " ������ = " << sizeof(group[s].chief) << " �������� = " << offsetof(Student, chief) << endl; + //����������������� ������������� + cout << "hex: " << endl; + print_in_hex(&group[s].chief, sizeof(group[s].chief)); + cout << endl; + //�������� ������������� + cout << "bin: " << endl; + print_in_binary(&group[s].chief, sizeof(group[s].chief)); + cout << endl; + //��� �������� ������� � ����������������� ���� + cout << "���� ������:" << endl; + print_in_hex(group, sizeof(group)); + cout << endl; + system("pause"); + return 0; + +} diff --git a/task3/task3.sln b/task3/task3.sln new file mode 100644 index 0000000..ece1917 --- /dev/null +++ b/task3/task3.sln @@ -0,0 +1,28 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.25420.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "task3", "task3.vcxproj", "{B872E72A-54EE-4A46-A9CC-5E38FB2D129D}" +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 + {B872E72A-54EE-4A46-A9CC-5E38FB2D129D}.Debug|x64.ActiveCfg = Debug|x64 + {B872E72A-54EE-4A46-A9CC-5E38FB2D129D}.Debug|x64.Build.0 = Debug|x64 + {B872E72A-54EE-4A46-A9CC-5E38FB2D129D}.Debug|x86.ActiveCfg = Debug|Win32 + {B872E72A-54EE-4A46-A9CC-5E38FB2D129D}.Debug|x86.Build.0 = Debug|Win32 + {B872E72A-54EE-4A46-A9CC-5E38FB2D129D}.Release|x64.ActiveCfg = Release|x64 + {B872E72A-54EE-4A46-A9CC-5E38FB2D129D}.Release|x64.Build.0 = Release|x64 + {B872E72A-54EE-4A46-A9CC-5E38FB2D129D}.Release|x86.ActiveCfg = Release|Win32 + {B872E72A-54EE-4A46-A9CC-5E38FB2D129D}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/task3/task3.vcxproj b/task3/task3.vcxproj new file mode 100644 index 0000000..01a9078 --- /dev/null +++ b/task3/task3.vcxproj @@ -0,0 +1,154 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + {B872E72A-54EE-4A46-A9CC-5E38FB2D129D} + Win32Proj + task3 + 8.1 + + + + Application + true + v140 + Unicode + + + Application + false + v140 + true + Unicode + + + Application + true + v140 + Unicode + + + Application + false + v140 + true + Unicode + + + + + + + + + + + + + + + + + + + + + true + + + true + + + false + + + false + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + + + Level3 + Disabled + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + + + MaxSpeed + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + + + \ No newline at end of file diff --git a/task3/task3.vcxproj.filters b/task3/task3.vcxproj.filters new file mode 100644 index 0000000..4a8dc32 --- /dev/null +++ b/task3/task3.vcxproj.filters @@ -0,0 +1,22 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + \ No newline at end of file diff --git a/task4/Release/task4.exe b/task4/Release/task4.exe new file mode 100644 index 0000000000000000000000000000000000000000..82c88341d8b85c25314476bf89467eb36693eb5b GIT binary patch literal 26112 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 literal 0 HcmV?d00001 diff --git a/task4/Source.cpp b/task4/Source.cpp new file mode 100644 index 0000000..a1f0013 --- /dev/null +++ b/task4/Source.cpp @@ -0,0 +1,112 @@ +#include +#include +#include +#include +using namespace std; +int main() +{ + char filename[260]; + char search_str[256]; + char* file; + const char* forbid = "*\"<>?|"; + const char* ferrmsg = "����������� ������ � ����� �����"; + SetConsoleCP(1251); + SetConsoleOutputCP(1251); + + + cout << "������� ��� �����: "; + cin.getline(filename, sizeof(filename)); + + + + for (int i = 0; filename[i]; i++) + { + if (strchr(forbid, filename[i]) != 0) + { + cout << ferrmsg << endl; + system("pause"); + return 0; + } + } + + for (int i = 0; filename[i]; i++) + filename[i] = tolower(filename[i]); + char* semicolon = strchr(filename, ':'); + if (semicolon) + { + if (semicolon - filename != 2) + { + cout << ferrmsg << endl; + system("pause"); + return 0; + } + if (*(semicolon + 1) != '\\') + { + cout << ferrmsg << endl; + system("pause"); + return 0; + } + if (strrchr(filename, ':') != semicolon) + { + cout << ferrmsg << endl; + system("pause"); + return 0; + } + char* name = strrchr(filename, '\\'); + if (!name) + name = filename; + else + name++; + char* ext = strchr(name, '.'); + + if (!ext) + strcat_s(filename, sizeof(filename), ".txt"); + else + { + if (strcmp(ext, "txt") != 0) + { + cout << "����������� ����������." << endl; + system("pause"); + return 0; + } + } + + } + + fstream fin(filename, ios::in); + if (fin.fail()) + { + cout << "�� ������� ������� ���� " << filename << endl; + system("pause"); + return 0; + } + + + + fin.seekg(0, ios_base::end); + size_t len = fin.tellg(); + fin.seekg(0, ios_base::beg); + + file = new char[len + 1]; + + + fin.read(file, len); + fin.close(); + file[len] = 0; + + cout << "������� ������: "; + cin.get(search_str, sizeof(search_str)); + + int count = 0; + for (char* r = strstr(file, search_str); r;) + { + count++; + r += strlen(search_str); + r = strstr(r, search_str); + } + cout << "������ ������� � ����� " << count << " ���." << endl; + + delete[] file; + system("pause"); + return 0; +} diff --git a/task4/task4.sln b/task4/task4.sln new file mode 100644 index 0000000..60491eb --- /dev/null +++ b/task4/task4.sln @@ -0,0 +1,28 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.25420.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "task4", "task4.vcxproj", "{0FF715EE-6CC0-4017-BAEC-6653213F9689}" +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 + {0FF715EE-6CC0-4017-BAEC-6653213F9689}.Debug|x64.ActiveCfg = Debug|x64 + {0FF715EE-6CC0-4017-BAEC-6653213F9689}.Debug|x64.Build.0 = Debug|x64 + {0FF715EE-6CC0-4017-BAEC-6653213F9689}.Debug|x86.ActiveCfg = Debug|Win32 + {0FF715EE-6CC0-4017-BAEC-6653213F9689}.Debug|x86.Build.0 = Debug|Win32 + {0FF715EE-6CC0-4017-BAEC-6653213F9689}.Release|x64.ActiveCfg = Release|x64 + {0FF715EE-6CC0-4017-BAEC-6653213F9689}.Release|x64.Build.0 = Release|x64 + {0FF715EE-6CC0-4017-BAEC-6653213F9689}.Release|x86.ActiveCfg = Release|Win32 + {0FF715EE-6CC0-4017-BAEC-6653213F9689}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/task4/task4.vcxproj b/task4/task4.vcxproj new file mode 100644 index 0000000..b1a651c --- /dev/null +++ b/task4/task4.vcxproj @@ -0,0 +1,154 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + {0FF715EE-6CC0-4017-BAEC-6653213F9689} + Win32Proj + task4 + 8.1 + + + + Application + true + v140 + Unicode + + + Application + false + v140 + true + Unicode + + + Application + true + v140 + Unicode + + + Application + false + v140 + true + Unicode + + + + + + + + + + + + + + + + + + + + + true + + + true + + + false + + + false + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + + + Level3 + Disabled + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + + + MaxSpeed + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + + + \ No newline at end of file diff --git a/task4/task4.vcxproj.filters b/task4/task4.vcxproj.filters new file mode 100644 index 0000000..4a8dc32 --- /dev/null +++ b/task4/task4.vcxproj.filters @@ -0,0 +1,22 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + \ No newline at end of file diff --git a/task4/text.txt b/task4/text.txt new file mode 100644 index 0000000..048cb8c --- /dev/null +++ b/task4/text.txt @@ -0,0 +1,10 @@ +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed neque neque, rhoncus nec neque quis, mollis bibendum tortor. Etiam ante risus, viverra sit amet tellus placerat, dignissim mattis sapien. Sed vitae dignissim nisi. In a velit vitae ex cursus dignissim. Aenean non pellentesque lacus. Ut vitae bibendum urna, id porttitor metus. Suspendisse consequat eros sed lobortis rhoncus. Pellentesque mattis tellus elit, ut blandit dui posuere id. Nullam blandit felis blandit erat consectetur ornare. Proin libero erat, dapibus ac massa vitae, porta bibendum ex. Phasellus sollicitudin diam dolor, et euismod leo volutpat euismod. Etiam id turpis vehicula, rutrum nulla vitae, suscipit dolor. Aenean augue elit, semper vitae ex eget, auctor venenatis risus. +Duis sit amet lectus sagittis, hendrerit neque a, aliquet felis. Pellentesque sit amet orci lectus. Duis orci tortor, dignissim eget libero vel, pretium hendrerit felis. Nam imperdiet nibh at venenatis hendrerit. Nunc consequat eu sem nec facilisis. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Aliquam volutpat ipsum id placerat placerat. Mauris tincidunt, mi eu mollis maximus, arcu leo sollicitudin diam, ac vestibulum odio augue vitae urna. Duis malesuada aliquet erat. Mauris vitae lectus sit amet nunc congue eleifend. Fusce tempor commodo sapien ac vulputate. Suspendisse potenti. Duis consequat tortor vel enim molestie, efficitur dictum libero porttitor. Suspendisse congue nulla magna, sed placerat enim congue non. In varius lacus at venenatis efficitur. Phasellus ullamcorper fermentum viverra. +Vivamus placerat ex libero, at vulputate orci volutpat nec. Sed convallis, augue sit amet sollicitudin ultricies, risus risus pharetra lorem, ut molestie libero nisi ut nisi. Proin sollicitudin euismod vestibulum. Aenean in urna tempor, finibus tellus molestie, vulputate sem. Suspendisse ut ultricies eros, vel auctor ligula. Pellentesque mattis mi non cursus consectetur. Donec sed purus venenatis arcu convallis vestibulum. Proin quis porttitor risus. Pellentesque cursus est sed mollis imperdiet. In porta ullamcorper est, ut volutpat urna aliquam in. Mauris pulvinar, sem id sodales egestas, lacus leo congue enim, vel vestibulum turpis urna id lorem. Cras iaculis varius sem, nec ullamcorper massa tempus vitae. Praesent ac risus ipsum. Curabitur lacinia hendrerit magna sed vestibulum. Vivamus in mattis diam. Mauris tristique sagittis ex at lobortis. +Maecenas tristique, massa id finibus commodo, turpis lacus cursus lacus, ut egestas sem lacus posuere quam. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Duis vel nisl sapien. Aliquam lorem sapien, blandit sit amet lectus in, finibus mollis odio. Aliquam erat volutpat. Curabitur ac porttitor mauris. Etiam massa neque, placerat ac aliquet vel, imperdiet laoreet leo. Vivamus cursus nibh rutrum lectus suscipit cursus. +Nullam ac tempus lacus. Maecenas gravida faucibus aliquam. Vivamus scelerisque lectus at libero iaculis rutrum. Proin id sapien ligula. Duis vel ultricies elit, sed vulputate enim. Donec accumsan egestas dolor et iaculis. Aenean varius sem in dolor aliquet, ac posuere quam luctus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. +Fusce at vestibulum est. Proin malesuada, elit sit amet interdum malesuada, purus lorem mollis libero, aliquet pharetra sem elit sed quam. Nunc quis risus accumsan nibh posuere pharetra. Nulla luctus dolor erat, sit amet dignissim mi auctor id. Fusce porttitor felis vel sapien gravida pellentesque. Cras porttitor varius est ut pellentesque. Nullam eu iaculis leo. In venenatis massa et posuere ornare. Nunc ante massa, vulputate non ante bibendum, mattis venenatis libero. Proin commodo mollis elit, ac venenatis orci sagittis ac. +Nam vulputate odio quis ultrices tempus. Aliquam erat volutpat. Integer sit amet consectetur lacus, in finibus diam. Maecenas interdum ligula quis luctus egestas. Nulla ligula nisi, convallis a tincidunt sed, pellentesque vitae lorem. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Phasellus semper lobortis urna. Ut vitae nibh nisi. Nunc sit amet diam et elit sagittis cursus. Phasellus fermentum volutpat blandit. Duis facilisis, nulla et imperdiet finibus, quam leo fermentum leo, at fermentum metus sapien vel neque. +Duis diam ex, lobortis quis pharetra non, fringilla a purus. Morbi faucibus dolor lacus. Aenean quis imperdiet nibh. Quisque vel sem ut magna suscipit elementum. Aenean nisi felis, commodo et gravida vel, hendrerit ut enim. Aliquam velit mauris, interdum faucibus lorem pharetra, sagittis tincidunt est. Phasellus varius velit mauris, id maximus leo malesuada ut. Suspendisse auctor vulputate mattis. Morbi tincidunt, arcu ut dictum tristique, orci metus porttitor augue, sit amet venenatis purus mi tincidunt mauris. Phasellus vitae tristique velit, eu malesuada lectus. Morbi efficitur semper est, id consectetur sem sodales pellentesque. +Morbi non sollicitudin turpis, a accumsan nisl. Proin vitae blandit erat. Morbi pharetra leo ex, at luctus quam semper vel. Nam felis ex, rutrum at orci vitae, pretium placerat nisl. Quisque maximus pellentesque semper. In lobortis sit amet tellus feugiat placerat. Praesent et orci facilisis, dignissim eros at, sagittis arcu. Nullam urna odio, tincidunt in purus at, vehicula consectetur eros. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi et libero felis. Donec elementum dui quis nibh convallis, at mattis sapien efficitur. Mauris lacinia auctor elit. Aliquam erat volutpat. Quisque nibh odio, molestie id arcu sit amet, maximus cursus velit. Nunc gravida posuere erat eget pulvinar. Fusce viverra varius placerat. +In hac habitasse platea dictumst. Vestibulum ornare nulla quis arcu gravida accumsan et vitae ipsum. Nam ut velit nisi. Maecenas eu luctus orci. Nullam nec purus vitae magna ultrices consequat. Proin rutrum aliquet cursus. Sed tempor a urna at lacinia. Morbi fermentum commodo mi eu volutpat. Praesent in sapien purus. Nam ultrices augue vel tellus congue, id tristique dui euismod. \ No newline at end of file diff --git a/Контрольные вопросы.docx b/Контрольные вопросы.docx new file mode 100644 index 0000000000000000000000000000000000000000..89074b3c116d86002ce572089790d1858766fe9d GIT binary patch literal 25923 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 z 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 literal 0 HcmV?d00001