From 9a6af408a26c1266a977e12667c4277c3e445bb0 Mon Sep 17 00:00:00 2001 From: Semen Vasilyev Date: Tue, 2 Apr 2024 19:50:01 +0300 Subject: [PATCH] - Remove unnecessary temp file --- task1.cpp | 61 ------------------------ task2.cpp | 70 ---------------------------- task3.cpp | 137 ------------------------------------------------------ task4.cpp | 89 ----------------------------------- temp | 0 5 files changed, 357 deletions(-) delete mode 100644 task1.cpp delete mode 100644 task2.cpp delete mode 100644 task3.cpp delete mode 100644 task4.cpp delete mode 100644 temp diff --git a/task1.cpp b/task1.cpp deleted file mode 100644 index 2b56eaf..0000000 --- a/task1.cpp +++ /dev/null @@ -1,61 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include - -void print_in_hex(uint8_t byte) -{ - std::cout << std::setw(2) << std::setfill('0') << std::hex << static_cast(byte) << " "; -} - -void print_in_hex(const void* data, size_t size) -{ - const uint8_t* bytes = static_cast(data); - for (size_t i = 0; i < size; ++i) - { - print_in_hex(bytes[i]); - if ((i + 1) % 16 == 0) // Перевод строки после каждых 16 байт - std::cout << std::endl; - } - std::cout << std::endl; -} - -void print_in_binary(uint8_t byte) -{ - for (int i = 7; i >= 0; --i) - { - std::cout << ((byte >> i) & 1); - if (i % 4 == 0) // Пробел после каждых 4 бит - std::cout << " "; - } -} - -void print_in_binary(const void* data, size_t size) -{ - const uint8_t* bytes = static_cast(data); - for (size_t i = 0; i < size; ++i) - { - print_in_binary(bytes[i]); - if ((i + 1) % 4 == 0) // Перевод строки после каждых 4 байт - std::cout << std::endl; - } - std::cout << std::endl; -} - -int main() -{ - setlocale(0, "ru-ru"); - uint8_t testData[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0x12, 0x34, 0x56, 0x78 }; - size_t size = sizeof(testData); - - std::cout << "Шестнадцатеричное представление:" << std::endl; - print_in_hex(testData, size); - - std::cout << "Двоичное представление:" << std::endl; - print_in_binary(testData, size); - - return 0; -} diff --git a/task2.cpp b/task2.cpp deleted file mode 100644 index f95240c..0000000 --- a/task2.cpp +++ /dev/null @@ -1,70 +0,0 @@ -#include -#include -#include - -void print_in_hex(uint16_t value) -{ - std::cout << std::setw(2) << std::setfill('0') << std::hex << (value >> 8) << " " - << std::setw(2) << std::setfill('0') << std::hex << (value & 0xFF); -} - -void print_in_binary(uint16_t value) -{ - for (int i = 15; i >= 0; --i) - { - std::cout << ((value >> i) & 1); - if (i % 4 == 0) // Пробел после каждых 4 бит - std::cout << " "; - } -} - -int main() -{ - setlocale(0, "ru-ru"); - uint16_t operand1, operand2; - char op; - - std::cout << "Введите первый операнд: "; - std::cin >> operand1; - - std::cout << "Введите оператор (&, |, ^): "; - std::cin >> op; - - std::cout << "Введите второй операнд: "; - std::cin >> operand2; - - uint16_t result; - switch (op) { - case '&': - result = operand1 & operand2; - break; - case '|': - result = operand1 | operand2; - break; - case '^': - result = operand1 ^ operand2; - break; - default: - std::cerr << "Неверный оператор!" << std::endl; - return 1; - } - - std::cout << std::endl; - std::cout << "Шестнадцатеричное представление:" << std::endl; - print_in_hex(operand1); - std::cout << " " << op << " "; - print_in_hex(operand2); - std::cout << " = "; - print_in_hex(result); - std::cout << std::endl; - - std::cout << "Двоичное представление:" << std::endl; - print_in_binary(operand1); - std::cout << " " << op << " "; - print_in_binary(operand2); - std::cout << " = "; - print_in_binary(result); - std::cout << std::endl; - - return 0; -} diff --git a/task3.cpp b/task3.cpp deleted file mode 100644 index fe9c696..0000000 --- a/task3.cpp +++ /dev/null @@ -1,137 +0,0 @@ -#include -#include - -struct Student { - char name[17]; //имя - unsigned short int admissionYear; //год поступления - float averageGrade; //средний балл - bool gender : 1; //пол - unsigned short int coursesPassed; //количество пройденных курсов - Student* groupLeader; // указатель на старосту группы -}; - -int main() { - setlocale(0, "ru-ru"); - - // Создание трех студентов - Student students[3]; - // Заполнение информации о студентах - // Студент 1 - students[0].name[0] = 'A'; - students[0].name[1] = '\0'; - students[0].admissionYear = 2023; - students[0].averageGrade = 4.2; - students[0].gender = 1; // Мужской пол - students[0].coursesPassed = 4; - - // Студент 2 - students[1].name[0] = 'B'; - students[1].name[1] = '\0'; - students[1].admissionYear = 2022; - students[1].averageGrade = 4.5; - students[1].gender = 0; // Женский пол - students[1].coursesPassed = 5; - - // Староста группы (студент 3) - students[2].name[0] = 'C'; - students[2].name[1] = '\0'; - students[2].admissionYear = 2022; - students[2].averageGrade = 4.8; - students[2].gender = 1; // Мужской пол - students[2].coursesPassed = 6; - students[2].groupLeader = nullptr; // Староста имеет нулевой указатель - - // Назначение старосты - students[0].groupLeader = &students[2]; - students[1].groupLeader = &students[2]; - - // Вывод информации о студентах - for (int i = 0; i < 3; ++i) { - std::cout << "Студент " << i + 1 << ":\n"; - std::cout << "Имя: " << students[i].name << std::endl; - std::cout << "Год поступления: " << students[i].admissionYear << std::endl; - std::cout << "Средний балл: " << students[i].averageGrade << std::endl; - std::cout << "Пол: " << (students[i].gender ? "Мужской" : "Женский") << std::endl; - std::cout << "Количество пройденных курсов: " << students[i].coursesPassed << std::endl; - if (students[i].groupLeader != nullptr) { - std::cout << "Староста группы: " << students[i].groupLeader->name << std::endl; - } - else { - std::cout << "Староста группы: Нет" << std::endl; - } - std::cout << std::endl; - } - - // 1) Адрес и размер массива - std::cout << "Адрес массива: " << &students << std::endl; - std::cout << "Размер массива: " << sizeof(students) << " байт" << std::endl << std::endl; - - // 2) Адреса и размеры всех элементов массива - for (int i = 0; i < 3; ++i) { - std::cout << "Адрес элементп " << i << ": " << &students[i] << std::endl; - std::cout << "Размер элемента " << i << ": " << sizeof(students[i]) << " байт" << std::endl; - } - std::cout << std::endl; - - // 3) Для всех полей, кроме пола, одного из элементов массива - std::cout << "Адреса полей, смещения, размеры, шестнадцатеричное и двоичное представление:" << std::endl; - for (int i = 0; i < 3; ++i) { - std::cout << "Элемент " << i << ":" << std::endl; - - // Адреса, смещения, размеры и представления полей - std::cout << "Адрес имени: " << reinterpret_cast(&students[i].name) << ", " - << "Смещение: " << offsetof(Student, name) << ", " - << "Размер: " << sizeof(students[i].name) << ", " - << "Шестнадцатеричный: "; - for (size_t j = 0; j < sizeof(students[i].name); ++j) { - std::cout << std::hex << static_cast(students[i].name[j]); - } - std::cout << ", Двоичный: "; - for (size_t j = 0; j < sizeof(students[i].name); ++j) { - std::cout << std::bitset<8>(students[i].name[j]) << " "; - } - std::cout << std::endl; - - // Повтор этого шаблона для остальных полей структуры - std::cout << "Адрес года поступления: " << reinterpret_cast(&students[i].admissionYear) << ", " - << "Смещение: " << offsetof(Student, admissionYear) << ", " - << "Размер: " << sizeof(students[i].admissionYear) << ", " - << "Шестнадцатеричный: " << std::hex << students[i].admissionYear << ", " - << "Двоичный: " << std::bitset(students[i].admissionYear) << std::endl; - - std::cout << "Адрес среднего балла: " << reinterpret_cast(&students[i].averageGrade) << ", " - << "Смещение: " << offsetof(Student, averageGrade) << ", " - << "Размер: " << sizeof(students[i].averageGrade) << ", " - << "Шестнадцатеричный: " << std::hex << students[i].averageGrade << ", " - << "Двоичный: " << std::bitset(students[i].averageGrade) << std::endl; - - - std::cout << "Адрес количества пройденных курсов: " << reinterpret_cast(&students[i].coursesPassed) << ", " - << "Смещение: " << offsetof(Student, coursesPassed) << ", " - << "Размер: " << sizeof(students[i].coursesPassed) << ", " - << "Шестнадцатеричный: " << std::hex << students[i].coursesPassed << ", " - << "Двоичный: " << std::bitset(students[i].coursesPassed) << std::endl; - - // для указателя на старосту группы адрес и размер указателя будут различными на разных платформах, - // но можно также вывести его адрес и размер для полноты картины. - std::cout << "Адрес старосты: " << reinterpret_cast(&students[i].groupLeader) << ", " - << "Смещение: " << offsetof(Student, groupLeader) << ", " - << "Размер: " << sizeof(students[i].groupLeader) << std::endl; - - std::cout << std::endl; - } - - // 4) Все элементы массива в шестнадцатеричном виде с указанием соответствия блоков байт полям структур - std::cout << "Шестнадцатеричное представление всех элементов:" << std::endl; - for (int i = 0; i < 3; ++i) { - std::cout << "Элемент " << i << ": "; - unsigned char* ptr = reinterpret_cast(&students[i]); - for (size_t j = 0; j < sizeof(students[i]); ++j) { - std::cout << std::hex << static_cast(ptr[j]) << " "; - } - std::cout << std::endl; - } - - return 0; - -} diff --git a/task4.cpp b/task4.cpp deleted file mode 100644 index cdbf5d3..0000000 --- a/task4.cpp +++ /dev/null @@ -1,89 +0,0 @@ -#include -#include -#include - -// Функция для проверки корректности имени файла -bool isValidFileName(const char* filename) { - // Запрещенные символы в имени файла - const char* forbiddenChars = "*\"<>?|"; - if (strpbrk(filename, forbiddenChars) != nullptr) { - return false; - } - - // Проверка наличия двоеточия - const char* colon = strchr(filename, ':'); - if (colon != nullptr) { - if (*(colon - 1) != isalpha(*(colon - 1)) || *(colon + 1) != '\\') { - return false; - } - } - - // Проверка расширения файла (если есть) - const char* extension = strrchr(filename, '.'); - if (extension != nullptr) { - if (std::strcmp(extension, ".txt") != 0 && std::strcmp(extension, ".TXT") != 0) { - return false; - } - } - - return true; -} - -int main() { - setlocale(0, "ru-ru"); - char filename[100]; - std::cout << "Введите имя файла: "; - std::cin >> filename; - - // Проверка корректности имени файла - if (!isValidFileName(filename)) { - std::cout << "Некорректное имя файла." << std::endl; - return 1; - } - - // Добавление расширения .txt, если оно отсутствует - char* extension = strrchr(filename, '.'); - if (extension == nullptr) { - if (strlen(filename) + 4 < sizeof(filename)) { // Проверяем, есть ли достаточно места в буфере - strcat_s(filename, sizeof(filename), ".txt"); - } - else { - std::cout << "Недостаточно места в буфере для добавления расширения." << std::endl; - return 1; - } - } - - // Открытие файла и загрузка его содержимого в память - std::ifstream file(filename, std::ios::binary | std::ios::ate); - if (!file.is_open()) { - std::cout << "Не удалось открыть файл." << std::endl; - return 1; - } - - std::streampos fileSize = file.tellg(); - file.seekg(0, std::ios::beg); - - char* fileContents = new char[fileSize]; - file.read(fileContents, fileSize); - file.close(); - - // Запрос строки от пользователя - char searchString[100]; - std::cout << "Введите строку для поиска: "; - std::cin >> searchString; - - // Подсчет числа вхождений строки в текст файла - int count = 0; - char* position = fileContents; - while ((position = strstr(position, searchString)) != nullptr) { - ++count; - position += strlen(searchString); - } - - std::cout << "Число вхождений строки в файл: " << count << std::endl; - - // Освобождение памяти - delete[] fileContents; - - return 0; -} diff --git a/temp b/temp deleted file mode 100644 index e69de29..0000000