Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
6.DOC
Скачиваний:
0
Добавлен:
09.11.2018
Размер:
100.86 Кб
Скачать

6.7.2. Ввод числовых данных из текстовых файлов

При необходимости ввода большого количества данных, в том числе и числовых, обычно создается файл с помощью текстового редактора.

Чтение числовых данных из текстового файла реализуется процеду-рами

Read(F,a1,a2...an), ReadLn(F,a1,a2...an),

где F - файловая переменная;

a1,a2...an - список ввода переменных целого или вещественного типов.

Разделителями числовых данных в файле являются пробел, табуляция и "конец строки". Несколько следующих друг за другом разделителей любого типа воспринимаются как один разделитель.

В процессе считывания данных происходит преобразование из внешнего формата (текстового) во внутренний (двоичный). Например, целые числа -32766 и 5 после преобразования во внутренний формат займут два байта, которые отводятся для любого числа типа integer, хотя в файле они занимают 6 и 1 байт соответственно.

Считывание данных одной процедурой Read (ReadLn) идет до тех пор, пока не будет удовлетворен ее список ввода. При достижении конца файла при неудовлетворенном списке ввода возникает ошибка.

После считывания очередного числа текущий указатель файла устанавливается на начало следующего. Отличие процедуры ReadLn от процедуры Read заключается в том, что после удовлетворения списка ввода текущий указатель переходит на следующую строку файла даже если данные из строки использованы не полностью.

Пример 6.7.2. Текстовый файл 'R.dat' содержит вещественные числа. Переписать в массив первые n чисел файла.

PROGRAM Filreal; CONST n=10;

VAR fr : text;

k : integer;

a : ARRAY[1..n] OF real;

b,max : real;

BEGIN

Assign(fr, 'R.dat');

Reset(fr);

FOR k:=1 TO n DO Read(fr,a[k]);

Close(fr);

FOR k:=1 TO n DO WriteLn(a[k])

END.

Пример 6.7.3. Прочитать из текстового файла матрицу целых чисел. Размеры матрицы заданы в файле.

Пусть, например, данные в файле записаны следующим образом: 3 5 - размеры матрицы ---------------------- 1 8 3 27 39 9 -5 6 35 119 6 6 0 1 44 ----------------------

PROGRAM Matint;

CONST m=40; n=40; { Предельные размеры матрицы }

VAR Fil : text;

i,j,m1,n1 : integer;

a : ARRAY[1..m,1..n] OF integer;

BEGIN

Assign(Fil,'Mat.dat');

Reset(Fil);

ReadLn(Fil,m1,n1); { Считывание размеров матрицы }

ReadLn(Fil); { Отсечка строки дефисов }

FOR i:=1 TO m1 DO

FOR j:=1 TO n1 DO

Read(Fil,a[i,j]);

ReadLn(Fil);

Close(fil);

END.

Задачи

6.7.6. Подсчитать общее количество чисел, записанных в текстовом файле.

6.7.7. В текстовом файле набор чисел оформлен в виде матрицы. Необходимо: 1) определить количество строк матрицы ; 2) записать в массив только первый столбец матрицы.

6.7.3. Вывод числовых данных в текстовый файл

Вывод данных в текстовый файл реализуется процедурами Write(F,a1,a2...an), WriteLn(F,a1,a2...an), где F - файловая переменная, a1,a2...an - список вывода.

Процедура WriteLn в отличие от процедуры Write записывает в файл признак "конец строки".

При выводе числовых данных, а также данных булевского типа, прои-сходит преобразование из внутреннего формата в текстовый.

Процедура Close(F) записывает признак "конец файла" и закрывает файл.

Пример 6.7.4.Записать в текстовый файл в форме матрицы размером 3´5 значения выражения k2-6k+8, k=1,2...15 .

PROGRAM Outmatr;

CONST m=3; n=5;

VAR fout : text;

k,m : integer;

BEGIN

Assign(fout, 'Out.dat');

Rewrite(fout);

WriteLn(fout, m,n:3, ' - размеры матрицы');

FOR k:=1 TO m*n DO

BEGIN

Write(fout, k*k-6*k+8 : 5);

IF k MOD n = 0 THEN WriteLn(fout)

END;

WriteLn(fout, 'конец матрицы');

Close(fout)

END.

Если теперь распечатать файл 'Out.dat', то увидим следующее: 3 5 - размеры матрицы

3 0 -1 0 3

8 15 24 35 48

63 80 99 120 143

конец матрицы

Задачи

6.7.6. Имеется текстовый файл с числовой матрицей с количеством столбцов 2n. Построить 2 новых файла. В первый записать первые n столб-цов исходной матрицы, а во второй - вторые n столбцов. Вспомогательный массив не строить.

6.7.7. Имеется файл с квадратной матрицей. Построить файл, запи-сав в него 2 одномерных массива, каждый из которых - суть диагональные элементы матрицы исходного файла.

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