Помогите написать программу в паскаль или исправить ошибку в моей программе. В матрице имеются как положительные так и отрицательные элементы.Если отрицательных элементов больше половины, то значение элементов четных строк удво...

Помогите написать программу в паскаль или исправить ошибку в моей программе. В матрице имеются как положительные так и отрицательные элементы.Если отрицательных элементов больше половины, то значение элементов четных строк удвоить, в противном случае удвоить значения элементов только последнего столбца. моя программа: f:text; begin assign (f,'informat8.txt'); reset(f); writeln( 'исходная матрица'); for i:=1 to n do begin for j:=1 to n do begin read(F,b[i,j]); write (b[i,j]:8:2); end; writeln; end; writeln; n1:=0; for i:=1 to n do for j:=1 to n do if b[i,j]<0 then n1:=n1+1; if n>=round(n/2) then begin for i:=1 to n do begin if not odd(i) then begin for j:=1 to n do b[i,j]:=b[i,j]*2; end; end; end; for i:= 1 to n do b[i,j]:=b[i,j]*2; writeln ('результирующая матрица'); for i:= 1 to n do begin for j:= 1 to n do write (b[i,j]:8:2); write; end; writeln('n=',n); end.
Гость
Ответ(ы) на вопрос:
Гость
var   f: text;   i, j, n, n1: integer;   matrix: array[,] of real; begin   assign(f, 'informat8.txt');   reset(f);   //найдём количество строк в матрице   while not eof(f) do    begin     readln(f);     inc(n);   end;   writeln('исходная матрица размерности ', n, 'x', n);   //инициализируем массив (размерность узнали выше)   matrix := new real[n, n];   reset(f);   // далее работаем с матрицей размерности [0..n-1] (инициализация происходит, начиная с 0)   for i := 0 to n - 1 do   begin     for j := 0 to n - 1 do     begin       read(f, matrix[i, j]);       write(matrix[i, j]:8:2);     end;     readln(f);     writeln;   end;   writeln;   n1 := 0;   for i := 0 to n - 1 do     for j := 0 to n - 1 do       if matrix[i, j] < 0 then inc(n1);   if n1 > round(n * n / 2) then   begin     writeln('Отрицательных элементов больше половины');     //удваиваем элементы в чётных строках     for i := 0 to n - 1 do     begin       if odd(i) then begin         for j := 0 to n - 1 do            matrix[i, j] := matrix[i, j] * 2;       end;     end;   end else   begin     writeln('Отрицательных элементов меньше половины или ровно половина');     //удваиваем элементы последнего столбца     for i := 0 to n - 1 do       matrix[i, n - 1] := matrix[i, n - 1] * 2;   end;     writeln('результирующая матрица');   for i := 0 to n - 1 do  begin     for j := 0 to n - 1 do       write(matrix[i, j]:8:2);     writeln;   end; end. Результат работы:
Не нашли ответ?
Ответить на вопрос
Похожие вопросы