Страницы

4. Оператор for

Оператор for

Цикл for - это средство для пошагового выполнения повторяющихся действий.

Обычно части цикла for выполняют следующие шаги:

1. Установка начального значения.
2. Выполнение проверки условия для продолжения цикла.
3. Выполнение действий цикла.
4. Обновление значения переменной, которая используется в проверочном условии.

Вид оператора for:

for (инициализация; проверочное выражение; обновляющее выражение)
   тело

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

Инициализация - это установка переменной цикла в начальное значение. Эту переменную называют счетчиком цикла.

Проверочное выражение - это чаще всего выражение сравнения (больше, меньше, равно). Если это выражение истинно, то тело цикла выполняется, если ложно, то цикл прекращает свою работу.

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

Например

for (int i = 0; i < 4; i++)

  cout << "I learn  C++ \n";

Замечание:
i++ - это увеличение переменной i на 1, аналогично i-- - уменьшение переменной i на 1.

После выполнения этого оператора на экране мы увидим 4 строки "I learn C++".

I learn  C++           // i = 0, проверяется условие 0 < 4 (true)

I learn  C++           // i = 1, проверяется условие 1 < 4 (true)
I learn  C++          //  i = 2, проверяется условие 2 < 4 (true)
I learn  C++          //  i = 3, проверяется условие 3 < 4 (true)
                           //  i = 4, проверяется условие 4 < 4 (false)


for (int i = 5; i > 0; i = i - 2)
  cout << "i =" << i << "\n";

После выполнения этого оператора на экране мы увидим:

5            // i = 5,   проверяется условие   5 > 0 (true)

3            // i = 3,   проверяется условие   3 > 0 (true)
1            //  i = 1,  проверяется условие   1 > 0 (true)
              //  i = -1, проверяется условие  -1 > 0 (false)

Комбинация операций присваивания

x  +=  y   // присваивает переменной х значение  х + у (аналог х = х + у)
x  -=  y   // присваивает переменной х значение  х - у  (аналог х = х - у)
x  *=  y   // присваивает переменной х значение  х * у (аналог х = х * у)
x  /=  y   // присваивает переменной х значение  х / у (аналог х = х / у)
x  %=  y   // присваивает переменной х значение  х % у (аналог х = х % у)


Экспериментальный раздел работы

1.    Дано натуральное число n (n<9999). Определить, является ли оно палиндромом («перевертышем»), с учетом четырех цифр. Например, палиндромами являются числа: 2222, 6116, 0440.

Анализ:
У нас четырехзначное число, поэтому переменная оператора for изменяется от 1 до 4. 
В переменной с именем m будем хранить «остаток» числа, в первоначальный момент времени он равен введенному числу.
В переменной с именем r формируем значение числа — «перевертыша».
Основными операциями являются: r =10*r + m  % 10 (добавление очередной цифры к числу «перевертышу») и =m  / 10 (изменение проверяемого числа).

n
i
r
m
1552

0
1552

1
10*0+1552 % 10 = 2
1552 / 10 = 155

2
10*2+155 % 10 = 25
155 / 10 = 15

3
10*25+15 % 10 = 255
15 / 10 = 1

4
10*255+1% 10 = 2551
1 /10 = 0


2.    Внесите изменение в программу, чтобы она работала для шестизначных, восьмизначных чисел.

3.    Даны натуральные числа n,k (nk<9999). Из чисел от n до k выбрать те, запись которых содержит ровно три одинаковых цифры. Например, числа 6766, 5444, 0006, 0060 содержат ровно три одинаковых цифры.


       Тесты         Посмотреть решение       

Задания


1. Дано целое число N (> 0). Найти сумму    1 + 1/2 + 1/3 + … + 1/N.

2. Дано целое число N (> 0). Найти сумму  N2 + (N + 1)2 + (N + 2)2 + … + (2·N)2


3. Дано вещественное число A и целое число N (> 0). Найти A в степени N: AN = A·A· … ·A. (числа A перемножаются N раз).

4. Дано вещественное число A и целое число N (> 0). Используя один цикл, найти сумму 1 + A + A2 + A3 + … + AN.

5. Дано вещественное число A и целое число N (> 0). Используя один цикл, найти значение выражения 1 – A + A2 – A3 + … + (–1)N·AN.

6. Написать программу поиска двузначных чисел, таких, что если к сумме цифр этого числа прибавить квадрат этой суммы, то получится это число.

7.  Написать программу поиска четырехзначного числа, которое при делении на 133 дает в остатке 125, а при делении на 134 дает в остатке 111.

Задания для самостоятельной работы

1. Составить программу, которая в зависимости от порядкового номера месяца выводит количество дней в этом месяце, если год не високосный.

2. С начала 2000 года по некоторый день прошло n месяцев и два дня. Определить название месяца этого дня.

3. Найти все двузначные числа, в которых есть цифра N или само число делится на N.

4. Определить количество трехзначных натуральных чисел, сумма цифр которых равна заданному числу N.

5. Среди двузначных чисел найти те, сумма квадратов цифр которых делится на 13.