Первый уровень сложности
Написать программу по обработке файла, состоящего из структур, содержащих информацию задания 6. Средний балл рассчитать программно по введенным оценкам. Массив структур не использовать.
В программе реализовать следующие действия по обработке файла:
– создание;
– просмотр;
– добавление нового элемента;
– удаление (редактирование);
– решение индивидуального задания (первый уровень сложности задания 6).
Результаты выполнения индивидуального задания записать в текстовый файл.
Второй уровень сложности
Задачи шифровки. Составить программу, которая вводит строку с клавиатуры; признак окончания ввода – нажатие клавиши Enter, шифрует введенный текст в файл на диске по определенному алгоритму. Программа должна считывать эту строку из файла и далее дешифровать текст, выводя его на экран и записывая в выходной файл.
В программе реализовать следующие действия:
– ввод с клавиатуры исходной строки текста и запись в файл a.txt;
– считывание строки из файла и вывод на экран;
– шифровка текста;
– расшифровка.
Алгоритмы шифровки:
1. Каждая буква от «а» до «ю» заменяется на следующую по алфавиту, а «я» заменяется на «а».
2. Первая буква «а» заменяется на 11-ю, вторая «б» – на 12-ю, третья – на 13-ю, ... , последняя «я» – на 10-ю.
3. После каждой согласной буквы вставляется буква «а».
4. После каждой согласной буквы вставляется слог «ла».
5. Каждая пара букв «ле» заменяется на «ю», «са» – на «щ», «ик» – на «ж».
6. Каждая из пары букв «си», «ли» и «ти» заменяются соответственно на «иис», «иил» и «иит».
7. После каждой гласной буквы вставляется буква «с».
8. После каждой гласной буквы вставляется слог «ла».
9. Каждая из букв «а», «о», «и» заменяется соответственно на «ц», «ш», «щ».
10. Каждая буква заменяется на следующую в алфавите по часовой стрелке.
11. Каждая буква заменяется на следующую в алфавите против часовой стрелки.
12. Каждая буква «а» заменяется на слог «си», а «и» – на «са».
13. Четные и нечетные символы меняются местами.
14. Символы, кратные двум по порядку следования, заменяются на единицы.
15. Символы, кратные двум по порядку следования, заменяются на свой порядковый номер.
ГЛАВА 15. Динамические структуры данных
Линейные списки
Некоторые задачи исключают использование структур данных фиксированного размера и требуют введения структур, способных увеличивать или уменьшать свой размер уже в процессе работы программы. Основу таких структур составляют динамические переменные.
Динамическая переменная хранится в некоторой области ОП, обращение к которой производится через переменную-указатель.
Как правило, динамические переменные организуются в списковые структуры данных, элементы которых имеют тип struct. Для адресации элементов в структуру включается указатель (адресное поле) на область размещения следующего элемента.
Такой список называют однонаправленным (односвязным). Если добавить в каждый элемент ссылку на предыдущий, получится двунаправленный список (двусвязный), если последний элемент связать указателем с первым, получится кольцевой список.
Например, пусть необходимо создать линейный список, содержащий целые числа, тогда каждый элемент списка должен иметь информационную (infо) часть, в которой будут находиться данные, и адресную часть (р), в которой будут размещаться указатели связей, т.е. элемент такого списка имеет вид
а шаблон структуры будет иметь вид
struct Spis {
int info;
Spis *p;
} ;
Каждый элемент списка содержит ключ, идентифицирующий этот элемент. Ключ обычно бывает либо целым числом, либо строкой и является частью поля данных. В качестве ключа в процессе работы со списком могут выступать разные части поля данных.
Например, если создается линейный список из записей, содержащих фамилию, год рождения, стаж работы и пол, любая часть записи может выступать в качестве ключа. При упорядочивании такого списка по алфавиту ключом будет являться фамилия, а при поиске, например, ветеранов труда – ключом будет стаж работы. Как правило, ключи должны быть уникальными, но могут и совпадать. В случае совпадения ключей лучше всего использовать схемы организации структур данных по принципам «хеширования».
Над списками можно выполнять следующие операции:
– начальное формирование списка (создание первого элемента);
– добавление элемента в список;
– обработка (чтение, удаление и т.п.) элемента с заданным ключом;
– вставка элемента в заданное место списка (до или после элемента с заданным ключом);
– упорядочивание списка по ключу.
Если программа состоит из функций, решающих вышеперечисленные задачи, то необходимо соблюдать следующие требования:
– все параметры, не изменяемые внутри функций, должны передаваться с модификатором const;
– указатели, которые могут изменяться, передаются по адресу. Например, при удалении из списка последнего элемента, измененный указатель на конец списка требует корректировки, т.е. передачи в точку вызова.
Дата добавления: 2017-10-04; просмотров: 1764;