Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник.docx
Скачиваний:
36
Добавлен:
21.12.2018
Размер:
2.15 Mб
Скачать

Запись табличных данных в файл и их чтение оттуда

Программа на языке Паскаль:

const

K = 10;

L = 20;

var

f: text;

n: byte;

i, j: integer;

begin

assign (f, 'c:\tabl.txt');

rewrite (f);

randomize;

for i := 1 to K do begin

for j :=1 to L do begin

n := random (100);

write (f, n:4)

end;

writeln (f)

end;

close (f);

{------------------------------------}

reset (f);

while not eof (f) do begin

while not eoln (f) do begin

read (f, n);

write (n:4)

end;

readln (f);

writeln;

end;

close (f)

end.

Примечания:

Таблица представляет собой двумерный массив – матрицу. Многие данные хранятся именно в виде двумерной таблицы.

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

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

При чтении данных из файла внутренний цикл while читает содержимое каждой строки. Завершение строки текстового файла определяется функцией eoln. Во внешнем цикле while выражение readln (f) переводит файловый указатель на новую строку с тем, чтобы последующее чтение началось именно оттуда.

Фильтрация данных

Задача:

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

Алгоритм решения задачи:

Первый файл открывается на чтение, второй – на запись.

Первый цикл while читает поэлементно исходный файл. Если текущий символ является одним из ‘a’, ‘e’ или ‘u’, то он записывается во второй файл. Также переменная-счетчик (k) увеличивает свое значение на единицу.

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

Программа на языке Паскаль:

var

f1, f2: file of char;

c: char;

k: integer;

begin

assign (f1, 'c:\file1.txt');

reset (f1);

assign (f2, 'c:\file2.txt');

rewrite (f2);

k := 0;

while not eof (f1) do begin

read (f1, c);

if (c = 'a') or (c = 'e') or (c = 'u') then begin

write (f2, c);

k := k + 1

end

end;

close (f1);

close (f2);

reset (f2);

while not eof (f2) do begin

read (f2, c);

write (c:2)

end;

writeln;

writeln (k);

readln

end.

Поиск максимального элемента среди минимальных элементов столбцов

Задача:

Дано: целочисленная матрица из n строк и m столбцов.

Найти: максимум из наименьших элементов столбцов.

Алгоритм решения задачи:

Примерный алгоритм решения 1.

  1. Просмотреть каждый столбец. Наименьший элемент каждого столбца сохранить в одномерном массиве.

  2. Найти максимальное значение в одномерном массиве.

Примерный алгоритм решения 2.

  1. Найти наименьший элемент первого столбца и предположить, что он максимальный (записать в переменную).

  2. Найти наименьший элемент второго столбца. Сравнить его с предыдущим наименьшим. Если больше, заменить значение переменной. И т.д.

Программа на языке Паскаль:

const

n = 4; m = 5;

var

matrix: array[1..n,1..m] of integer;

max, min, i, j: integer;

begin

randomize;

for i := 1 to n do begin

for j := 1 to m do begin

matrix[i,j] := random(100);

write(matrix[i,j]:3);

end;

writeln;

end;

max := 0; {максимум среди минимумов}

for j := 1 to m do begin {просмотр столбцов}

min := matrix[1,j]; {предполагаем, что первый в столбце минимален}

for i := 2 to n do {просматриваем столбец построчно}

if matrix[i,j] < min then

min := matrix[i,j]; {замена минимума}

if min > max then

max := min {замена максимума}

end;

writeln(max);

readln

end.