Задания практикума на ЭВМ (1110686), страница 6
Текст из файла (страница 6)
3) Студенты, модальные по следующему набору параметров:
отчество, город, месяц рождения.
4) Студенты, модальные по следующему набору параметров:
город, 1-я оценка, 2-я оценка, 3-я оценка.
5) Студенты, средние по следующему набору параметров:
1-я оценка, 2-я оценка, 3-я оценка.
6) Студенты, средние по следующему набору параметров:
средняя успеваемость (с точностью до 0.1), возраст (в полных месяцах).
В качестве промежуточной информации напечатать все модальные значения или среднее арифметическое значение каждого из указанных в варианте параметров.
Как основной результат работы программы напечатать (упорядочив по ФИО) следующие сведения о найденных студентах: фамилия, имя, отчество, номер группы и значение каждого из указанных параметров.
ОПРЕДЕЛЕНИЯ
1. Пусть имеется множество объектов, каждый из которых характеризуется некоторым параметром (признаком). "Модальным" называется то значение параметра, которое присуще наибольшему числу объектов множества (таких значений может быть несколько). Объект с таким значением параметра называется "модальным по этому параметру". Например, если среди студентов наиболее часто и в равном количестве встречаются имена Елена и Наталья, то все Елены и Натальи являются модальными по параметру "имя".
Объект называется "модальным по набору параметров", если число его модальных параметров из этого набора максимально среди всех других объектов. Если, например, модальными значениями параметра "фамилия" являются Иванов и Петров, параметра "имя" - Сергей, Андрей и Евгений, а параметра "город" - Москва, то в множестве студентов {Петров Андрей из Тулы, Иванов Олег из Москвы, Сидоров Сергей из Курска} модальными по набору параметров {фамилия, имя, город} будут два первых студента, т.к. у них из трех признаков набора два являются модальными, а у третьего студента такой признак только один.
2. Пусть каждый объект множества характеризуется некоторым числовым параметром и пусть !P - среднее арифметическое значение этого параметра на данном множестве. "Средним" называется то значение P этого параметра, которое наиболее близко к числу !P, т.е. при котором величина abs(P-!P) минимальна (таких значений может быть два). Объект с таким значением называется "средним по этому параметру". Например, если средняя оценка (по какому-то экзамену) равна 3.5, то все студенты, получившие оценки 3 и 4, будут средними по этому параметру.
Объект называется "средним по набору параметров", если количество его средних параметров из этого набора максимально среди всех других объектов.
ТРЕБОВАНИЯ К ПРОГРАММЕ
1. Информация о всех студентах, введенная из внешнего файла, должна быть представлена в виде списка. Звено списка должно содержать сведения об одном студенте и представлять собой запись со следующими полями: фамилия, имя, отчество (все - строки из 12 литер), пол (перечислимый тип), дата (запись из трех полей), город (строка из 12 литер), номер группы (целое), оценки (массив из трех целых чисел). Вся дальнейшая работа программы должна вестись только с этим списком.
2. В программе должны быть описаны процедура чтения из файла слов и записи их в 12-литерные строки (с пробелами справа) и процедура чтения целых чисел (стандартная процедура ввода не подойдет из-за точек в датах).
3. Для тестирования программы подготовить свой небольшой внешний файл.
ЛИТЕРАТУРА
1. Абрамов В.Г., Трифонов Н.П., Трифонова Г.Н. Введение в язык Паскаль. - М.: Наука, 1988.
2. Епанешников А.М., Епанешников В.А. Программирование в среде Turbo Pascal 7.0 - М.: "ДИАЛОГ-МИФИ", 2000.
МЕТОДИЧЕСКИЕ УКАЗАНИЯ
1. Целесообразно избрать следующий план решения задачи:
а) Чтение информации из файла и построение списка.
б) Просмотр списка и определение нужных сведений по каждой группе (завести массив по числу групп). Выбор групп, удовлетворяющих свойству А. Промежуточная печать. (Пункты а и б можно выполнять одновременно).
в) Просмотр списка и удаление из него сведений о студентах из других групп.
г) Просмотр списка оставшихся студентов и определение числа "встречаемости" каждого значения по каждому параметру из заданного набора. Определение наиболее часто встречающихся, т.е. модальных, значений по каждому из этих параметров. (Для средних значений - подсчет среднего арифметического по каждому параметру, а затем - при новом просмотре списка - определение минимального отклонения.) Промежуточная печать.
д) Новый просмотр списка и подсчет для каждого студента числа модальных или средних параметров из заданного набора, определение максимума этих чисел.
е) Просмотр списка и выбор студентов с наибольшим числом модальных или средних параметров. Печать окончательного результата.
2. Особенности работы с файлами в языке Турбо Паскаль.
а) В этом языке нет понятия буферной переменной файла и нет процедур get и put. Поэтому для чтения из файлов следует пользоваться процедурами read и readln, а для записи - write и writeln.
б) В языке нет внутренних файлов, все файлы - внешние. Поэтому перечислять внешние файлы в заголовке программы не надо, и заголовок выглядит так:
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
34