Считывание массива из файла

Чтобы сто раз не вводить одно и то же, удобно организовать считывание элементов массива из текстового файла. В каждой строчке такого файла записан один элемент массива (Рис. 6, а).

 
2.0 14.5 -15.3
 
2.0 3.0 4.0 3.0 -2.5 14.3 16.2 18.0 1.0
а) одномерный массив б) двумерный массив

Рис. 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):

Считывание массива из файла - student2.ru ,

если Считывание массива из файла - student2.ru и Считывание массива из файла - student2.ru - элементы массивов, состоящих из N элементов, где Считывание массива из файла - student2.ru .

Порядок выполнения работы

1. Определить структуры данных (массивы) в разрабатываемом алгоритме.

2. Выявить цикл (-ы) в разрабатываемом алгоритме.

3. Подобрать нужный тип оператора цикла.

4. Реализовать алгоритм в программном коде

5. Отладить программу

Содержание отчета

Отчет содержит распечатку текста программы и копии экрана работающей программы.

Наши рекомендации