На главную

Программирование на языке С++

Цикл while

Упражнения

Листки
Начало
Цикл if/else
Цикл while
Цикл for
Массивы
Строки и тип char
Указатели
Функции
В языке C++ существует три вида циклов: цикл while c предусловием, цикл while с постусловием, цикл for.
Цикл while ("пока") с предусловием
При выполнении цикла while сначала проверяется условие. Если оно ложно, то цикл не выполняется и управление передается на следующую инструкцию после тела цикла while. Если условие истинно, то выполняется инструкция, после чего условие проверяется снова и снова выполняется инструкция. Так продолжается до тех пор, пока условие будет истинно. Как только условие станет ложно, работа цикла завершится и управление передастся следующей инструкции после цикла.
Синтаксис цикла while ("пока") c предусловием такой (обратите внимание на скобки, в которых пишется условие):
while (условие)
инструкция

Если внутри цикла нужно выполнить несколько инструкций, то их нужно объединить в блок при помощи фигурных скобок. Впрочем, даже если ваш цикл состоит из одной инструкции и фигурные скобки не требуются, все равно рекомендуется использовать фигурные скобки для выделения блока цикла. Следующий фрагмент программы напечатает на экран квадраты всех целых чисел от 1 до 10:
n=1;
while(n<=10)
{
cout<<n*n<<endl;
n=n+1;
}

В этом примере переменная n внутри цикла изменяется от 1 до 10. Такая переменная, значение которой меняется с каждым новым проходом цикла, называется счетчиком. Заметим, что после выполнения этого фрагмента значение переменной n будет равно 11, поскольку именно при n==11 условие n<=10 впервые перестанет выполняться.
В следующем примере цикл используется для того, чтобы найти количество знаков в десятичной записи целочисленной переменной n.
int Ndigits=0;
while(n!=0)
{
Ndigits=Ndigits+1;
n=n/10;
}

Внутри цикла значение переменной n уменьшается в 10 раз до тех пор, пока она не станет равна 0. Уменьшение целочисленной переменной в 10 раз (с использованием целочисленного деления) эквивалентно отбрасыванию последней цифры этой переменной. Цикл while ("пока") с постусловием Цикл "пока" с постусловием отличается от цикла с предусловием тем, что сначала выполняется блок цикла, а потом проверяется условие. Если условие истинно, то цикл будет выполнен еще раз, и так до тех пор, пока условие будет истинно. Синтаксис цикла с постусловием такой (обратите внимание на обязательную точку с запятой после условия):
do
инструкция
while (условие);

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

Упражнения

1. По данному n найдите суммы 1+2+...+n, 12+22+...+n2 . Сравните полученные результаты с формулами, известными из курса математического анализа.
2. Напечатайте все точные квадраты натуральных чисел, не превосходящие данного числа n.
3. По данному числу n вычислите число n! .
4. По данным числам n и k вычислите число Ckn
(число сочетаний из n элементов по k).
5. По данному числу n вычислите сумму 4(1-1/3+1/5-1/7+...+(-1)n1/(2n+1)) . К чему будет стремиться эта сумма при росте n?
6. Найдите наибольшее число, которое можно сохранить в переменных типа short, unsigned short, int, unsigned int, long, unsigned long (подсказка: при прибавлении к этому числу единицы получится меньшее число).
7. По данному натуральному числу n определите количество цифр в его десятичной записи. Определите сумму цифр числа n. Найдите наибольшую и наименьшую цифры.
8. Напечатайте представление данного натурального числа n в двоичном виде (можно в обратном порядке).
9. Машинным эпсилоном (точностью) называется такое наибольшее действительное число b , что 1+b=1 . Найдите машинное эпсилон для типов float и double.
10. По данным числам double a и int n вычислите a^n.
11. По данному натуральному числу n найдите сумму чисел 1+1/1!+1/2!+1/3!+...+1/n!. Количество действий должно быть пропорционально n.
12. По данному натуральному числу n вычислите сумму 4(1-1/3+1/5-1/7+...+(-1)n1/(2n+1)) .
13. По данному натуральному числу n найдите его представление в двоичном виде. Можно напечатать это представление в обратном порядке.
14. Числа Фибоначчи. Последовательно Фибоначчи определена следующим образом: a0=1 , a1=1 , an=an-1+an-2
при n>1. По данному натуральному n определите an .
15. Алгоритм Евклида. По данным натуральным числам n и m найдите их наибольший общий делитель. Количество действий должно быть порядка log max (n;m) . Указание. НОД(n,m)=НОД(n mod m ,m ).
16. В задачах 2 и 3 определите предел данных сумм при стремлении n к бесконечности. Напечатаете значение n, при котором вы прекратили вычисление. Объясните, почему взято именно это n.

наверх

NiveClip - российская транс группа

Hosted by uCoz