Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
new_mb.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
892.42 Кб
Скачать
      1. 2.2.2. Цикл «while»

Цикл «while» инициализируется единственным выражением – условным, при этом проверка условия выполняется перед очередной итерацией. Такой цикл называется циклом с предусловием.

Листинг 2.7. Возведение в степень.

#include <iostream>

using namespace std;

int main (void)

{

unsigned int x;

int y, z = 1;

cin >> y >> x;

while (x--)

z *= y;

cout << z << endl;

return 0;

}

2.2.3. Цикл «do – while»

Цикл «do – while» аналогичен циклу «while», за исключением того, что проверка условия выполняется после тела цикла, в связи с чем «do – while» называется циклом с постусловием, т.е. первая итерация выполняется вне зависимости от истинности условия.

Листинг 2.8. Поиск делителей вводимого числа.

#include <iostream>

using namespace std;

int main (void)

{

unsigned int x;

cin >> x;

unsigned int i = x;

do

cout << i << ( x % i ? " no" : " yes" ) << endl;

while (--i);

return 0;

}

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

В ряде случаев, в особенности при критичности времени вычислений, выполнение отдельных итераций не является необходимым, более того, увеличивает общее время выполнеия. Избежать этих итераций помогает оператор «continue». Другой оператор – «break» – вовсе прекращает выполнение текущего цикла, что также позволяет избежать неоправданного увеличения времени исполнения.

Операторы «continue» и «break» могут использоваться в любых циклах, будь то «while», «for» или «dowhile». Так следующая программа вычисляет квадраты всех четных чисел в интервале введенных значений, пропуская вычисление квадратов нечетных чисел.

Листинг 2.9. Использование инструкций continue и break.

#include <iostream>

using namespace std;

int main (void)

{

unsigned int x, y;

cin >> x >> y;

while (1) {

x++;

if (x % 2)

continue;

if (x >= y)

break;

cout << x << " : " << x*x << endl;

}

return 0;

}

      1. 2.2.5. Вложенность

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

Следующий пример вычисляет .

Листинг 2.10. Применение вложенности циклов при решении задач нахождения сумм и произведений.

#include <iostream>

#include <cmath>

using namespace std;

int main (void)

{

unsigned int n, m;

cin >> n >> m;

double P = 1;

for (int i = 1; i <= n; i++) { //для каждого сомножителя;

double E = 0;

for (int j = 1; j <= m; j++) //для каждого слагаемого;

E += pow(cos(j), i);

P *= E;

}

cout << P << endl;

return 0;

}

Особое внимание стоит уделить расстановке операторных скобок «{}» с тем, чтобы не возникло путаницы вложенности. Операторы «continue» и «break» выполняются для текущего уровня вложенности.

Следующий пример вычисляет .

Листинг 2.11. Использование инструкций continue и break.

#include <iostream>

#include <cmath>

using namespace std;

int main (void)

{

int n, m;

cin >> n >> m;

double E = 0;

for (int i = 1; i <= n; i++) {

double P = 1;

for (int j = 1; j <= m; j++) {

if (j % 3) //пропуск итерации при ;

continue;

P *= j - i;

}

E += P;

}

cout << E << endl;

return 0;

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]