Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практика алгоритмизации и программирования.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
517.53 Кб
Скачать

Алгоритмы, реализуемые с помощью вложенных циклов типа для

Язык

Схемы вложенных циклов типа для

Школьный АЯ

  нц для i от A1 до B1         тело внешнего цикла         . . . . . .         нц для j от A2 до B2             тело внутреннего цикла              . . . . . .         кц        . . . . . .     кц

Pascal

  For i := A1 to B1 do        begin  . . . . . .             For j := A2 to B2 do                begin                      . . . . . .                 end;              . . . . . .         end; 

Basic

  FOR I = A1 TO B1 STEP H1         . . . . . .         FOR J = A2 TO B2 STEP H2              . . . . . .         NEXT J          . . . . . .     NEXT I 

Вложенные циклы типа для особенно часто используются при обработке матриц (двумерных массивов, прямоугольных таблиц) и векторов (одномерных массивов, линейных таблиц):  

 

 

Пример 3.1. Вычислить суммы элементов столбцов заданной матрицы a(n, m). Тест

 

 

Данные

Результат

N=2 

M=2

A=

S=(6,74)

 

Демонстрация

Начало формы

Конец формы

Школьный АЯ 

алг Суммы столбцов (арг цел N, M, арг вещ таб A[1:N, 1:M],

                    рез вещ таб S[1:M])

  дано | N>0, M>0

нач цел i, j

  нц для j от 1 до M | цикл по столбцам

    S[j]:=0

    нц для i от 1 до N | цикл по элементам

      S[j]:=S[j] + A[i, j] |текущего столбца

    кц

  кц

кон

Исполнение алгоритма    

j

i

S[i]

 

1

 

 

1

2

S1=0  S1=0+2=2  S1=2+4=6

 

2

 

 

1

2

S2=0  S2=0+1=1  S2=1+3=4

 

Блок-схема 

Turbo Pascal

Program SumColumn;

  Uses Crt;

  Var A          : Array [1..10, 1..10] of Real;

      N, M, i, j : Integer;

      S          : Array [1..10] of Real;

  {--------------------------------------------}

  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;

      ClrScr;

      WriteLn(' Матрица А');

      For i := 1 to N do {Вывод матрицы по строкам}

        begin

          For j := 1 to M do Write(A[i, j] : 5 : 1); {вывод i-ой строки}

          WriteLn {перенос курсора на начало следующей строки}

        end; WriteLn

    End; { of InputOutput }

  {--------------------------------------------}

  Procedure SumCol;

    Begin {описание процедуры вычисления сумм элементов столбцов}

      For j := 1 to M do {цикл по столбцам матрицы}

        begin

          S[j] := 0; {обнуление суммы элементов j-го столбца}

          For i := 1 to n do S[j] := S[j] + A[i, j] {накопление суммы}

        end;

    End; { of SumCol }

  {--------------------------------------------}

  Procedure OutResult; {описание процедуры вывода результатов}

    Begin

      Write( 'О т в е т : Суммы элементов столбцов равны ');

      For j := 1 to M do Write(S[j] : 5 : 1); WriteLn; ReadLn

    End; { of OutResult }

  {--------------------------------------------}

BEGIN