В строке матрицы, содержащей максимальный элемент, заменить все отрицательные числа нулями - Turbo Pascal
Формулировка задачи:
Добрый день! Подскажите, пожалуйста, что я сделала неправильно. Задание звучит так:
Сформировать двумерный массив F размером 4 x 8 с помощью генератора случайных чисел и вывести элементы массива на экран и в файл. В строке матрицы F, содержащей максимальный элемент, заменить все отрицательные числа нулями (оформить нахождение максимального элемента в виде функции). Вывести на экран и в файл номер этой строки и максимальный элемент.
После выполнения программы всегда пишет, что максимальный элемент в строке 4 и почему-то через раз заменяет отрицательные числа на нули(
Решение задачи: «В строке матрицы, содержащей максимальный элемент, заменить все отрицательные числа нулями»
textual
Листинг программы
uses crt;
const m=4;
n=8;
type mass=array [1..m,1..n] of real;
procedure matrix(var a:mass;var f:text);
var i,j:byte;
begin
writeln('Исходная матрица');
writeln(f,'Matrix');
for i:=1 to m do
begin
for j:=1 to n do
begin
a[i,j]:=-5+11*random;
write(a[i,j]:6:2);
write(f,a[i,j]:6:2);
end;
writeln;
writeln(f);
end;
end;
function max (a:mass;var s:byte):real;
var i,j:byte;
mx:real;
begin
mx:=a[1,1];
s:=1;
for i:=1 to m do
for j:=1 to n do
if a[i,j]>mx then
begin
mx:=a[i,j];
s:=i;
end;
max:=mx;
end;
procedure preobr (var a:mass;var f:text);
var i,j,s:byte;
x:real;
begin
x:=max(a,s);
writeln('Максимальный элемент=',x:0:2,' в строке ',s);
writeln(f,'max=',x:0:2,' Nstr=',s);
writeln('Измененная матрица');
writeln(f,'New matrix');
for i:=1 to m do
begin
for j:=1 to n do
begin
if(i=s)and(a[i,j]<0) then a[i,j]:=0;
write(a[i,j]:6:2);
write(f,a[i,j]:6:2);
end;
writeln;
writeln(f);
end;
end;
var c: text;
f:mass;
begin
clrscr;
assign (c,'text.txt'); {в папку с программмой}
rewrite (c);
randomize;
matrix(f,c);
preobr(f,c);
readln;
end.
Объяснение кода листинга программы
- В строке матрицы, содержащей максимальный элемент, заменить все отрицательные числа нулями.
- Исходная матрица.
- Вывести матрицу.
- Найти максимальное значение в матрице.
- Записать максимальное значение и его строку в текстовый файл.
- Заменить все отрицательные числа в строке нулями.
- Вывести измененную матрицу.
- Записать измененную матрицу в текстовый файл.