zadach519.PAS

{* Задача 519 *}

Unit ZADACH519;
Interface
Implementation
Begin
 writeln('В заданном двумерном массиве a[1..m, 1..n] заменить нулями элементы, стоящие в строках и столбцах, где имеются нули');
End.

Program zadach519;

Uses zadach519.pas; {* Эту строку можно удалить *}
Uses Crt; {* Подключение модулей *}
Const {* Константы *}
  m = 6;
  n = 5;
Var {* В работе нам потребуются переменные: *}
  a : Array [1..m, 1..n] Of Word;
  i : Word;
  j : Word;
  b : Array [1..100] Of Word;
Begin
  ClrScr; {* Стираем всё с экрана *}
  Writeln; {ввод массива}
  writeln('Введите матрицу: ');
  For i := 1 To m Do {* Переменная i увеличивается с 1 до m *}
  Begin
    b[i] := 0;
    For j := 1 To n Do {* Цикл для j => [1 .. n] *}
    Begin
      gotoxy(j * 4, i + 2);
      read(a[i, j]); {заполнение вспомогательного массива особым способом}
      If a[i, j] = 0 Then
        b[i] := b[i] * 10 + j;
    End;
    
  End;
  writeln; {обнуление исходного массива}
  For i := 1 To m Do {b[i]=0 признак того что ничего занулять не надо}
    If b[i]0 Then
    Begin
      While b[i]0 Do
      Begin
        For j := 1 To n Do {* Увеличиваем j от 1 до n с шагом 1 *}
          a[i, j] := 0; {обнуление столбца содержащего 0}
        For j := 1 To m Do {* Цикл для j => [1 .. m] *}
          a[j, b[i] Mod 10] := 0;
        b[i] := b[i] Div 10
      End;
      
    End;
  writeln('Результат: ');
  For i := 1 To m Do {* Переменная i увеличивается с 1 до m *}
    For j := 1 To n Do {* Увеличиваем j от 1 до n с шагом 1 *}
    Begin
      gotoxy(j * 4, i + m+4);
      write(a[i, j])
    End;
  ReadKey
End.