Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОАиП / 5 лаба / ЛекцияПрограммированиеРазвИЦиклов.doc
Скачиваний:
30
Добавлен:
15.04.2015
Размер:
1.54 Mб
Скачать

3. Вложенные циклы

В теле цикла может располагаться еще один цикл. В этом случае говорят, что алгоритм или программа содержат цикл в цикле или вложенные циклы. Общий вид графической схемы цикла в цикле изображен на рис. 3.1. Здесь внешний цикл – цикл с предусловием, внутренний цикл –цикл с постусловием. Рабочая часть внешнего цикла выделена пунктирной линией. Число выполнений команд рабочей части внутреннего цикла может быть найдено как произведение числа повторений внутреннего цикла на число повторений внешнего цикла.

Рис. 3.1. Схема цикла с постусловием в цикле с предусловием

Кратность вложения циклов может равной не только двум, но и трем, четырем и т.д. Следующий пример демонстрирует трехкратное вложение циклов.

Пример 3.2. Определить количество трехзначных, натуральных чисел, сумма цифр которых равнаn.

Решение. Пусть l – искомое количество натуральных трехзначных чисел;i– старшая цифра числа;j – средняя цифра;k– младшая цифра. Тогда сумма цифр трехзначного числа естьi+j+k, гдеi=1, 2, …, 9;j=0, 1, 2, …, 9;k=0, 1, 2, …, 9 (старшая цифра трехзначного числа не может быть нулем). Начальное значениеl=0. Для вычисления всех возможных суммi+j+kорганизуем вложенные циклы (кратность вложения равна трем) с предусловием с параметрамиi,j,k (соответственно). Например, цикл поkв цикле поj, цикл поjв цикле поi(то есть цикл в цикле и еще раз в цикле). В самом внутреннем цикле значениеlбудем увеличивать на единицу, если выполнится условиеi+j+k=n. Графическая схема изложенного алгоритма приведена на рис. 3.2. Рабочие части циклов выделены пунктирными линиями. Рабочей частью самого внутреннего цикла является ветвление с логическим блоком 9. Это ветвление выполнится 900 раз (10*10*9), что равно произведению числа повторений внутреннего, среднего и внешнего циклов. При этом для каждого из значенийi=1, 2, …, 9jпринимает значения 0, 1, 2, …, 9.k принимает значения 0, 1, 2, …, 9 для каждого значенияj.

Текст программы

#include <stdio.h>

#include <iostream.h>

main()

{

int L,i,j,k,n;

L=0;

cout << "\nВведите целое число ";

cin >> n;

for(i=1; i<=9; i++)

for(j=0; j<=9; j++)

for(k=0; k<=9; k++)

if (i+j+k==n) {L=L+1; cout<< "\n" <<i<<j<<k;}

cout<<"\nКоличество трехзначных чисел, сумма цифр которого равна "<<n<<" есть "<<L;

cout << "\n Нажмите любую клавишу \n";

fflush(stdin);

getchar();

return(0);

}

Графическая схема алгоритма

Рис. 3.2. Графическая схема алгоритма задачи 3.2

Литература

              1. Язык С++: Учеб. Пособие / И.Ф. Астахова, С.В. Власов, В.В. Фертиков, А.В. Ларин. – Мн.: Новое знание, 2003. – 203 с.

              2. Страуструп Б. Язык программирования С++. М.; СПб.: БИНОМ – Невский диалект, 1999.

              3. С/С++. Программирование на языке высокого уровня / Т.А. Павловская. – СПб.: Питер, 2002. – 464 с.

              4. Мовшович С.М. Методические указания к лабораторным занятиям по теме "Основы алгоритмизации. – Гомель: Ротапринт ГПИ, 1988. – 25 с.

              5. Касаткин А.И.; Вальвачев А.Н. Профессиональное программирование на языке С++: От TurboCкBorlandC++: Справ. пособие; Под общ. Ред. А.И. Касаткина. – Мн.: Выш. шк., 1992. – 240 с.

Содержание

  1. Программирование разветвляющихся алгоритмов

    1. Понятие разветвляющегося алгоритма и программы

    2. Логические выражения

    3. Оператор if

    4. Разработка разветвляющихся алгоритмов и программ

    5. Программирование разветвляющихся алгоритмов

    6. Команда выбора. Операторы switch и break

  2. Программирование циклических алгоритмов.

    1. Операторы циклов

      1. Оператор цикла for

      2. Оператор цикла while

      3. Оператор цикла do-while

    2. Вложенные циклы

Литература

30