Считывание массива из файла
Чтобы сто раз не вводить одно и то же, удобно организовать считывание элементов массива из текстового файла. В каждой строчке такого файла записан один элемент массива (Рис. 6, а).
|
| ||
а) одномерный массив | б) двумерный массив |
Рис. 6 – Файлы для хранения массивов.
Считывание делается примерно следующим образом:
TYPE TA=ARRAY[1..10] OF REAL;
VAR a:TA; f:TEXTFILE; i:BYTE;
BEGIN
ASSIGNFILE(f,'1.txt');
RESET(f);
FOR i:=1 TO 10 DO
READLN(f,a[i]);
CLOSEFILE(f);
…
Преобразование типов (из файла считывается текстовая строка, а в массив оно заносится как вещественное число) выполняется автоматически процедурой READLN.
Если массив двумерный, то удобно в каждой строчке файла располагать несколько его элементов, разделяя их пробелами. Давайте считаем массив 3´3 элемента, показанный на Рис. 6, б:
TYPE TA=ARRAY[1..3,1..3] OF REAL;
VAR a:TA; i,j:BYTE; f:TEXTFILE;
BEGIN
ASSIGNFILE(f,'1.txt');
RESET(f);
// Цикл по строкам файла
FOR i:=1 TO 3 DO
BEGIN
// Цикл по числам внутри строки
FOR j:=1 TO 3 DO
READ(f,a[I,j]);
// Считывание символов конца строки
READLN(f)
END;
CLOSEFILE(f);
…
В приведенном фрагменте используется процедура READ, которая считывает не строку целиком, а ее часть до следующего пробела. После считывания всех чисел из строки нужно перейти на следующую строчку, для чего применяется процедура READLN(f). Данных она не считывает, а просто переходит к следующей строке файла.
Поиск максимума и минимума
Допустимые отклонения размеров деталей будут накапливаться
однонаправленно, чтобы причинить максимум трудностей при сборке.
Из законов Мэрфи
Очень часто встречается задача нахождения минимального или максимального элемента в массиве. Существует много неправильных способов ее решения. А вот как выглядит правильный:
CONST Nmax=10; { число элементов в массиве }
TYPE TA=ARRAY[1..Nmax] OF REAL;
VAR a:TA; i:BYTE; max: REAL;
BEGIN
// заполнение массива
FOR i:=1 TO Nmax DO
a[i]:=RANDOM;
max := a[1];
FOR i:=2 TO Nmax DO
IF a[i]>max THEN
max:=a[i];
Label1.Caption:=
'Максимальный элемент равен '+FloatToStrF(max,ffFixed,10,4);
Суть этого способа в том, что сначала мы принимаем первый элемент массива за максимальный, а потом сравниваем с ним все остальные элементы, начиная со второго. Если очередной элемент окажется больше, мы запоминаем его значение в переменной max.
Объекты исследования, оборудование, материалы и наглядные пособия
Для выполнения работы применяеются:
- IBM-совместимый ПК с ОC Windows XP, 7, 8;
- файловый менеджер Far Commander;
- среда программирования Delphi версий 7.0 и выше.
Задание на работу
Пример задания на ЛР:
Составить программу вычисления значений функции Z(x):
,
если и - элементы массивов, состоящих из N элементов, где .
Порядок выполнения работы
1. Определить структуры данных (массивы) в разрабатываемом алгоритме.
2. Выявить цикл (-ы) в разрабатываемом алгоритме.
3. Подобрать нужный тип оператора цикла.
4. Реализовать алгоритм в программном коде
5. Отладить программу
Содержание отчета
Отчет содержит распечатку текста программы и копии экрана работающей программы.