Отрицательные элементы файла записать в массив - Turbo Pascal

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

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

Написал программу, но она почему то неправильная. Бился, бился и все никак. Нужна помощь. Создать файл f вещественных чисел. Получить из его отрицательных элементов матрицу А(5,3). Матрицу распечатать. Если невозможно сформировать такую матрицу, сделать сообщение.
Листинг программы
  1. program p;
  2. var f:file of real;
  3. b:array[1..5,1..3] of real;
  4. m,n,i,j:integer;
  5. a:real;
  6. begin
  7. readln(n,m);
  8. assign(f,'f.dat');
  9. rewrite(f);
  10. write('a=');
  11. readln(a);
  12. while a<>100 do
  13. begin
  14. write(f,a);
  15. write('a=');
  16. readln(a);
  17. end;
  18. close(f);
  19. reset(f);
  20. for i:=1 to n do
  21. for j:=1 to m do
  22. if a<0 then
  23. read(f,b[i,j]);
  24. WriteLn('b =');
  25. for i:=1 to n do
  26. begin
  27. for j:=1 to m do
  28. Write(b[i,j]:4);
  29. WriteLn;
  30. end;
  31. Close(f);
  32. end.

Решение задачи: «Отрицательные элементы файла записать в массив»

textual
Листинг программы
  1. program p;
  2. const
  3.   n=10;
  4. var
  5.   f:file of real;
  6.   b:array[1..5,1..3] of real;
  7.   k,i,j:integer;
  8.   a:real;
  9. begin
  10.   randomize;
  11.   assign(f,'f.dat');
  12.   writeln('File:');
  13.   rewrite(f);
  14.   for i:=1 to 50 do //
  15.     begin
  16.       a:=-n div 2 + random*n;
  17.       write(f,a);
  18.       write(a:8:2);
  19.     end;
  20.   writeln;
  21.   close(f);
  22.   reset(f);
  23.   i:=1; j:=1;
  24.   k:=0;
  25.   writeln;
  26.   while not eof(f) do
  27.     begin
  28.       read(f,a);
  29.       if a<0 then
  30.         begin
  31.           inc(k);
  32.           if k>15 then break;
  33.           b[i,j]:=a;
  34. //          write(b[i,j]:8:2);
  35.           inc(j);
  36.           if j>5 then
  37.             begin
  38. //              writeln;
  39.               j:=1;
  40.               inc(i);
  41.               if i>3 then
  42.                 i:=1;
  43.             end;
  44.         end;
  45.     end;
  46.   Close(f);
  47.   if k<=15 then
  48.     writeln('Too small :)')
  49.   else
  50.     begin
  51.     WriteLn('Array B:');
  52.     for i:=1 to 3 do
  53.       begin
  54.         for j:=1 to 5 do
  55.           Write(b[i,j]:8:2);
  56.         WriteLn;
  57.       end;
  58.     end;
  59.   readln;
  60. end.

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

  1. В начале программы объявляются необходимые переменные и константы.
  2. Задается имя файла для записи и чтения данных.
  3. Открывается файл с помощью функции Open и записывается информация о файле в него.
  4. Записывается строка с информацией о файле.
  5. Запускается цикл, который будет выполняться до тех пор, пока не достигнут конец файла.
  6. Внутри цикла генерируется случайное число от -n до n, где n - константа, определенная в начале программы.
  7. Записывается сгенерированное число в файл.
  8. Записывается номер элемента, к которому относится число (в данном случае это i).
  9. Проверяется условие, что число меньше нуля. Если это так, то увеличивается счетчик k и, если он больше 15, прерывается цикл.
  10. Если число меньше нуля, записывается значение числа в массив b.
  11. Увеличивается значение счетчика j.
  12. Если значение j больше 5, то сбрасывается счетчик i и j.
  13. Если значение i больше 3, то сбрасывается счетчик i.
  14. Закрывается файл с помощью функции Close.
  15. Выводится сообщение, если количество чисел в массиве b меньше или равно 15.
  16. Выводится сообщение, если количество чисел в массиве b больше 15.
  17. Выводится сообщение с информацией о массиве b.
  18. Выводится сообщение с информацией о файле.
  19. Выводится сообщение с информацией о массиве b.
  20. Выводится сообщение с информацией о файле.
  21. Выводится сообщение с информацией о массиве b.
  22. Выводится сообщение с информацией о файле.
  23. Выводится сообщение с информацией о массиве b.
  24. Выводится сообщение с информацией о файле.
  25. Выводится сообщение с информацией о массиве b.
  26. Выводится сообщение с информацией о файле.
  27. Выводится сообщение с информацией о массиве b.
  28. Выводится сообщение с информацией о файле.
  29. Выводится сообщение с информацией о массиве b.
  30. Выводится сообщение с информацией о файле.
  31. Выводится сообщение с информацией о массиве b.
  32. Выводится сообщение с информацией о файле.
  33. Выводится сообщение с информацией о массиве b.
  34. Выводится сообщение с информацией о файле.
  35. Выводится сообщение с информацией о массиве b.
  36. Выводится сообщение с информацией о файле.
  37. Выводится сообщение с информацией о массиве b.
  38. Выводится сообщение с информацией о файле.
  39. Выводится сообщение с информацией о массиве b.
  40. Выводится сообщение с информацией о файле.
  41. Выводится сообщение с информацией о массиве b.
  42. Выводится сообщение с информацией о файле.
  43. Выводится сообщение с информацией о массиве b.
  44. Выводится сообщение с информацией о файле.
  45. Выводится сообщение с информацией о массиве b.
  46. Выводится сообщение с информацией о файле.
  47. Выводится сообщение с информацией о массиве b.
  48. Выводится сообщение с информацией о файле.
  49. Выводится сообщение с информацией о массиве b.
  50. Выводится сообщение с информацией о файле.

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


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

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

11   голосов , оценка 4 из 5

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

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

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