Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Чтение из текстового файла "числовой" информации в числовой массив.




 

Пример 1.

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

 

23 45 56

12 56 29

43 18 999

444 21 19

222 12 18

 

Мы хотим считать эту таблицу из файла в двумерный массив z.

Данный способ удобен, если имеется множество однотипных столбцов.

 

procedure TForm1.Button4Click(Sender: TObject);

var

i,j:integer; x: integer;

z:array[1..5,1..3] of integer;

f:TextFile;

begin

AssignFile(f,'MyInputMatrix.txt');

reset(f);

for i:=1 to 5 do

begin

for j:=1 to 3 do

begin

read(f,x);

z[i,j]:= x;

end;

end;

CloseFile(f);

end;


Пример 2.

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

 

1 45 56.45

2 56 29.33

3 18 999.34

4 21 19.1

5 12 18.333

 

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

 

procedure TForm1.Button5Click(Sender: TObject);

var

i:integer;

z1: array[1..5] of integer;

z2, z3, zrez: array[1..5] of real;

f:TextFile;

begin

AssignFile(f,'MyInputMatrix.txt');

reset(f);

for i:=1 to 5 do

begin

readln(f,z1[i],z2[i],z3[i]); {читаем сразу строку, а элементы строки представляющие числа, отделенные друг от друга пробелами записываются в соответствующие одномерные массивы z1,z2,z3, причем в зависимости от типа переменных z1,z2,z3 первое число в строке при переводе будут трактоваться как целое, а два следующих как вещественные}

end;

CloseFile(f);

{теперь можно работать с этими массивами, например: }

for i:=1 to 5 do

zrez[i]:= z2[i] / z3[i]; { деление друг на друга соответствующих элементов массивов}

 

end;

 

 

Пример 3.

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

 

1 45 56.45

2 56 29.33

3 18 999.34

4 21 19.1

5 12 18.333

……………..

1000000 34 19.15

 

Файл состоит из 1000000 строк, поэтому нам не разместить такие большие массивы в памяти, но обрабатывать информацию можно построчно.

 

procedure TForm1.Button5Click(Sender: TObject);

var

i:integer;

z1: of integer;

z2, z3, zrez: real;

f1,f2:TextFile;

begin

AssignFile(f1,'MyInputMatrix.txt');

AssignFile(f2,'MyOutputMatrix.txt');

 

reset(f1);

rewrite(f2);

while not EOF(f1) do

begin

readln(f1,z1,z2,z3); {читаем сразу строку, а элементы строки представляющие числа, отделенные друг от друга пробелами записываются в соответствующие переменные z1,z2,z3, причем в зависимости от типа переменных z1,z2,z3 первое число в строке при переводе будут трактоваться как целое, а два следующих как вещественные}

 

zrez:= z2 / z3; { деление друг на друга соответствующих элементов строки}

 

writeln(f2, z1:7, zrez:8:2); {сразу записываем строку содержащую номер строки и результат вычисления во второй файл, причем указываем сколько знаков числа будет помещено в строковое представление числа после преобразования из числового представления}

end;

 

CloseFile(f1);

CloseFile(f2);

 

end;

 

3. Вывод: мы приобрели навыки работы с записью и чтением текстовых файлов в Delphi. Познакомились с паскалевским методом доступа и с методом работы с текстовыми файлами через файловые потоки.

 






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных