Файл: посчитать количество чисел в файле - Pascal

Узнай цену своей работы

Формулировка задачи:

Листинг программы
  1. Function cin_word(f:intfile):integer;
  2. var
  3. cnt, a: integer;
  4. begin
  5. reset(f);
  6. while not eof(f) do
  7. begin
  8. read(f, a);
  9. inc(cnt);
  10. end;
  11. 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
Листинг программы
  1. Type
  2.   intfile = file of integer;
  3. Var
  4.   fname1, fname2, fname3 : string;
  5.   f1,f2,f3 : intfile;
  6.  
  7. procedure createtpfile(var f: intfile);
  8. var
  9. a, n, i: integer;
  10. begin
  11. rewrite(f);
  12. write('Введите колличество элементов файла ');
  13. read(n);
  14. a := 1;
  15. write('Вводите числа для занесения их в файл.');
  16. for i:=1 to n do
  17.  begin
  18.   read(a);
  19.   write(f,a);
  20.  end;
  21. close(f)
  22. end;
  23.  
  24. function cinword(var f: intfile): integer;
  25. begin
  26.      reset(f);
  27.      cinword:= FileSize(f);
  28.      close(f)
  29. end;
  30.  
  31. procedure bsort(n:integer; arr: array of integer);
  32. var
  33. i, j, f: integer;
  34. begin
  35.      for i := 1 to n-1 do
  36.         for j := 1 to n-i do
  37.             if arr[j] > arr[j+1] then
  38.             begin
  39.                 f := arr[j];
  40.                 arr[j] := arr[j+1];
  41.                 arr[j+1] := f;
  42.             end;
  43. end;
  44.  
  45. procedure association(var f1, f2, f3:intfile);
  46. var
  47. arr: array of integer;
  48. i, n, c: integer;
  49. begin
  50. n:= cinword(f1) + cinword(f2);
  51. write(n);
  52. SetLength(arr, n);
  53.  
  54. i:= 0;
  55. reset(f1);
  56. while not eof(f1) do
  57. begin
  58.      read(f1, arr[i]);
  59.      inc(i);
  60. end;
  61. close(f1);
  62. reset(f2);
  63. while not eof(f2) do
  64. begin
  65.      read(f2, arr[i]);
  66.      inc(i);
  67. end;
  68. close(f2);
  69. bsort(n, arr);
  70. rewrite(f3);
  71. for c := 1 to n-1 do
  72.     write(f3,arr[c]);
  73. close(f3);
  74. end;
  75.  
  76. begin
  77. write('Введите имя первого файла для создания и обработки ');
  78. readln(fname1);
  79. write('Введите имя втогоро файла для создания и обработки ');
  80. readln(fname2);
  81. write('Введите имя третьего файла для записи результата ');
  82. readln(fname3);
  83. assign(f1, fname1);
  84. assign(f2, fname2);
  85. assign(f3, fname3);
  86. createtpfile(f1);
  87. createtpfile(f2);
  88. association(f1, f2, f3);
  89. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы