Помогите написать программу в паскаль или исправить ошибку в моей программе. В матрице...

0 голосов
41 просмотров

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


моя программа:
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<br> 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.


Информатика (19 баллов) | 41 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

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.

Результат работы:


image
(3.3k баллов)
0

Спасибо большое !