В строке матрицы, содержащей максимальный элемент, заменить все отрицательные числа нулями - Turbo Pascal

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

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

Добрый день! Подскажите, пожалуйста, что я сделала неправильно. Задание звучит так: Сформировать двумерный массив F размером 4 x 8 с помощью генератора случайных чисел и вывести элементы массива на экран и в файл. В строке матрицы F, содержащей максимальный элемент, заменить все отрицательные числа нулями (оформить нахождение максимального элемента в виде функции). Вывести на экран и в файл номер этой строки и максимальный элемент.
Листинг программы
  1. program Project1;
  2. type
  3. mass=array [1..4,1..8] of real;
  4. var
  5. x,y: integer;
  6. procedure preobr (maximum:real;var a:mass);
  7. var
  8. nomer_stroki:1..4;
  9. begin
  10. for x := 1 to 4 do
  11. for y := 1 to 8 do
  12. if maximum=a[x,y] then nomer_stroki:=x;
  13. for y := 1 to 8 do
  14. if a[nomer_stroki,y]<0 then a[nomer_stroki,y]:=0;
  15. end;
  16. function max (b:mass): real;
  17. var
  18. x,y: integer;
  19. max1:real;
  20. begin
  21. max1:=b[1,1];
  22. for x:=1 to 4 do
  23. for y:=1 to 8 do
  24. if b[x,y]>max1 then max1:=b[x,y];
  25. max:=max1;
  26. end;
  27. var
  28. c: text;
  29. max_element: real;
  30. f:mass;
  31. begin
  32. assign (c,'C:\text.txt');
  33. rewrite (c);
  34. randomize;
  35. for x:=1 to 4 do
  36. for y:=1 to 8 do
  37. f[x,y]:=random*20-10;
  38. for x:=1 to 4 do
  39. begin
  40. for y:=1 to 8 do
  41. begin
  42. write (f[x,y]:2:0);
  43. end;
  44. writeln;
  45. writeln(c)
  46. end;
  47. max_element:=max (f);
  48. preobr (max_element,f);
  49. writeln ('max element= ',max_element:2:0,' v stroke: ',x);
  50. writeln (c,max_element:2:0);
  51. writeln (c,x);
  52. close (c);
  53. for x:=1 to 4 do
  54. begin
  55. for y:=1 to 8 do
  56. begin
  57. write (f[x,y]:2:0);
  58. end;
  59. writeln;
  60. end;
  61. readln;
  62. end.
После выполнения программы всегда пишет, что максимальный элемент в строке 4 и почему-то через раз заменяет отрицательные числа на нули(

Решение задачи: «В строке матрицы, содержащей максимальный элемент, заменить все отрицательные числа нулями»

textual
Листинг программы
  1. uses crt;
  2. const m=4;
  3.       n=8;
  4. type mass=array [1..m,1..n] of real;
  5. procedure matrix(var a:mass;var f:text);
  6. var i,j:byte;
  7. begin
  8. writeln('Исходная матрица');
  9. writeln(f,'Matrix');
  10. for i:=1 to m do
  11.  begin
  12.   for j:=1 to n do
  13.    begin
  14.     a[i,j]:=-5+11*random;
  15.     write(a[i,j]:6:2);
  16.     write(f,a[i,j]:6:2);
  17.    end;
  18.   writeln;
  19.   writeln(f);
  20.  end;
  21. end;
  22. function max (a:mass;var s:byte):real;
  23. var i,j:byte;
  24.     mx:real;
  25. begin
  26. mx:=a[1,1];
  27. s:=1;
  28. for i:=1 to m do
  29. for j:=1 to n do
  30. if a[i,j]>mx then
  31.  begin
  32.   mx:=a[i,j];
  33.   s:=i;
  34.  end;
  35. max:=mx;
  36. end;
  37. procedure preobr (var a:mass;var f:text);
  38. var i,j,s:byte;
  39.     x:real;
  40. begin
  41. x:=max(a,s);
  42. writeln('Максимальный элемент=',x:0:2,' в строке ',s);
  43. writeln(f,'max=',x:0:2,' Nstr=',s);
  44. writeln('Измененная матрица');
  45. writeln(f,'New matrix');
  46. for i:=1 to m do
  47.  begin
  48.   for j:=1 to n do
  49.    begin
  50.     if(i=s)and(a[i,j]<0) then a[i,j]:=0;
  51.     write(a[i,j]:6:2);
  52.     write(f,a[i,j]:6:2);
  53.    end;
  54.   writeln;
  55.   writeln(f);
  56.  end;
  57. end;
  58.  
  59. var c: text;
  60.     f:mass;
  61. begin
  62. clrscr;
  63. assign (c,'text.txt'); папку с программмой}
  64. rewrite (c);
  65. randomize;
  66. matrix(f,c);
  67. preobr(f,c);
  68. readln;
  69. end.

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

  1. В строке матрицы, содержащей максимальный элемент, заменить все отрицательные числа нулями.
  2. Исходная матрица.
  3. Вывести матрицу.
  4. Найти максимальное значение в матрице.
  5. Записать максимальное значение и его строку в текстовый файл.
  6. Заменить все отрицательные числа в строке нулями.
  7. Вывести измененную матрицу.
  8. Записать измененную матрицу в текстовый файл.

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


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

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

9   голосов , оценка 4.444 из 5

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

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

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