Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Глава 6. Алгоритмы, реализуемые с помощью комбинации циклов типа ДЛЯ и ПОКА




Схема циклов типа пока / для Схема циклов типа для / пока

нц пока <условие> нц для i от A до B

тело внешнего цикла тело внешнего цикла

............

нц для i от A до B нц пока <условие>

тело внутреннего цикла тело внутреннего цикла

Кц кц

............

Кц кц

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

Содержащих нули.

Тест

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

Алгоритмический язык

алг Строки с нулями (арг цел 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)

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.






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных