Файл: посчитать количество чисел в файле - 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 (1 5 8 8 11 11 11 17 19 25) cnt:= 10}
Ну в общем, как посчитать количество чисел в файле(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.

Объяснение кода листинга программы

  1. Объявляются тип intfile для файлов целых чисел и переменные fname1, fname2, fname3 типа string для хранения имён файлов.
  2. Объявляются переменные f1, f2, f3 типа intfile для хранения файлов.
  3. В процедуре createtpfile создаётся файл и заполняется указанным количеством чисел, которые пользователь вводит в консоли.
  4. В функции cinword происходит считывание количества чисел в файле.
  5. Процедура bsort сортирует массив целых чисел по возрастанию.
  6. В процедуре association создаётся массив, в который записываются числа из двух файлов, сортируется с использованием процедуры bsort, и затем записывается в третий файл.
  7. В главной программе происходит ввод имен файлов, создание файлов с помощью процедуры createtpfile и объединение файлов с помощью процедуры association.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.75 из 5
Похожие ответы