Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Листинг 3.7. Использование операторов break и continue



1. #include <iostream>

2. int main()

3. {

4. using namespace std;

5. unsigned short small;

6. unsigned long large;

7. unsigned long skip;

8. unsigned long target;

9. const unsigned short MAXSMALL=6553 5;

10.

11.cout << "Enter a small number: ";

12.cin >> small;

13.cout << "Enter a large number: ";

14.cin >> large;

15.cout << "Enter a skip number: ";

16.cin >> skip;

17.cout << "Enter a target number: ";

18.cin >> target;

19.cout << endl;

20.

21.// проверить два условия выхода

22.while (small < large && small < MAXSMALL)

23.{

24. sma11 + +;

25. if(small%skip==0)// пропустить декремент?

26. cout << "skipping on " << small << endl;

27. continue;

28.}

29.if (large == target) // результат угадан?

30. {

31. cout << "Target reached!";

32. break;

33. }

34.large-=2;

35.} // конец цикла while

36.cout << "\nSmall: " << small <<

37. " Large: " << large << endl;

38.return 0;

39. }

Результат

Enter a small number: 2

Enter a large number: 20

Enter a skip number: 4

Enter a target number: 6

skipping on 4

skipping on 8

Small: 10 Large: 8

Анализ

Как можно заметить, игра закончилась поражением пользователя, поскольку меньшее значение превысило большее, а результат оказался равен 8-ми, а не 6-ти.

В строке 22 проверяются условия выхода из цикла. Если значение переменной small меньше значения large и не превышает максимально допустимое значение, то тело цикла выполняется.

В строке 25 вычисляется остаток от деления значения переменной small на значение skip. Если значение small кратно skip, то оператор continue возвращает выполнение программы к началу цикла (строка 22), пропуская декремент переменной large и ее проверку на соответствие ставке игрока.

В строке 29 значение переменной target сравнивается со значением переменной large. Если игрок угадал, и эти значения равны, то игра заканчивается победой пользователя. В этом случае программа выводит сообщение о победе, работа цикла прерывается оператором break и управление передается строке 36.

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

Цикл, организованный в теле другого цикла, называют вложенным. В этом случае внутренний цикл полностью выполняется на каждой итерации внешнего. Листинг 3.8 демонстрирует заполнение элементов матрицы с помощью вложенного цикла for.

Листинг 3.8. Вложенный цикл for

1. #include <iostream>

2. using namespace std;

3. int main()

4. {

5. int rows, columns;

6. char theChar;

7. cout << "How many rows? ";

8. cin >> rows;

9. cout << "How many columns? ";

10.cin >> columns;

11.cout << "What character? ";

12.cin >> theChar;

13.for (int i=0; i<rows; i++)

14.{

15. for (int j=0; j<columns; j++)

16. cout << theChar;

17. cout << endl;

18.}

19.return 0;

20.}

Результат

How many rows? 4

How many columns? 12

What character? x

xxxxxxxxxxxx

xxxxxxxxxxxx

xxxxxxxxxxxx

Анализ

В начале программы пользователю предлагается ввести количество строк и столбцов, а также символ, которым будет заполнена матрица. Первый, внешний цикл for в строке 13, инициализирует счетчик (i) значением 0. Затем следует его тело.

В первой строке тела внешнего цикла (строка 15) инициализируется еще один цикл. Переменной j присваивается значение 0, и начинается выполнение тела внутреннего цикла. В строке 16 на экран выводится символ, введенный в начале программы. Заметьте, что внутренний цикл for содержит только один оператор (вывод символа). Затем проверяется условие (j<columns) и, если оно истинно, значение переменной j увеличивается на единицу, а на экран выводится следующий символ. Так продолжается до тех пор, пока значение переменной j не станет равно количеству столбцов.

После вывода на экран 12-ти символов х условие внутреннего цикла оказывается ложным, и управление передается в строку 16, где на экран выводится символ новой строки. После этого проверяется условие внешнего цикла (i<rows) и, если оно истинно, то значение счетчика i увеличивается, и тело внешнего цикла выполняется снова.

При второй итерации внешнего цикла опять выполняется внутренний цикл. Переменной j снова присваивается нулевое значение, и все операции внутреннего цикла повторяются сначала.

Принцип вложенных циклов заключается в том, что при каждой итерации внешнего цикла внутренний выполняется полностью. Таким образом, отображаемый символ выводится по колонкам для каждой строки.

Упражнения

1. Напишите выражение, использующее операцию отношения, результатом которого является истина, если значения переменных george и sally не равны.

2. Напишите ветвление if, печатающее слово Yes в случае, если значение переменной age больше, чем 21.

3. Напишите ветвление if...else, которое выводит на экран слово Yes, если значение переменной age больше, чем 21, и слово No в противном случае.

4. Назовите и опишите основное назначение каждого из трех выражений, входящих в состав оператора цикла for.

5. Создайте цикл while, который будет выводить на экран чисел от 100 до 110.

6. Создайте цикл do..while, который будет выводить на экран сумму чисел от 10 до 11.





Дата публикования: 2015-11-01; Прочитано: 451 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.01 с)...