Ø Размер матрицы (величины M и N) программа должна запрашивать у пользователя.
Ø Имя файла для ввода/вывода программа должна запрашивать у пользователя.
Ø Максимальный размер матрицы 100x200 задать константами.
Ø Программа должна подсказывать пользователю, что ему делать.
Ø Процедура обработки матрицы должна получать данные для обработки, то есть матрицу и ее размер, через параметры.
Ø Процедура обработки матрицы должна возвращать результат обработки, через параметры.
Ø Программу необходимо снабдить тестом (примером, выполнение которого подтверждает правильность работы программы).
Варианты задач.
№ | Тип элементов | Обработка |
1. | real | Выбрать элементы массива в порядке возрастания. |
2. | integer | Выбрать элементы массива в порядке убывания. |
3. | char | Переставить элементы строк массива в порядке возрастания. |
4. | real | Переставить строки матрицы в порядке возрастания суммы их элементов. |
5. | integer | Транспонировать матрицу. |
6. | char | Выбрать максимальные элементы строк. |
7. | real | Выбрать минимальные элементы столбцов. |
8. | integer | Разделить все элементы матрицы на максимальный. |
9. | char | Переставить элементы столбцов массива в порядке убывания. |
10. | real | Переставить столбцы матрицы в порядке убывания произведения их элементов |
11. | real | Расположить элементы в каждой строке массива в порядке возрастания. |
12. | integer | Выбрать в порядке возрастания все положительные элементы матрицы. |
13. | char | Переставить строки массива в алфавитном порядке. |
14. | real | Выбрать в порядке возрастания все отрицательные элементы матрицы. |
15. | integer | Выбрать в порядке убывания все положительные элементы матрицы. |
16. | char | Выбрать все строки, содержащие гласные, расположив их элементы в алфавитном порядке. |
17. | real | Выбрать все строки, содержащие отрицательные числа, расположив их элементы в порядке убывания. |
18. | integer | Выбрать все строки, содержащие положительные числа, расположив их элементы в порядке возрастания. |
19. | char | Выбрать все строки, содержащие согласные, расположив их элементы в алфавитном порядке. |
20. | real | Выбрать все строки, содержащие положительные числа, расположив их в порядке убывания суммы элементов. |
21. | real | Выбрать все строки, содержащие отрицательные числа, расположив их в порядке возрастания суммы элементов. |
22. | integer | Выбрать элементы массива в порядке убывания |
23. | char | Переставить элементы строк массива в порядке, обратном алфавитному. |
24. | real | Переставить строки матрицы в порядке возрастания разности их элементов. |
25. | integer | Выбрать строки, сумма элементов которых отрицательна и вывести их в порядке возрастания сумм. |
Контрольные вопросы
1) Что такое файл в языке ПАСКАЛЬ?
2) Какие операции для типа файл существуют в языке ПАСКАЛЬ?
3) Какие процедуры для типа файл существуют в языке ПАСКАЛЬ?
4) Как использовать файлы в программе?
5) Для чего используются файлы?
6) Чем отличается файл от одномерного массива?
Лабораторная работа № 7
Комбинированный тип переменных в языке ПАСКАЛЬ.
Цель работы
Ознакомиться с типом запись (record). Научиться использовать комбинированный тип для организации простейших баз данных.
Краткие теоретические сведения
Тип данных record
Запись – это структура, объединяющая фиксированное число данных разных типов, называемых полями записи. Как правило, данные, помещенные в запись, логически (по смыслу решаемой задачи) связанны между собой. В одном поле можно размещать данные только одного типа, но разные поля могут иметь разный тип. Описание записи ведется по следующей форме:
Type
<имя записи> = record
S_1: TYPE_1;
S_2: TYPE_2;
…
S_N: TYPE_N
end;
где S_1 – список имен полей имеющих тип TYPE_1; S_2 – список имен полей имеющих тип TYPE_2; … S_N – список имен полей имеющих тип TYPE_N.
Пример 1. Календарные даты удобно описывать следующим образом:
Type
Date = record
Month: 1..12;
Day: 1..31;
Year: integer
end;
var d: Date;
Здесь d переменная типа Date, представляет собой трехкомпонентную структуру.
Обращение к полям типа record осуществляется путем указания имени переменной и имени поля, разделенных символом “.” (точка):
<имя переменной>.< имя поля>.
Например, d.Year; d.Day; и т.д., а процедура ввода даты может выглядеть так:
procedure Get_Data(var dt: Date);
Begin
Writeln;
Writeln(‘Введите дату’);
Write(‘День?’); Readln(dt.Day);
Write(‘Месяц?’); Readln(dt.Month);
Write(‘Год?’); Readln(dt.Year);
end;
Оператор with.
Это оператор создает удобства при работе с переменными типа record.
Общий вид:
With A do P;
где A – имя переменной типа record, P – любой оператор (простой или составной)) языка ПАСКАЛЬ. В операторе P разрешается опускать имя A при ссылках на компоненты (поля) записи A (указываются только имена полей). Используя оператор with процедуру ввода даты можно записать так:
procedure Get_Data(var dt: Date);
Begin
Writeln;
Writeln(‘Введите дату’);
With dt do
Begin
Write(‘День?’); Readln(Day);
Write(‘Месяц?’); Readln(Month);
Write(‘Год?’); Readln(Year);
End
end;
Запись с вариантами
В тех случаях, когда наборы частей записи предстоит менять в зависимости от значения какого либо поля, удобно использовать запись с вариантами (очень похоже на оператор ветвления case). Общий вид:
Type
<имя записи> = record
S_1: TYPE_1;
S_2: TYPE_2;
…
S_N: TYPE_N
case S: TYPE_S of
C1: (<список полей_1>);
C2: (<список полей_2>);
…
CK: (<список полей_K>)
End;
где S_1 – список имен полей имеющих тип TYPE_1; S_2 – список имен полей имеющих тип TYPE_2; … S_N – список имен полей имеющих тип TYPE_N.
где S – поле порядкового типа TYPE_S, значение которого как‑то задается в программе;
C1, C2, … CK – константы, того же типа, с которыми сравнивается выражение S;
<список полей_1>, <список полей_2>, …, <список полей_K> – списки полей, записанные также как и список стоящий между словами record и case, из которых реализуется тот, с константой которого совпадет значение поля S. Изменяя значение поля S переменной в программе, вы изменяете и структуру записи.
Задача №1.
Написать программу, реализующую небольшую базу данных в виде одномерного массива записей:
1. Ввод c клавиатуры элементов базы данных.
2. Вывод содержимого базы данных на дисплей.
Задача №2.
Дополнить программу функцией сортировки базы данных по способу соответствующему вашему варианту.