Для студентов ИДДО НИУ «МЭИ» по предмету Разработка программного обеспечения систем управленияКМ-3. Низкоуровневые средства С++ для работы с памятью. Контрольная работаКМ-3. Низкоуровневые средства С++ для работы с памятью. Контрольная работа
5,0051
2025-12-122025-12-12СтудИзба
ДЗ КМ-3: КМ-3. Низкоуровневые средства С++ для работы с памятью. Контрольная работа вариант 18
ДЗ КМ-3: КМ-3. Низкоуровневые средства С++ для работы с памятью. Контрольная работа вариант 18
Новинка
Описание
КМ-3 "Низкоуровневые средства C++ для работы с памятью. Контрольная работа
➡️ Другие работы по курсу ⬅️
⭐ Помощь для другого варианта ⭐
Задание:
Лабораторнаяработа№4
Представление данных в памяти
Общее задание
байт в шестнадцатеричном и в двоичном представлении.
void print_in_hex(uint8_t byte);
void print_in_hex(const void* data, size_t size);
void print_in_binary(uint8_t byte);
void print_in_binary(const void* data, size_t size);
Указание. Для удобства чтения рекомендуется между байтами добавлять пробелы и делать перевод строки, например, после каждых 16-и байт (в print_in_hex()) или каждых 4-х байт (в print_in_binary()).
Пользователь вводит первый операнд, затем оператор (&, | или ^), затем второй операнд. Программа выполняет указанное действие над операндами, и печатает расчет в шестнадцатеричноми двоичном виде. Операнды — двухбайтовые беззнаковые целые числа (uint16_t).
целочисленный-тип имя-поля : число-бит;
1К битовымполямнельзяприменятьоператорsizeof (так как он возвращает размер в байтах) и оператор взятия адреса (так как по определению адресуются только байты, но не их части).
➡️Любой предмет | Любой тест | Любая практика | ВКР (Диплом)⬅️
🗝️ ▶Помощь с сессией/долгами под ключ ◀ 🗝️
➡️ Другие работы по курсу ⬅️
⭐ Помощь для другого варианта ⭐
Задание:
Вариант 18
В профиле есть услуга по выполнению других вариантов этой работы. И так же КМ-1.Лабораторнаяработа№4
Представление данных в памяти
Цель работы
- Изучить представление различных типов и структур данных в памяти ЭВМ.
- Освоить средства языка и стандартной библиотеки C++ для низкоуровневых манипуляций с битами данных, адресами памяти и строками C.
Задание на лабораторную работу
Общее задание
- Подготовить инструменты для исследований и отладки.
байт в шестнадцатеричном и в двоичном представлении.
void print_in_hex(uint8_t byte);
void print_in_hex(const void* data, size_t size);
void print_in_binary(uint8_t byte);
void print_in_binary(const void* data, size_t size);
Указание. Для удобства чтения рекомендуется между байтами добавлять пробелы и делать перевод строки, например, после каждых 16-и байт (в print_in_hex()) или каждых 4-х байт (в print_in_binary()).
- Написать программу-калькулятор для побитовых операций.
|
- Изучить представление и размещение данных в памяти.
- Определить структуру Student, описывающую студента атрибутами:
- имя (массив из 17 символов, включая завершающий '');
- год поступления (беззнаковое целое, 2 байта);
- средний балл (с плавающей запятой);
- пол, представленный одним битом (0 — женский, 1 — мужской);
- количество пройденных курсов;
- Определить структуру Student, описывающую студента атрибутами:
- указатель на структуру Student, описывающую старосту группы (для старосты — нулевой указатель).
целочисленный-тип имя-поля : число-бит;
- Объявитьи заполнить массив из трех структур Student, описывающий двух студентов одной группы и их старосту.
- Напечатать, занести в отчет и письменно пояснить:
- адрес и размер массива;
- адреса и размеры всех элементов массива;
- для всех полей, кроме пола1, одного из элементов массива (не старосты): адрес, смещение от начала структуры, размер, шестнадцатеричное и двоичное представление;
- все элементы массива в шестнадцатеричном виде с указанием соответствия блоков байт полям структур.
- Написать программу для обработки текстового файла, представляя текст только строками C, размещаемыми в динамической памяти или на стеке.
- Запросить у пользователя имя файла, сохранив его в массиве символов, размещенном на стеке (не в динамической памяти).
- Проверить, используя функции стандартной библиотеки C++ для работы со строками C, что введенное имя файла корректно (в Windows):
- не содержит запрещенных символов: *, ", <, >, ? или |;
- если содержит двоеточие, то только вторым символом, которому предшествует буква, и за двоеточием следует обратная косая черта ().
- еслифайл имеет расширение, то только *.txt (в любом регистре).
- Если введенное имя файла не имеет расширения, добавить расширение .txt.
- Загрузить содержимое текстового файла в память целиком:
- использоватьifstreamилиfopen()для доступа к файлу;
| | |
| | |
- использоватьметодыseekg()и tellg() либо функции fseek() и ftell() для определения размера файла, переместившись в его конец и получив текущее положение в файле;
- выделить в динамической памяти массив достаточного размера;
- загрузить всё содержимое файла в выделенную область памяти методом read()илифункциейfread().
- Запросить у пользователя строку, поместив её в массив на стеке.
- Подсчитать и вывести число вхождений введенной строки в текст файла.
- Освободить все выделенные в процессе решения блоки памяти.
Контрольные вопросы
- Опишитеназначениеииспользованиеоператоров new и delete. Чем отличается синтаксис удаления массива от синтаксиса удаления одиночного значения?
- Как при помощи динамических массивов организовать работу с квадратной матрицей, размер которой становится известен во время выполнения?
- Что такое «рваный» массив (jagged array)? Как выделять и освобождать память под его элементы, как к ним обращаться?
- Каковы особенности арифметики типов с плавающей запятой по сравнению с математически точной и сравнения их значений?
- Как и почему корректно сравнивать значения с плавающей запятой и бороться с ошибками округления при операциях над такими значениями?
- В чем заключается арифметика с фиксированной запятой, какие у нее преимущества и недостатки по сравнению с арифметикой типов с плавающей запятой?
- Опишите действие оператора reinterpret_cast. В каких случаях его удобно применять, и какие проблемы при этом могут возникнуть?
- Что такое выравнивание данных (alignment)? Почему оно существует, зачем и как контролировать его наличие?
- Как определить размер переменной в C++, и в каких случаях он отличается от размера полезных данных, связанных с переменной?
- Какие побитовые операторы имеются в C++? Приведите примеры их работы.
- Что такое битовые флаги и битовые маски? Как в C++ записываются числа в системах счисления, отличных от десятичной?
- Каким образом можно: а) объявить целочисленную переменную размером 8, 16, 32 бита (гарантированно); б) объявить битовый массив произвольно большого размера; в) поле структуры размера, не кратного байту (например, 9 бит)?
- Как в C++ объявляются простые массивы (одно- и многомерные), каков синтаксис их инициализации, доступа к отдельным элементам, определения размера?
- Опишите шаблон класса std::array, его назначение и преимущества использования по сравнению с простыми массивами.
- Что такое строки в стиле C (C-style string) и какие средства работы с ними имеются в стандартной библиотеке C++?
➡️Любой предмет | Любой тест | Любая практика | ВКР (Диплом)⬅️
🗝️ ▶Помощь с сессией/долгами под ключ ◀ 🗝️
Характеристики домашнего задания
Учебное заведение
Номер задания
Вариант
Программы
Теги
Просмотров
0
Качество
Идеальное компьютерное
Размер
76,43 Kb
Преподаватели
Список файлов
задание 2
CMakeLists.txt
main.cpp
задание 3
CMakeLists.txt
main.cpp
задание 4
CMakeLists.txt
main.cpp
test.txt
задание1
CMakeLists.txt
main.cpp
RESULT - Copy.docx
Комментарии
Нет комментариев
Стань первым, кто что-нибудь напишет!
ИДДО НИУ «МЭИ» 
studizbarik














