Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Massivi.doc
Скачиваний:
5
Добавлен:
26.08.2019
Размер:
86.53 Кб
Скачать

Ввод массива из текстового файла или с клавиатуры

Ввод значений элементов массива с помощью оператора READ осуществляется поэлементно. Нельзя ввести массив целиком. Например, для любого массива W недопустим оператор READ(W) или READLN(W).

Рассмотрим пример ввода массивов. Пусть в программе имеются описания

VAR X:array[1..5] OF INTEGER;

Y:array[1..3,1..2] OF REAL;

INP:TEXT; I,J:byte;

Вначале после BEGIN надо открыть входной текстовый файл, для чего используются операторы:

assign(INP,'H:\03-101\a7.in'); reset(INP);

Тогда ввод значений элементов одномерного и двухмерного массивов из входного файла H:\03-101\a7.in можно выполнить с помощью операторов ввода READ, READLN и цикла FOR:

FOR I:=1 TO 5 DO READ(inp,X[I]);

FOR I:=1 TO 3 DO

FOR J:=1 TO 2 DO READ(inp,Y[I,J]);

Для ввода двухмерного массива используется вложенный цикл, причем внешний цикл по номеру строки I матрицы, а внутренний - по номеру столбца J.

После последнего оператора READ надо закрыть входной файл, используя оператор

CLOSE(INP);

Входной файл в этом случае может иметь вид:

1 3 -300 7 2

-1.1 -2.5

3.3 -4.1

5.1 6.3

Между числами должен быть разделитель (пробел или ).

В случае массива символов символы должны вводиться без разделителей между ними. Кроме того, в программе надо добавлять каждый раз READLN для перехода на следующую строку ввода.

Рассмотрим пример ввода одномерного и двухмерного массивов символов из входного файла H:\03-101\a7.in.

VAR X1:array[1..5] OF char;

Y1:array[1..3,1..2] OF CHAR;

INP:TEXT; I,J:byte; BEGIN

assign(INP,'H:\03-101\a7.in'); reset(INP);

FOR I:=1 TO 5 DO READ(inp,X1[I]); READLN;

FOR I:=1 TO 3 DO begin

FOR J:=1 TO 2 DO READ(inp,Y1[I,J]);

READLN(INP) end;

close(inp); END.

Входной файл в этом случае может иметь вид: a35mn

qw

er

ty

ИЗ При вводе массива с клавиатуры не нужны три оператора открытия

и закрытия входного файла, INP с запятой в операторах READ и

описание INP.

Можно вводить и значения отдельных элементов, а не всего массива, например

READ(Y[1,1]);

Вывод массива в текстовый файл или на экран монитора

Вывод значений элементов массива с помощью операторов WRITE и WRITELN осуществляется поэлементно. Нельзя вывести массив целиком, за исключением одномерного массива символов. Например, для любого массива W (но не одномерного из символов) недопустим оператор WRITELN(W);

Рассмотрим пример вывода массивов X и Y, описание которых приведено в предыдущем параграфе, посвященном вводу массива. В раздел VAR необходимо добавить описание

OUT:TEXT;

Вначале после BEGIN надо открыть выходной текстовый файл, для чего используются операторы:

assign(OUT,'H:\03-101\a7.out'); rewrite(OUT);

При выводе значений элементов массива в виде чисел необходимо предусмотреть вывод пробела между ними.

Все значения элементов одномерного массива (вектора) можно выводить в одну строку через пробел между ними и без формата, если элементы - целые числа, или по двойному формату в случае дробных чисел. Например, вывод в файл массива X из целых чисел можно выполнить путем операторов:

WRITELN(OUT, ‘Вектор X’);

FOR I:=1 TO 5 DO WRITE(OUT,X[I],' '); WRITELN(OUT);

Тогда в выходном файле получим следующее:

Вектор X

1 3 –300 5 7

Значения элементов двумерного массива (матрицы) следует выводить в файл построчно и по формату (включающему позицию под пробел между двумя числами), что можно осуществить с помощью вложенного цикла FOR и операторов вывода:

WRITELN(OUT, ‘Матрица Y’);

FOR I:=1 TO 3 DO

BEGIN

FOR J:=1 TO 2 DO WRITE(OUT,Y[I,J]:5:1);

WRITELN(OUT)

END;

После последнего оператора WRITELN надо закрыть выходной файл, используя оператор

CLOSE(OUT);

Тогда в выходном файле получим:

Матрица Y

-1.1 -2.5

3.3 -4.1

5.1 6.3

Для удобства печати последняя строчка каждого файла (входного, выходного и с программой) должна быть пустой, так как иначе первая строчка следующего печатаемого файла будет начинаться на последней строчке предыдущего файла, являясь ее продолжением.

Для получения последней пустой строки файла с программой и входного следует нажать ENTER в конце файла, а для выходного файла в программе последний оператор вывода должен быть WRITELN, а не WRITE.

В случае массива символов символы должны выводиться без пробелов между ними. Одномерный массив символов выводится целиком.

Вывод в выходной файл одномерного X1 и двухмерного Y1 массивов символов, описание которых приведено в предыдущем параграфе, можно выполнить следующим образом.

writeln(out,X1);

FOR I:=1 TO 3 DO

begin

FOR J:=1 TO 2 DO write(out,Y1[I,J]); writeln(out)

end;

Выходной файл в этом случае будет иметь вид:

a35mn

qw

er

ty

При выводе массива на экран монитора не нужны три оператора открытия и закрытия выходного файла, OUT с запятой в операторах WRITE и WRITELN и описание OUT.

Можно выводить и значения отдельных элементов, а не всего массива, например

WRITELN(Y[3,1]);

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]