Н.П. Трифонов, В.Н. Пильщиков - Практикум на ЭВМ (1114627), страница 6
Текст из файла (страница 6)
б) В языке нет внутренних файлов, все файлы - внешние. Поэтому перечислять внешние файлы в заголовке программы не надо, и заголовок выглядит так:
program <имя программы>;
в) Поскольку названия файлов на диске (типа C:\COURSE3.TXT) не являются идентификаторами в смысле языка Паскаль, то их нельзя использовать в качестве имен (файловых) переменных. В связи с этим в Турбо Паскале названию дискового файла ставят в соответствие некоторое имя (например, t), законное с точки зрения языка, и далее в программе пользуются только этим именем: именно его описывают как имя файла, именно его указывают в процедурах и функциях reset, rewrite, read, write, eof, eoln и т.п. Соответствие же между этим именем и названием дискового файла устанавливается следующей процедурой:
assing(t, 'C:\COURSE3.TXT')
(второй параметр здесь - строка), причем обращение к этой процедуре должно быть выполнено до любых других операций над файлом.
г) По завершению работы с файлом его надо "закрыть":
close(t)
ЗАДАНИЕ 6. ЯЗЫК АССЕМБЛЕРА.
ОБРАБОТКА ЛИТЕРНЫХ ДАННЫХ.
ПОСТАНОВКА ЗАДАЧИ.
Дан непустой текст (последовательность литер), содержащий не более 100 элементов, с точкой в качестве признака конца текста.
Требуется:
- ввести с клавиатуры данный текст и записать его в память ЭВМ;
- определить, обладает ли этот текст заданным свойством (свойство определяется вариантом задания);
- преобразовать текст по правилу 1, если он обладает заданным свойством, и по правилу 2 в противном случае (правила преобразования определяются вариантом задания);
- вывести на экран дисплея: исходный текст, номер примененного правила, преобразованный текст.
ВАРИАНТЫ ЗАДАНИЯ
А. Свойство исходного текста:
1) Текст оканчивается заглавной латинской буквой, которая больше не встречается в тексте.
2) Текст начинается цифрой и оканчивается цифрой, причем эти цифры различны.
3) Текст начинается латинской буквой и оканчивается латинской буквой.
4) Текст содержит не менее трех латинских букв.
5) Текст содержит равное количество заглавных и строчных латинских букв.
6) Текст не содержит иных литер, кроме цифр и латинских букв.
Б. Правило 1 преобразования текста:
1) Заменить каждую заглавную латинскую букву на следующую по алфавиту букву (букву Z заменять на букву A).
2) Заменить каждую ненулевую цифру на соответствующую ей по порядковому номеру строчную букву латинского алфавита (1 a, 2 b и т.д.).
3) Заменить каждую заглавную латинскую букву на цифру, числовое значение которой равно величине N mod 10, где N - порядковый номер буквы в алфавите (от 1 до 26).
4) Заменить каждую строчную латинскую букву на соответствующую заглавную букву.
5) Заменить все заглавные латинские буквы на соответствующие строчные буквы.
6) Заменить каждую заглавную латинскую букву на заглавную букву, симметричную ей в алфавите (A ↔ Z, B ↔ Y, ...).
В. Правило 2 преобразования текста:
1) Перенести в начало текста все входящие в него цифры с сохранением порядка их следования.
2) Перевернуть текст, не используя дополнительную память.
3) Удвоить каждую литеру текста.
4) Удалить из текста все повторные вхождения его первой литеры.
5) Оставить в тексте только те литеры, которые входят в него ровно один раз.
6) В каждой группе следующих подряд одинаковых литер оставить только одну из них.
ТРЕБОВАНИЯ К ПРОГРАММЕ
1. Вывод исходного текста должен быть выполнен сразу после его записи в память - до его анализа и преобразования.
2. Вывод преобразованного текста должен быть выполнен только после его окончательного формирования.
3. Алгоритмы преобразования текста по правилам 1 и 2 должны быть оформлены в виде процедур.
4. В программе использовать операции ввода-вывода INCH, OUTCH, OUTSTR и операцию останова FINISH, описанные в [1].
ЛИТЕРАТУРА
1. Пильщиков В.Н. Программирование на языке ассемблера IBM PC. – М., Диалог-МИФИ, 1999.
ЗАДАНИЕ 7. ЯЗЫК АССЕМБЛЕРА.
ДИНАМИЧЕСКИЕ СТРУКТУРЫ ДАННЫХ.
ПОСТАНОВКА ЗАДАЧИ
Дана последовательность от 1 до 20 слов, каждое из которых содержит от 1 до 8 заглавных латинских букв; соседние слова разделены запятой, за последним словом следует точка.
Требуется ввести эту последовательность и преобразовать ее во внутреннее представление, а затем напечатать по алфавиту определенные слова с дополнительной информацией о каждом из них.
ВАРИАНТЫ ЗАДАНИЯ
А. Внутреннее представление последовательности слов:
1) Список слов, упорядоченных по алфавиту.
2) Массив списков: список из однобуквенных слов, список из двухбуквенных слов и т.д. (в каждом из них слова упорядочены по алфавиту).
3) Двоичное дерево поиска (в нем слева от каждой вершины-слова должны находиться только те слова, что предшествуют этому слову по алфавиту, а справа - следующие за ним по алфавиту).
Б. Какие слова и в каком порядке печатать:
1) Все слова (с печатью всех повторных вхождений).
2) Все различные слова (без повторений).
3) Все слова, входящие в последовательность только один раз.
4) Все слова (с повторениями), входящие в последовательность более одного раза.
5) Все различные слова, входящие в последовательность более одного раза.
6) Сначала все слова, входящие в последовательность один раз, затем все слова (с повторениями), входящие два раза, и т.д.
7) Сначала все слова, входящие в последовательность один раз, затем все различные слова, входящие два раза, потом все различные слова, входящие три раза, и т.д.
8) Сначала все однобуквенные слова (с повторениями), затем все двухбуквенные слова и т.д.
9) Сначала все различные однобуквенные слова, затем все различные двухбуквенные слова и т.д.
Замечание: в каждой группе слова печатать по алфавиту.
В. Дополнительная информация о слове:
1) Нет дополнительной информации.
2) Порядковый номер слова в последовательности.
3) Число вхождений слова в последовательность.
ТРЕБОВАНИЯ К ПРОГРАММЕ
1. Для размещения звеньев списков (вершин дерева) выделить в памяти область подходящего размера - "кучу" (см. [1]). Описать процедуру (аналогичную процедуре New языка Паскаль), которая при каждом обращении к ней выделяет из кучи свободные ячейки под новое звено (вершину).
2. Описать в программе следующие процедуры:
- чтение очередного слова, дополнение его справа пробелами (до 8 символов) и запись его в фиксированное место памяти;
- вставка нового слова в упорядоченный список (в дерево);
- просмотр списка (дерева) и печать нужных слов.
3. Программа должна быть протестирована на различных исходных данных.
4. В программе использовать операции ввода-вывода INCH, OUTCH, OUTSTR, OUTWORD и операцию останова FINISH, описанные в [1].
ЛИТЕРАТУРА
1. Пильщиков В.Н. Программирование на языке ассемблера IBM PC. – М., Диалог-МИФИ, 1999.
МЕТОДИЧЕСКИЕ УКАЗАНИЯ
1. Исходную последовательность слов сначала целиком ввести в память и лишь затем выделять из нее слова.
2. Структуру звеньев списков (вершин дерева) определить с учетом особенностей решаемой задачи.
3. Для упрощения операций над списками следует использовать списки с заглавными звеньями.
СОДЕРЖАНИЕ
1. ЯЗЫК ПАСКАЛЬ.
ВЫЧИСЛЕНИЕ КОРНЕЙ УРАВНЕНИЙ И ОПРЕДЕЛЕННЫХ ИНТЕГРАЛОВ . . . . 3
2. ЯЗЫК ПАСКАЛЬ.
ДИНАМИЧЕСКИЕ СТРУКТУРЫ ДАННЫХ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3. ЯЗЫК ПАСКАЛЬ.
МЕТОДЫ СОРТИРОВКИ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4. ЯЗЫК ПАСКАЛЬ.
ИНТЕРФЕЙС ПРОГРАММЫ СОРТИРОВКИ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
5. ЯЗЫК ПАСКАЛЬ.
РАБОТА С ФАЙЛАМИ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
6 ЯЗЫК АССЕМБЛЕРА.
ОБРАБОТКА ЛИТЕРНЫХ ДАННЫХ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
7. ЯЗЫК АССЕМБЛЕРА.
ДИНАМИЧЕСКИЕ СТРУКТУРЫ ДАННЫХ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
30