- •Задание 1. Циклические и вычислительные процессы
- •Задание 2. Массивы.
- •Задание 3. Форматированный ввод/вывод в текстовые файлы. Динамические массивы.
- •Задание 4. Работа с файлами (бесформатный ввод/вывод; бинарные файлы).
- •Задание 5. Классы
- •1. Реализуйте класс «Односвязный список целых чисел» с методами:
- •2. Реализуйте класс «Двусвязный список целых чисел» с методами:
- •3. Реализуйте класс «Бинарное дерево символов» с методами:
- •4. Описать абстрактный класс «Функция на отрезке [a,b]»
- •7. Описать класс «множество целых чисел» на основе одномерного
- •13. Реализуйте класс «Бинарное дерево структур» с методами:
Задание 4. Работа с файлами (бесформатный ввод/вывод; бинарные файлы).
Требования к программам:
-
Необходимо точно выполнять условия задач, при сомнениях консультироваться с преподавателем.
-
Текст программы должен быть откомментирован.
В заголовке указать:
-
имя автора, группу,
-
формулировку задания.
Имена переменных, функций и проч. должны иметь осмысленные имена. Желательно объявление переменной снабжать комментарием о ее назначении.
-
Следует структурировать программу, разбивая ее на (относительно) независимые части.
-
Интерфейс программы должен быть достаточно удобен для пользователя.
Программа должна быть снабжена удобным интерфейсом на базе меню.
-
Программа должна компилироваться без ошибок и предупреждений при всех включенных сообщениях компилятора.
-
Программы должны быть хорошо протестированы перед сдачей.
-
Требования к разделу:
-
Программа должна запрашивать имена файлов у пользователя.
-
Программа должна проверять данные в файле на наличие ошибок:
-
Неправильная запись чисел
-
Неверное число элементов в файле (EndOfFile)
-
Ошибка записи
-
-
Программа должна проверять ошибки: открытия файлов, записи и т.п.
-
Все необходимые для данные для функций должны передаваться им в качестве параметров. Использование глобальных переменных в функциях не допускается.
1. Реализовать программу, шифрующую и расшифровывающую бинарный файл с помощью ключевого слова.
Суть такого шифрования заключается в следующем: ключевое слово последовательно складывается по модулю 2 (XOR) с фрагментами текста длиной, равной длине ключевого слова.
Алгоритм шифрования оформить отдельной функцией.
Исходный файл и зашифрованный файл – разные файлы.
Файлы могут быть любых типов : текстовые и бинарные (*.txt, *.exe, *.gif и т.д.).
2. Реализовать программу, шифрующую и расшифровывающую бинарный файл с помощью подстановочного алфавита.
Суть такого шифрования заключается в следующем: каждый символ файла заменяется соответствующим символом из подстановочного алфавита. Подстановочный алфавит формируется сдвигом на N позиций ASCII алфавита.
Например:
Исходный алфавит: абвгдежз……………..
Подстановочный: вгдежзик……………..
Тогда последовательность символов «где» заменяется на «ежз».
При расшифровании производится обратная замена символов.
Алгоритм шифрования и расшифрования оформить отдельной функцией.
Исходный файл и зашифрованный файл – разные файлы.
Файлы могут быть любых типов : текстовые и бинарные (*.txt, *.exe, *.gif и т.д.).
3. Реализовать программу статистического анализа символов, входящих в файл.
Программа, должна выполнить следующее:
-
Рассчитать относительную частоту появления символов в файле
-
Рассчитать энтропию символов в файле.
-
Результаты вывести на экран и в файл типа TEXT:
-
Общее число символов в файле N.
-
Таблица, содержащая(5-ть граф):
-
№ символа(ASCI код) - i ,
-
символ ai,
-
число символов ai в файле,
-
относительная частота появления символа ai в файле.
Энтропию символов файла.
Таблица должна содержать записи, упорядоченные по убыванию относительной частоты появления символа, поэтому целесообразно определить массив записей (sruct).
Программа должна работать с различными типами файлов (*.txt, *.exe, *.bmp, *.gif, *.doc, *.zip и т.п.).
4. Реализовать программу, работающую с бинарным файлом, который содержит записи о товарах.
Каждая запись – структура с полями:
-
Наименование товара
-
Цена
-
Количество на складе
Интерфейс должен позволять:
-
Вносить новые записи
-
Просматривать содержимое файла
-
Сортировать записи по возрастанию поля «Цена»
Сортировку выполнить без использования промежуточного массива, т.е. переставлять записи непосредственно в файле.
Алгоритм сортировки оформить отдельной функцией.
5. Реализовать программу, работающую с бинарным файлом, который содержит записи о студентах.
Каждая запись – структура с полями:
-
Фамилия
-
Год рождения
-
Оценка по мат. анализу
-
Оценка по физкультуре
Интерфейс должен позволять:
-
Вносить новые записи
-
Просматривать содержимое файла
-
Найти самого старого среди студентов, отлично успевающего по мат. анализу и не успевающего по физкультуре. Исправить ему оценку по физкультуре.
6. Реализовать программу, работающую с бинарным файлом, который содержит записи о товарах.
Каждая запись – структура с полями:
-
Наименование товара
-
Цена
-
Количество на складе
Интерфейс должен позволять:
-
Вносить новые записи
-
Просматривать содержимое файла
-
Вставлять запись по указанному порядковому номеру N (вводится с клавиатуры). При этом запись c номером N помещается на позицию N+1, аналогично все последующие записи.
Алгоритм вставки оформить отдельной функцией.
7. Реализовать программу, работающую с бинарным файлом, который содержит записи о процессорах.
Каждая запись – структура с полями:
-
Наименование (тип) char[]
-
Тактовая частота
-
Цена
-
Количество на складе
Интерфейс должен позволять (все ниже следующие пункты реализовать как функции):
-
Вносить новые записи
-
Просматривать содержимое файла
-
Делать поиск записи по ее порядковому номеру и выводить ее на экран
-
Выводить на экран число записей в файле
-
Копировать исходный файл f1 в другой файл f2.
8. Реализовать программу, работающую с бинарным файлом f1, который содержит массив строк различной длины.
Строка должна быть описана структурой с полями:
-
Длина строки
-
Массив символов
Прим. : Такой формат имеет тип String в Pascal.
Интерфейс должен позволять:
-
Вносить новые записи
-
Просматривать содержимое файла
-
Рассмотреть файл как последовательность битов.
Если сумма всех битов, содержащих единицы - четна сортировать строки по возрастанию в алфавитном порядке, иначе – по убыванию.
Сортировку выполнить в другой файл f2.
Алгоритм сортировки оформить отдельной функцией.
9. Реализовать программу, работающую с бинарным файлом, который содержит записи о процессорах.
Каждая запись – структура с полями:
-
Наименование (тип) char[]
-
Тактовая частота
-
Цена
-
Количество на складе
Интерфейс должен позволять (все ниже следующие пункты реализовать как функции):
-
Вносить новые записи
-
Просматривать содержимое файла
-
Делать поиск записи по значению поля «Наименование» и выводить на экран все записи, удовлетворяющие запросу
-
Выводить на экран число записей в файле
-
Уплотнять исходный файл f1 в другой файл f2. Под уплотнением понимается удаление всех записей, у которых поле «Наименование» - пустая строка.
10. Реализовать программу, работающую с бинарным файлом.
В бинарном файле записаны числа типа unsigned int.
Интерфейс должен позволять:
-
Вносить новые записи
-
Просматривать содержимое файла
-
Если в файле есть хотя бы одно число, начинающееся цифрой 1 и содержащее цифру 2, упорядочить файл по неубыванию. Промежуточные массивы не использовать!
Алгоритм сортировки оформить отдельной функцией.
11. Реализовать программу, шифрующую файл с помощью следующего простого алгоритма: каждый байт исходного файла циклически сдвигается вправо или влево на N разрядов (N – ввести с клавиатуры).
Прим.: циклический сдвиг выполнить без применения asm-вставки.
Написать функцию шифрования и расшифрования.
Исходный файл и зашифрованный файл – разные файлы.
Файлы могут быть любых типов : текстовые и бинарные (*.txt, *.exe, *.gif и т.д.)
12. Реализовать программу, шифрующую файл с помощью следующего простого алгоритма: каждый байт исходного файла циклически сдвигается вправо или влево на N разрядов (N – ввести с клавиатуры), а затем складываются по модулю 2 (XOR) с числом M (M – ввести с клавиатуры)
Прим.: циклический сдвиг выполнить без применения asm-вставки.
Написать функцию шифрования и расшифрования.
Исходный файл и зашифрованный файл – разные файлы.
Файлы могут быть любых типов : текстовые и бинарные (*.txt, *.exe, *.gif и т.д.)
13. Реализовать программу, работающую с бинарным файлом.
В бинарном файле записаны числа типа short int.
Интерфейс должен позволять:
-
Вносить новые записи
-
Просматривать содержимое файла
-
Если сумма всех чисел – четная упорядочить файл по возрастанию.
Промежуточные массивы не использовать!
Алгоритм сортировки оформить отдельной функцией.
14. Реализовать программу, работающую с бинарным файлом f1, который содержит записи о товарах.
Каждая запись – структура с полями:
-
Наименование товара
-
Цена
-
Количество на складе
Интерфейс должен позволять:
-
Вносить новые записи
-
Просматривать содержимое файла
-
Сортировать записи по возрастанию поля «Цена»
Сортировку выполнить c использованием промежуточного массива, полученный массив записать в другой файл f2.
-
Делать поиск записи по значению поля «Наименование» и выводить на экран все записи, удовлетворяющие запросу
15. Реализовать программу, работающую с бинарным файлом f1, который содержит записи о студентах.
Каждая запись – структура с полями:
-
Фамилия
-
Год рождения
-
Оценка по мат. анализу
-
Оценка по физкультуре
Интерфейс должен позволять:
-
Вносить новые записи
-
Просматривать содержимое файла
-
Делать поиск записи по значению поля «Фамилия» и редактировать эту запись.
-
Копировать файл f1 в другой файл f2.
16. Реализовать программу, работающую с бинарным файлом, который содержит записи о товарах.
Каждая запись – структура с полями:
-
Наименование товара
-
Цена
-
Количество на складе
Интерфейс должен позволять:
-
Вносить новые записи
-
Просматривать содержимое файла
-
Вставлять запись: поля вставляемой записи ввести с клавиатуры и поместить ее содержимое на место 1-ой записи. При этом, запись ранее занившая 1-ю позицию, помещается на 2-ую, 2-ая запись на 3-ю и т.д.
Алгоритм вставки оформить отдельной функцией.
17. Реализовать программу, работающую с бинарным файлом f1, который содержит записи о процессорах.
Каждая запись – структура с полями:
-
Наименование (тип) char[]
-
Тактовая частота
-
Цена
-
Количество на складе
Интерфейс должен позволять (все ниже следующие пункты реализовать как функции):
-
Вносить новые записи
-
Просматривать содержимое файла
-
Делать поиск записей по полю «Тактовая частота» и вывести их на экран и в другой файл f2.
18. Реализовать программу, работающую с бинарным файлом f1, который содержит массив строк фиксированной длины.
Интерфейс должен позволять:
-
Вносить новые записи
-
Просматривать содержимое файла
-
Сортировать строки по возрастанию в алфавитном порядке.
Сортировку выполнить в другой файл f2.
Алгоритм сортировки оформить отдельной функцией.
19. Реализовать программу, работающую с бинарным файлом, который содержит записи о процессорах.
Каждая запись – структура с полями:
-
Наименование (тип) char[]
-
Тактовая частота
-
Цена
-
Количество на складе
Интерфейс должен позволять (все ниже следующие пункты реализовать как функции):
-
Вносить новые записи
-
Просматривать содержимое файла
-
Делать поиск записи по значению поля «Наименование» и добавлять найденную запись в другой файл f2.
20. Реализовать программу, работающую с бинарным файлом.
В бинарном файле записаны числа типа unsigned int.
Интерфейс должен позволять:
-
Вносить новые записи
-
Просматривать содержимое файла
-
Если в файле есть хотя бы одно число, имеет четную сумму его десятичных цифр, упорядочить файл по убыванию. Промежуточные массивы не использовать!
Алгоритм сортировки оформить отдельной функцией.