Файл: посчитать количество чисел в файле - Pascal
Формулировка задачи:
Function cin_word(f:intfile):integer;
var
cnt, a: integer;
begin
reset(f);
while not eof(f) do
begin
read(f, a);
inc(cnt);
end;
end;
Ну в общем, как посчитать количество чисел в файле(file of integer), что бы выдавала такие данные, опять же к примеру:
Тестовые данные:
{file (1 5 8 8 11 11 11 17 19 25)
cnt:= 10}
Решение задачи: «Файл: посчитать количество чисел в файле»
textual
Листинг программы
Type
intfile = file of integer;
Var
fname1, fname2, fname3 : string;
f1,f2,f3 : intfile;
procedure createtpfile(var f: intfile);
var
a, n, i: integer;
begin
rewrite(f);
write('Введите колличество элементов файла ');
read(n);
a := 1;
write('Вводите числа для занесения их в файл.');
for i:=1 to n do
begin
read(a);
write(f,a);
end;
close(f)
end;
function cinword(var f: intfile): integer;
begin
reset(f);
cinword:= FileSize(f);
close(f)
end;
procedure bsort(n:integer; arr: array of integer);
var
i, j, f: integer;
begin
for i := 1 to n-1 do
for j := 1 to n-i do
if arr[j] > arr[j+1] then
begin
f := arr[j];
arr[j] := arr[j+1];
arr[j+1] := f;
end;
end;
procedure association(var f1, f2, f3:intfile);
var
arr: array of integer;
i, n, c: integer;
begin
n:= cinword(f1) + cinword(f2);
write(n);
SetLength(arr, n);
i:= 0;
reset(f1);
while not eof(f1) do
begin
read(f1, arr[i]);
inc(i);
end;
close(f1);
reset(f2);
while not eof(f2) do
begin
read(f2, arr[i]);
inc(i);
end;
close(f2);
bsort(n, arr);
rewrite(f3);
for c := 1 to n-1 do
write(f3,arr[c]);
close(f3);
end;
begin
write('Введите имя первого файла для создания и обработки ');
readln(fname1);
write('Введите имя втогоро файла для создания и обработки ');
readln(fname2);
write('Введите имя третьего файла для записи результата ');
readln(fname3);
assign(f1, fname1);
assign(f2, fname2);
assign(f3, fname3);
createtpfile(f1);
createtpfile(f2);
association(f1, f2, f3);
end.
Объяснение кода листинга программы
- Объявляются тип
intfileдля файлов целых чисел и переменныеfname1,fname2,fname3типа string для хранения имён файлов. - Объявляются переменные
f1,f2,f3типаintfileдля хранения файлов. - В процедуре
createtpfileсоздаётся файл и заполняется указанным количеством чисел, которые пользователь вводит в консоли. - В функции
cinwordпроисходит считывание количества чисел в файле. - Процедура
bsortсортирует массив целых чисел по возрастанию. - В процедуре
associationсоздаётся массив, в который записываются числа из двух файлов, сортируется с использованием процедурыbsort, и затем записывается в третий файл. - В главной программе происходит ввод имен файлов, создание файлов с помощью процедуры
createtpfileи объединение файлов с помощью процедурыassociation.