Файл: посчитать количество чисел в файле - 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
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д