Цилкы (2): break и continue
- Разбор домашних заданий
- Например: «Ввести натуральное число n. Поменять порядок цифр числа n на обратный»
Вариант с while (фрагмент)
Обратите внимание на чёткие четыре части чанонической чхемы чиклаВариант с for (очевиден)
- «Найти в последовательности натуральных чисел, заканчивающейся 0, число, превосходящее 20, и вывести его, иначе ничего не выводить»
Неправильное решение (с выводом всех чисел >20, а не первого)
Условие n>20 можно ввести в качестве дополнительного условия в цикле (while(n!=0 && n<20), но:
Это слегка запутывает код: последовательность заканчивается нулём, а по n>20 мы выходим, потому что искать больше не надо
По окончании цикла придётся ещё раз проверять значение n, чтобы его вывести
Если программа встречает оператор break, цикл немедленно завершается, и вычисление продолжается после его конца:
Усложним задачу «Найти в последовательности натуральных чисел, заканчивающейся 0, число k, для которого верно неравенство 111.0/(40-2*k)>1, и вывести его». (111.0 вместо 111 используется для того, чтобы деление было вещественным, а не целочисленным).
Неправильное решение (найдите ошибку!):
Если программа встречает оператор continue, выполнение переходит сразу к проверке условия (то есть начинается следующий оборот цикла):
На самом деле можно было воспользоваться свойством неполного вычисления логических операций, и написать так:
Вторая часть дизъюнкции не будет даже вычисляться, если первая уже ложь.
Домашнее задание
Прочитать в учебнике пример программы с циклом while и использование цикла for
Числа Фибоначчи. Пусть f0=f1=1; f2=f1+f0=2; f3=f2+f1=3; f4=f3+f2=5; f5=f4+f3=8; … ; fn=fn-1+fn-2; … . Ввести n, вывести fn .
Вычислить бесконечную сумму с заданной точностью ε (ε > 0). Считать, что требуемая точность достигнута, если вычислена сумма нескольких первых слагаемых, и очередное слагаемое оказалось по модулю меньше, чем ε (тогда это и все последующие слагаемые можно уже не учитывать).
Число ε ввести в переменную eps, вычислить: ,
то есть 1/(1*(1+1)) + 1/(2*(2+1)) + 1/(3*(3+1))+…
Замечание: деление должно быть не целочисленным
Алгоритм Евклида нахождения наибольшего общего делителя (НОД) неотрицательных целых чисел основан на следующих свойствах этой величины. Пусть m и n — одновременно не равные нулю целые неотрицательные числа, и пусть m ≥ n. Тогда, если n == 0, то НОД(n, m) = m, а если n ≠ 0, то для чисел m, n и r, где r — остаток от деления m на n, выполняется равенство НОД(m, n) = НОД(n, r). Например, НОД(15, 6) = НОД(6, 3) = НОД(3, 0) = 3. Ввести натуральные числа n, m (m ≥ n), вывести наибольший общий делитель n и m.
Ввести натуральное число n. Вычислить: 1*2 + 2*3*4 + ... + n*(n+1)*...*2n.
Вариант: сделать это в одном цикле, без вложенных