Написать программу в паскаль или исправить ошибку в моей программе. в матрице имеются как положительные так и отрицательные элементы.если отрицательных элементов больше половины, то значение элементов четных строк удвоить, в противном случае удвоить значения элементов только последнего столбца. моя программа: 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.

cat73309owz9do cat73309owz9do    2   19.07.2019 00:40    4

Ответы
princessss88 princessss88  03.10.2020 07:29
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.

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


Написать программу в паскаль или исправить ошибку в моей программе. в матрице имеются как положитель
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика