Программа 8.5.7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#include
using namespace std;
int main() {
int n, i = 0;
cout << "n = "; cin >> n;
do {
int d;
cin >> d;
if (d / 1000 == 0 and // and можно заменить на &&
d / 100 != 0 and
d % 10 == 7)
++i;
} while (--n);
cout << "i = " << i << endl;
return 0;
}
|
Инструкция break прерывает выполнение циклов while, do while (и for, который мы рассмотрим ниже) и передает управление выполнения программы инструкции, следующей за блоком.
#include
using namespace std;
int main() {
int n, i = 2;
bool f = true;
cout << "n = "; cin >> n;
while (i <= n / 2) {
if (!(n % i)) {
f = false;
break;
}
i++;
}
if (k)
cout << "Число " << n << " простое" << endl;
else
cout << "Число " << n << " не является простым" << endl;
return 0;
}
В отличие от break – continue прерывает выполнение только текущей итерации (то есть, выполнение инструкций тела цикла) и передает выполнение на вычисление условия. При этом инструкции, следующие за continue, игнорируются. Данная инструкция применяется не часто, но может быть использована для контроля состояния допустимости значения выражений в теле цикла.
Следует сказать, что многие разработчики стараются не использовать в циклах эти инструкции. Однако последние повышают читаемость программы.
Например. Постановка задачи. Протабулировать значение функции f(x) = 2/x с шагом 1 на отрезке [-5, 5]
Программа 8.5.9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
#include
#include
using namespace std;
int main() {
int i = -5;
while (i <= 5) {
if (i == 0) {
cout << "В точке 0 - не определена" << endl;
i += 1;
continue;
}
cout << setprecision(2)
<< "x = "
<< setw(2)
<< i
<< setw(10)
<< "f(x) = "
<< setw(5)
<< fixed
<< 2.0 / i
<< endl;
i++;
}
return 0;
}
| Инструкция for
Инструкция for реализует алгоритмическую структуру цикл с параметром (или цикл со счетчиком). Цикл for применяется в том случае, когда в программе, прежде выполнения инструкций тела цикла, становится известным (или заранее определено) количество шагов этого цикла. В блок-схеме инструкция for изображается следующим образом:
Синтаксис:
for (инициализация; условие; модификация) {
Тело цикла;
}
Цикл работает следующим образом:
В начале происходит инициализация переменной-счетчика. Инициализация производится единожды, до выполнения цикла.
Затем проверяется выражение-условие: если выражение имеет значение true, будет выполняться тело цикла.
После выполнения инструкций тела цикла производится модификация (изменение) величины счетчика; обычно для этого используются операции инкремента или декремента.
Вывести натуральные числа от 1 до n.
Программа 8.5.10
1
2
3
4
5
6
7
8
9
10
11
|
#include
#include
using namespace std;
int main() {
int n;
cout << "n = "; cin >> n;
for (int i = 1; i <= n; i++)
cout << i << setw(3);
return 0;
}
| Вложенные циклы
Когда на каждом шаге цикла требуется выполнять некоторые другие циклические операции применяется структура вложенных циклов, т.е. один цикл находится внутри другого цикла. Постановка задачи: Вывести таблицу умножения в шестнадцатеричной системе счисления.
Программа 8.8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
#include
#include
using namespace std;
int main() {
int i = 1;
while (i < 17) {
i++;
int j = 1;
while (j < 17) {
j++;
cout << hex
<< uppercase
<< setw(4)
<< i * j;
}
cout << '\n';
}
return 0;
}
|
1 2 3 4 5 6 7 8 9 A B C D E F 10
2 4 6 8 A C E 10 12 14 16 18 1A 1C 1E 20
3 6 9 C F 12 15 18 1B 1E 21 24 27 2A 2D 30
4 8 C 10 14 18 1C 20 24 28 2C 30 34 38 3C 40
5 A F 14 19 1E 23 28 2D 32 37 3C 41 46 4B 50
6 C 12 18 1E 24 2A 30 36 3C 42 48 4E 54 5A 60
7 E 15 1C 23 2A 31 38 3F 46 4D 54 5B 62 69 70
8 10 18 20 28 30 38 40 48 50 58 60 68 70 78 80
9 12 1B 24 2D 36 3F 48 51 5A 63 6C 75 7E 87 90
A 14 1E 28 32 3C 46 50 5A 64 6E 78 82 8C 96 A0
B 16 21 2C 37 42 4D 58 63 6E 79 84 8F 9A A5 B0
C 18 24 30 3C 48 54 60 6C 78 84 90 9C A8 B4 C0
D 1A 27 34 41 4E 5B 68 75 82 8F 9C A9 B6 C3 D0
E 1C 2A 38 46 54 62 70 7E 8C 9A A8 B6 C4 D2 E0
F 1E 2D 3C 4B 5A 69 78 87 96 A5 B4 C3 D2 E1 F0
10 20 30 40 50 60 70 80 90 A0 B0 C0 D0 E0 F0 100
Достарыңызбен бөлісу: |