Чтение онлайн

на главную - закладки

Жанры

Освой самостоятельно С++ за 21 день.

Либерти Джесс

Шрифт:

1: // Листинг 7.3.

2: // Сложные условия в конструкциях while

3:

4: include <iostream.h>

5:

6: int main

7: {

8: unsigned short small;

9: unsigned long large;

10: const unsigned short MAXSMALL=65535;

11:

12: cout << "Enter a small number: ";

13: cin >> small;

14: cout << "Enter a large number: ";

15: cin >> large;

16:

17: cout << "small: " << small << "...";

18:

19: //

на каждой итерации проверяются три условия

20: while (small < large && large > 0 && small < MAXSMALL)

21: {

22: if (small % 5000 == 0) // после каждых 5000 строк выводится точка

23: cout << ".";

24:

25: small++;

26:

27: large-=2;

28: }

39:

30: cout << "\nSmall: " << small << " Large: " << large << endl;

31: return 0;

32: }

Результат:

Enter а small number: 2

Enter а large number: 100000

small: 2 

Small: 33335 Large: 33334

Анализ: Программа представляет собой простую логическую игру. Вначале предлагается ввести два числа — small и large. После этого меньшее значение увеличивается на единицу, а большее уменьшается на два до тех пор, пока они не "встретятся". Цель игры: угадать число, на котором значения "встретятся".

В строках 12—15 осуществляется ввод значений. В строке 20 проверяется три условия продолжения цикла.

1. Значение переменной small не превышает значения large.

2. Значение переменной large неотрицательное и не равно нулю.

3. Значение переменной small не превышает значения константы MAXSMALL.

Далее, в строке 23, вычисляется остаток от деления числа small на 5000, причем значение переменной small не изменяется. Если small делится на 5000 без остатка, результатом выполнения этой операции будет 0. В этом случае для визуального представления процесса вычислений на экран выводится точка. Затем в строке 26 значение переменной small увеличивается на 1, а в строке 28 значение large уменьшается на 2.

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

Операторы break и continue

Часто бывает необходимо перейти на следующую итерацию цикла еще до завершения выполнения всех операторов тела цикла. Для этого используется оператор continue.

Кроме того, в ряде случаев требуется выйти за пределы цикла, даже если условия продолжения цикла выполняются. В этом случае используется оператор break.

Пример использования этих операторов приведен

в листинге 7.4. Это несколько усложненный вариант уже знакомой игры. В этом случае, кроме меньшего и большего значений, предлагается ввести шаг и целевое значение. Как и в предыдущем примере, на каждой итерации цикла значение переменной small увеличивается на единицу. Значение large уменьшается на два, если меньшее число не кратно значению переменной шага (skip). Игра заканчивается, когда значение переменой small становится больше, чем значение large. Если значение переменной large совпадает с целевым значением (target), выводится сообщение и игра прерывается.

Цель игры состоит в том, чтобы угадать число, в которое "попадет" значение target.

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

1: // Листинг 7.4.

2: // Пример использования операторов break и continue

3:

4: #include <iostream.h>

5:

6: int main

7: {

8: unsigned short small;

9: unsigned long large;

10: unsigned long skip;

11: unsigned long target;

12: const unsigned short MAXSMALL=65535;

13:

14: cout << "Enter a smail number: ";

15: cin >> small;

16: cout << "Enter a large number: ";

17: cin >> large;

18: cout << "Enter a skip number: ";

19: cin >> skip;

20: cout << "Enter a target number; ";

21: cin >> target;

22:

23: cout << "\n"

24:

25: // установка условий продолжения цикла

26: while (small < large && large > 0 && small < MAXSMALL)

27:

28: {

29:

30: small++;

31:

32: if (small % skip == 0) // уменьшить значение large?

33: {

34: cout << "skipping on:" << small << endl;

35: continue;

36: }

37:

38: if (large == target) // проверка попадания в цель

39: {

40: cout << " Target reached!";

41: break;

42: }

43:

44: large-=2;

45: } // конец цикла

46:

47: cout << "\nSmall: " << small << " Large: " << large << endl;

48: return 0;

49: }

Результат:

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

Анализ: Как видим, игра закончилась поражением пользователя, поскольку меньшее значение превысило большее, а цель так и не была достигнута.

Поделиться:
Популярные книги

Случайная свадьба (+ Бонус)

Тоцка Тала
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Случайная свадьба (+ Бонус)

На границе империй. Том 9. Часть 2

INDIGO
15. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 9. Часть 2

Я — Легион

Злобин Михаил
3. О чем молчат могилы
Фантастика:
боевая фантастика
7.88
рейтинг книги
Я — Легион

Последняя Арена 8

Греков Сергей
8. Последняя Арена
Фантастика:
боевая фантастика
рпг
5.00
рейтинг книги
Последняя Арена 8

Страж Кодекса. Книга IV

Романов Илья Николаевич
4. КО: Страж Кодекса
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Страж Кодекса. Книга IV

Бывшие. Война в академии магии

Берг Александра
2. Измены
Любовные романы:
любовно-фантастические романы
7.00
рейтинг книги
Бывшие. Война в академии магии

Вернуть Боярство

Мамаев Максим
1. Пепел
Фантастика:
фэнтези
попаданцы
5.40
рейтинг книги
Вернуть Боярство

Адвокат вольного города 3

Кулабухов Тимофей
3. Адвокат
Фантастика:
городское фэнтези
альтернативная история
аниме
5.00
рейтинг книги
Адвокат вольного города 3

Магия чистых душ 3

Шах Ольга
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Магия чистых душ 3

Скандальный развод, или Хозяйка владений "Драконье сердце"

Милославская Анастасия
Фантастика:
попаданцы
фэнтези
5.00
рейтинг книги
Скандальный развод, или Хозяйка владений Драконье сердце

Свет во мраке

Михайлов Дем Алексеевич
8. Изгой
Фантастика:
фэнтези
7.30
рейтинг книги
Свет во мраке

Возвышение Меркурия. Книга 15

Кронос Александр
15. Меркурий
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 15

Измена. Право на счастье

Вирго Софи
1. Чем закончится измена
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Право на счастье

Как я строил магическую империю

Зубов Константин
1. Как я строил магическую империю
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Как я строил магическую империю