Пример 6.1. В заданной целочисленной матрице A(N, M) найти количество строк, содержащих нули.

Тест

Данные Результат
N M Матрица А К
3 3  2

 

Школьный АЯ
алг Строки с нулями (арг цел N, M, 
        арг цел таб A[1:N, 1:M], рез цел K)
   дано | N>0, M>0
нач цел i, j, лит Flag
  K := 0
  нц для i от 1 до N | цикл по всем строкам
    j:= 1; Flag := "Нет"
    нц пока (j <= M) и (Flag = "Нет")
           | цикл до нулевого элемента строки
       если A[i, j] = 0 
          то Flag:="Да"; K:=K+1
          иначе j:=j+1
       все
    кц
  кц
кон 

Исполнение алгоритма
Обозначение проверяемого условия:
(j<=M) и (Flag = "Нет" )  => (1)

i Flag j (1) A[i,j]=0 K
1 "Нет"
"Да"
1
2
+
+

-(кц)
-
+
0
1
2 "Нет" 1
2

3

4
+
+

+

-(кц)
-
-

-
 
3 "Нет"
"Да"
1 +
-(кц)
+ 2

Turbo Pascal
Program ContainZero;
  Uses Crt;
  Var A          : Array[1..10, 1..10] of Integer;
      N, M, i, j : Integer;
      K          : Integer; {K - количество строк, содержащих нули} 
{--------------------------------------------}
Procedure InputOutput; {описание процедуры ввода-вывода данных}
Begin
  ClrScr;
  Write('Количество строк - '); ReadLn(N);
  Write('Количество столбцов - '); ReadLn(M);
  For i := 1 to N do
    For j := 1 to M do
      begin Write('A[' , i , ' , ' , j , ']= ? ');
            ReadLn(A[i, j])
      end;

  WriteLn;  WriteLn('Исходная матрица :');
  For i := 1 to N do
    begin
      For j := 1 to M do Write(A[i, j] : 5);
      WriteLn
    end; WriteLn
End; { of InputOutput }
{--------------------------------------------}
Function Zero(i:Integer):Boolean; {описание функции, принимающей        }
   Var Flag : Boolean;            {значение Истина, если в строке есть  }
Begin                             {нули, и Ложь, если в строке нет нулей}
  j:=1; Flag:=FALSE;
  While
(j<=M) and not Flag do
    If
A[i, j]=0 then Flag:=TRUE else j:=j+1;
  Zero:=Flag               {значение функции присваивается имени функции}
End;
{--------------------------------------------}
BEGIN
  InputOutput; {вызов процедуры ввода-вывода}
  K:=0;
  For i := 1 to N do 
    If
Zero(i) then K:=K+1;       {Zero(i) - указатель функции Zero}
  WriteLn('Количество строк, содержащих нули, равно ', K); ReadLn
END.


QBasic

CLS
INPUT "Количество строк - ", N
INPUT "Количество столбцов - ", M : DIM A(N, M)
FOR i = 1 TO N
  FOR j = 1 TO M
    PRINT "A(" ; i ; ", " ; j ; ") = " ;
    INPUT A(i, j)
  NEXT j
NEXT i : CLS
 
PRINT "Исходная матрица :" : PRINT
FOR i = 1 TO N
  FOR j = 1 TO M
    PRINT A(i, j) ;
  NEXT j : PRINT
NEXT i : PRINT

K = 0 
FOR i = 1 TO N                'цикл по всем строкам
  j = 1 : Flag = 0
  WHILE
(j <= M) AND ( Flag = 0 ) 'цикл до нулевого элемента строки
    IF
A(i, j) = 0 THEN Flag = 1: K = K + 1 ELSE j = j + 1
  WEND
NEXT i

PRINT "О т в е т : строк, содержащих нули, " ; K ; "."
END

Другие записи

10.06.2016. Пример 6.2. Дана целочисленная матрица A(N, M). Определить, встречается ли заданное целое K среди максимальных элементов столбцов этой матрицы.
Система тестов Номер теста Проверяемый случай Данные Результат K N M Матрица А  Otvet 1 Встречается 5 3 3 ''Встречается'' 2 Не встречается 1 2 2 ''Не встречается'' Демонстрация…
10.06.2016. Пример 6.3. Проверить, является ли заданная целочисленная матрица A(N, N) "магическим квадратом" (это значит, что суммы чисел во всех её строках, всех столбцах и двух диагоналях одинаковы).
Система тестов Номер теста Проверяемый случай Данные Результат N Матрица А Otvet 1 Является 3 ''Магический квадрат'' 2 Не является 2 ''Не магический квадрат '' Демонстрация…