@DivineDraft

Почему выводит лишь часть преобразованной матрицы?

После ввода матрицы и ее преобразования, выводится лишь 1 колонка

Program zadacha_4;
const
p=100;
var
a :array [1..p,1..p] of integer; 
n ,m, b :integer;
i , j :integer;

begin
write ('m='); readln (m);
write ('n='); readln (n);
writeln ('Матрица');
for i:=1 to n do
begin
for j:=1 to n do read (a[i,j]);
end;

write('Введенная матрица ');
writeln;
for i:=1 to n do
 begin
    for j:=1 to n do 
      write (a[i,j]:2);
   writeln;
 end;

write('Преобразование матрицы ');
for i:= 1 to n do
 begin 
 for j:=1 to n do
     if a[i,j]<0 then b:=-1
     else if a[i,j]>0 then b:=1;
 writeln;
  write(b:2);
 end; 


end.


Так понимаю, ошибка непосредственно в преобразовании, ибо обращаюсь лишь к одному элементу, скорее всего. Пробовал меня значения - бесконечные ошибки.
  • Вопрос задан
  • 72 просмотра
Решения вопроса 1
AnnTHony
@AnnTHony
Интроверт
program transformation;
var
  matrix: array of array of integer;
  n, m: integer;
  i, j: integer;
begin
  Write ('M = ');
  ReadLn (m);
  Write ('N = ');
  ReadLn (n);
  
  // Создание размера динамического массива
  SetLength(matrix, m);
  for i := 0 to m - 1 do
    SetLength(matrix[i], n);
  
  // Заполнение матрицы
  Randomize;
  for i := 0 to m - 1 do
    for j := 0 to n - 1 do
      matrix[i, j] := Random(-100, 100);
  
  // Вывод получившейся матрицы
  WriteLn();
  WriteLn('Исходная матрица:');
  WriteLn();
  for i := 0 to m - 1 do
    begin
      for j := 0 to n - 1 do
        Write(matrix[i, j]:5);
      WriteLn();
    end;
  
  // Преобразование матрицы
  WriteLn();
  WriteLn('Преобразованная матрица:');
  WriteLn();
  for i := 0 to m - 1 do
    begin
      for j := 0 to n - 1 do
        begin
          if matrix[i, j] < 0 then
            matrix[i, j] := -1;
          if matrix[i, j] > 0 then
            matrix[i, j] := 1;
          Write(matrix[i, j]:3);
        end;
      WriteLn();
    end;
end.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы