Загружаем лабораторные…
// C++ · Лабораторная 03

Циклы

Три задания: while и do while, вычисления циклом for и таблица значений функции.

Цель и порядок работы

Освоить циклы с условием и счётчиком, накопление результатов и табулирование функций.

Выполните три задания своего варианта. Первое решается через while или do while, второе — через for, третье — построение таблицы по формуле. Варианты+ добавляют проверки и промежуточные результаты без новых тем языка.

  1. Каждое из трёх заданий оформите отдельной функцией.
  2. Составьте алгоритмы и укажите, какая величина обеспечивает завершение каждого цикла.
  3. Соблюдайте ограничения своего варианта и выведите подписанные результаты всех трёх заданий.
  4. Для таблицы введите постоянные параметры, используйте заданные начало, шаг и правую границу.
  5. Проверьте минимальное число повторений, один и несколько проходов, границы и недопустимые данные.

Требования к коду, заготовка отчёта, тестирование и блок-схемы →

Скачать текущие задания и варианты+ в PDF

Исходные материалы: Методичка №3 · PDF · Методичка №4 · PDF

Перед началом: Лекция 2 · циклы · Лекция 2 · ветвления · Лекция 1 · типы · Лекция 1 · вещественные числа

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

Задания по вариантам

Выполните все задания назначенного варианта.

Общие требования к вариантам

Выполните три задания: в первом используйте while или do while, во втором — for, в третьем выведите таблицу значений функции. Каждое задание оформите отдельной функцией. Массивы, указатели и файлы здесь не требуются.

Для первого задания числа N ограничьте 10^12, для Фибоначчи используйте long long. Процент P вводите из указанного интервала, но не меньше 0.01. В варианте 14 точность от 10^-12 до 10^-3; в варианте 15 длины A, B, C — целые от 1 до 1000.

Для второго задания N от 1 до 30, вещественные аргументы по модулю не больше 1, если вариант не задаёт более строгое условие. Факториалы и суммы храните в double или long double. Следующий член ряда получайте из предыдущего, не пересчитывая факториал заново. В задании 2 варианта 4 условный оператор запрещён.

В третьем задании введите фиксированное y, если оно входит в формулу. Аргумент вычисляйте по целому номеру шага, не накапливая вещественный шаг. Правая граница включается, только если она попала в сетку. В варианте 11 используется t вместо x, y не требуется. При недопустимом знаменателе выведите сообщение вместо вычисления строки.

Обозначение k!! означает произведение положительных чисел той же чётности с шагом 2; 0!! и (−1)!! равны 1. Во втором задании варианта 14 при k = 1 числитель коэффициента также равен 1.

15 основных + 5 вариантов+

Вариант 1

Задание 1 · while и do while

Начальный вклад в банке равен 1000 руб. Через каждый месяц размер вклада увеличивается на P процентов от имеющейся суммы (P — вещественное число, 0<P< 25 ). По данному P определить, через сколько месяцев размер вклада превысит 1100 руб., и вывести найденное количество месяцев K (целое число) и итоговый размер вклада S (вещественное число).

Задание 2 · for

Введите параметры и вычислите указанное выражение одним циклом for.

AN=∏k=1NAA^N=\prod_{k=1}^{N}A

Задание 3 · Таблица значений

Вычислить значение Z при изменении X. Y - значение произвольное задается самостоятельно Результаты вывести в виде таблицы

z=3x+yz=3x+y
0.2≤x≤1.2,h=0.20.2\le x\le1.2,\quad h=0.2

Вариант 2

Задание 1 · while и do while

Спортсмен-лыжник начал тренировки, пробежав в первый день 10 км. Каждый следующий день он увеличивал длину пробега на P процентов от пробега предыдущего дня (P — вещественное, 0 < P < 50). По данному P определить, после какого дня суммарный пробег лыжника за все дни превысит 200 км, и вывести найденное количество дней K (целое) и суммарный пробег S (вещественное число).

Задание 2 · for

Введите параметры и вычислите указанное выражение одним циклом for.

A1,A2,…,ANA^1,A^2,\ldots,A^N

Задание 3 · Таблица значений

Вычислить значение Z при изменении X. Y - значение произвольное задается самостоятельно Результаты вывести в виде таблицы

z=x+2x+yz=x+2x+y
2.5≤x≤5,h=0.52.5\le x\le5,\quad h=0.5

Вариант 3

Задание 1 · while и do while

Дано целое число N (> 0). Используя операции деления нацело и взятия остатка от деления, вывести все его цифры, начиная с самой правой (разряда единиц).

Задание 2 · for

Введите параметры и вычислите указанное выражение одним циклом for.

S=∑k=0NAkS=\sum_{k=0}^{N}A^k

Задание 3 · Таблица значений

Вычислить значение Z при изменении X. Y - значение произвольное задается самостоятельно Результаты вывести в виде таблицы

z=x+y−xyz=x+y-xy
3≤x≤3.5,h=0.13\le x\le3.5,\quad h=0.1

Вариант 4

Задание 1 · while и do while

Дано целое число N (> 0). Используя операции деления нацело и взятия остатка от деления, найти количество и сумму его цифр.

Задание 2 · for

Введите параметры и вычислите указанное выражение одним циклом for.

Не используйте условный оператор: меняйте знак следующего члена через множитель −A.

S=∑k=0N(−1)kAkS=\sum_{k=0}^{N}(-1)^kA^k

Задание 3 · Таблица значений

Вычислить значение Z при изменении X. Y - значение произвольное задается самостоятельно Результаты вывести в виде таблицы

z=x−y+xyz=x-y+\frac xy
10≤x≤15,h=1,y≠010\le x\le15,\quad h=1,\quad y\ne0

Вариант 5

Задание 1 · while и do while

Дано целое число N (> 0). Используя операции деления нацело и взятия остатка от деления, найти число, полученное при прочтении числа N справа налево.

Задание 2 · for

Введите параметры и вычислите указанное выражение одним циклом for.

N!=∏k=1NkN!=\prod_{k=1}^{N}k

Задание 3 · Таблица значений

Вычислить значение Z при изменении X. Y - значение произвольное задается самостоятельно Результаты вывести в виде таблицы

z=2x−y2z=2x-\frac y2
5≤x≤7,h=0.45\le x\le7,\quad h=0.4

Вариант 6

Задание 1 · while и do while

Дано целое число N (> 0). С помощью операций деления нацело и взятия остатка от деления определить, имеется ли в записи числа N цифра «2». Если имеется, то вывести TRUE, если нет — вывести FALSE.

Задание 2 · for

Введите параметры и вычислите указанное выражение одним циклом for.

S=∑k=1Nk!S=\sum_{k=1}^{N}k!

Задание 3 · Таблица значений

Вычислить значение Z при изменении X. Y - значение произвольное задается самостоятельно Результаты вывести в виде таблицы

z=x2−yz=\frac x2-y
4≤x≤12,h=24\le x\le12,\quad h=2

Вариант 7

Задание 1 · while и do while

Дано целое число N (> 0). С помощью операций деления нацело и взятия остатка от деления определить, имеются ли в записи числа N нечетные цифры. Если имеются, то вывести TRUE, если нет — вывести FALSE.

Задание 2 · for

Введите параметры и вычислите указанное выражение одним циклом for.

S=∑k=0N1k!≈eS=\sum_{k=0}^{N}\frac1{k!}\approx e

Задание 3 · Таблица значений

Вычислить значение Z при изменении X. Y - значение произвольное задается самостоятельно Результаты вывести в виде таблицы

z=10x−yxz=10x-\frac yx
0.1≤x≤0.5,h=0.10.1\le x\le0.5,\quad h=0.1

Вариант 8

Задание 1 · while и do while

Дано целое число N (> 1). Если оно является простым, то есть не имеет положительных делителей, кроме 1 и самого себя, то вывести TRUE, иначе вывести FALSE.

Задание 2 · for

Введите параметры и вычислите указанное выражение одним циклом for.

S=∑k=0NXkk!≈eXS=\sum_{k=0}^{N}\frac{X^k}{k!}\approx e^X

Задание 3 · Таблица значений

Вычислить значение Z при изменении X. Y - значение произвольное задается самостоятельно Результаты вывести в виде таблицы

z=0.3x+xyz=0.3x+xy
3≤x≤3.5,h=0.13\le x\le3.5,\quad h=0.1

Вариант 9

Задание 1 · while и do while

Для положительных целых A и B найдите НОД алгоритмом Евклида: заменяйте пару на B и остаток A от деления на B, пока B не станет нулём.

Задание 2 · for

Введите параметры и вычислите указанное выражение одним циклом for.

S=∑k=0N(−1)kX2k+1(2k+1)!≈sin⁡XS=\sum_{k=0}^{N}\frac{(-1)^kX^{2k+1}}{(2k+1)!}\approx\sin X

Задание 3 · Таблица значений

Вычислить значение Z при изменении X. Y - значение произвольное задается самостоятельно Результаты вывести в виде таблицы

z=2x+15yz=2x+15y
1≤x≤3,h=0.41\le x\le3,\quad h=0.4

Вариант 10

Задание 1 · while и do while

Дано целое число N (> 1). Последовательность чисел Фибоначчи FK определяется следующим образом: F1 = 1, F2 = 1, FK = FK−2 + FK−1, K = 3, 4, . . . . Проверить, является ли число N числом Фибоначчи. Если является, то вывести TRUE, если нет — вывести FALSE.

F1=F2=1,Fk=Fk−1+Fk−2,k≥3F_1=F_2=1,\quad F_k=F_{k-1}+F_{k-2},\quad k\ge3

Задание 2 · for

Введите параметры и вычислите указанное выражение одним циклом for.

S=∑k=0N(−1)kX2k(2k)!≈cos⁡XS=\sum_{k=0}^{N}\frac{(-1)^kX^{2k}}{(2k)!}\approx\cos X

Задание 3 · Таблица значений

Вычислить значение Z при изменении X. Y - значение произвольное задается самостоятельно Результаты вывести в виде таблицы

z=xyz=\frac xy
0.5≤x≤3,h=0.6,y≠00.5\le x\le3,\quad h=0.6,\quad y\ne0

Вариант 11

Задание 1 · while и do while

Дано целое число N (> 1). Найти первое число Фибоначчи, большее N. (определение чисел Фибоначчи дано для варианта 10).

F1=F2=1,Fk=Fk−1+Fk−2,k≥3F_1=F_2=1,\quad F_k=F_{k-1}+F_{k-2},\quad k\ge3

Задание 2 · for

Введите параметры и вычислите указанное выражение одним циклом for.

S=∑k=1N(−1)k−1Xkk≈ln⁡(1+X),∣X∣<1S=\sum_{k=1}^{N}\frac{(-1)^{k-1}X^k}{k}\approx\ln(1+X),\quad |X|<1

Задание 3 · Таблица значений

Вычислить значение Z при изменении X. Y - значение произвольное задается самостоятельно Результаты вывести в виде таблицы

z=1+2t221+4t2z=\frac{1+2t^2}{2\sqrt{1+4t^2}}
0.1≤t≤0.5,h=0.010.1\le t\le0.5,\quad h=0.01

Вариант 12

Задание 1 · while и do while

Дано целое число N (> 1), являющееся числом Фибоначчи: N = FK (определение чисел Фибоначчи дано для варианта 10). Найти целые числа FK−1 и FK+1 — предыдущее и последующее числа Фибоначчи.

F1=F2=1,Fk=Fk−1+Fk−2,k≥3F_1=F_2=1,\quad F_k=F_{k-1}+F_{k-2},\quad k\ge3

Задание 2 · for

Введите параметры и вычислите указанное выражение одним циклом for.

S=∑k=0N(−1)kX2k+12k+1≈arctan⁡X,∣X∣<1S=\sum_{k=0}^{N}\frac{(-1)^kX^{2k+1}}{2k+1}\approx\arctan X,\quad |X|<1

Задание 3 · Таблица значений

Вычислить значение Z при изменении X. Y - значение произвольное задается самостоятельно Результаты вывести в виде таблицы

z=x2+y2z=x^2+y^2
10≤x≤20,h=0.110\le x\le20,\quad h=0.1

Вариант 13

Задание 1 · while и do while

Дано целое число N (> 1), являющееся числом Фибоначчи: N = FK (определение чисел Фибоначчи дано для варианта 10). Найти целое число K — порядковый номер числа Фибоначчи N.

F1=F2=1,Fk=Fk−1+Fk−2,k≥3F_1=F_2=1,\quad F_k=F_{k-1}+F_{k-2},\quad k\ge3

Задание 2 · for

Введите параметры и вычислите указанное выражение одним циклом for.

S=∑k=0N(2k−1)!!(2k)!!X2k+12k+1≈arcsin⁡X,∣X∣<1S=\sum_{k=0}^{N}\frac{(2k-1)!!}{(2k)!!}\frac{X^{2k+1}}{2k+1}\approx\arcsin X,\quad |X|<1

Задание 3 · Таблица значений

Вычислить значение Z при изменении X. Y - значение произвольное задается самостоятельно Результаты вывести в виде таблицы

z=2xy+5y45x4+y2z=\frac{2xy+5y^4}{5x^4+y^2}
0.5≤x≤2.5,h=0.50.5\le x\le2.5,\quad h=0.5

Вариант 14

Задание 1 · while и do while

Для заданной точности найдите первый номер k ≥ 2, при котором соседние члены последовательности отличаются меньше ε. Выведите номер и оба значения.

A1=2,Ak=2+1/Ak−1,∣Ak−Ak−1∣<εA_1=2,\quad A_k=2+1/A_{k-1},\quad |A_k-A_{k-1}|<\varepsilon

Задание 2 · for

Введите параметры и вычислите указанное выражение одним циклом for.

S=1+∑k=1N(−1)k−1(2k−3)!!(2k)!!Xk≈1+X,∣X∣<1S=1+\sum_{k=1}^{N}\frac{(-1)^{k-1}(2k-3)!!}{(2k)!!}X^k\approx\sqrt{1+X},\quad |X|<1

Задание 3 · Таблица значений

Вычислить значение Z при изменении X. Y - значение произвольное задается самостоятельно Результаты вывести в виде таблицы

z=xx2+y2z=\frac x{\sqrt{x^2+y^2}}
2≤x≤20,h=1.52\le x\le20,\quad h=1.5

Вариант 15

Задание 1 · while и do while

Даны положительные числа A, B, C. На прямоугольнике размера A × B размещено максимально возможное количество квадратов со стороной C (без наложений). Найти количество квадратов, размещенных на прямоугольнике. Операции умножения и деления не использовать.

Задание 2 · for

Введите параметры и вычислите указанное выражение одним циклом for.

A0=2,Ak=2+1Ak−1,k=1,…,NA_0=2,\qquad A_k=2+\frac1{A_{k-1}},\quad k=1,\ldots,N

Задание 3 · Таблица значений

Вычислить значение Z при изменении X. Y - значение произвольное задается самостоятельно Результаты вывести в виде таблицы

z=2x+yx+2yz=\frac{2x+y}{x+2y}
0.1≤x≤2,h=0.1,x+2y≠00.1\le x\le2,\quad h=0.1,\quad x+2y\ne0

Вариант 16+ · Вклад до цели и лимит · Экспонента за один проход

Задание 1 · while и do while

Введите положительный вклад, месячный процент от 0.1 до 10, цель не ниже вклада и лимит месяцев от 1 до 1200. Начисляйте процент, пока цель не достигнута или лимит не исчерпан.

Выведите причину остановки, число месяцев и итог. Цель, равная начальному вкладу, требует 0 месяцев. Укажите первый месяц, после которого достигнута половина необходимого прироста, либо сообщите, что этого не было.

Задание 2 · for

Введите x от −1 до 1 и N от 1 до 30. Вычислите сумму через рекуррентное получение следующего члена, без отдельного вычисления степеней и факториалов.

SN=∑k=0Nxkk!,t0=1,tk+1=tkxk+1S_N=\sum_{k=0}^{N}\frac{x^k}{k!},\quad t_0=1,\quad t_{k+1}=t_k\frac{x}{k+1}

Выведите сумму после каждого шага, результат std::exp и абсолютную ошибку. Посчитайте фактически использованные члены, включая начальную единицу.

Задание 3 · Таблица значений

Вычислить значение Z при изменении X. Y - значение произвольное задается самостоятельно Результаты вывести в виде таблицы

z=3x+yz=3x+y
0.2≤x≤1.2,h=0.20.2\le x\le1.2,\quad h=0.2

Дополнение для варианта+: без сохранения таблицы в массив найдите минимальное и максимальное допустимые значения функции и соответствующие аргументы. При равенстве сохраняйте первое вхождение. Выведите количество вычисленных и пропущенных строк.

Вариант 17+ · Цифры и серии · Синус и косинус одновременно

Задание 1 · while и do while

Для положительного числа до 10^18 найдите длину наибольшей серии одинаковых соседних цифр, используя деление и остаток, без строк и контейнеров.

Найдите также саму цифру. При одинаковых длинах выбирайте меньшую цифру. Выведите количество разных серий и сумму цифр исходного числа.

Задание 2 · for

Введите x от −3 до 3 и N от 1 до 20. Одним циклом вычислите суммы рядов синуса и косинуса с индексами от 0 до N. Следующие члены получайте из предыдущих.

sN=∑k=0N(−1)kx2k+1(2k+1)!,cN=∑k=0N(−1)kx2k(2k)!s_N=\sum_{k=0}^{N}\frac{(-1)^kx^{2k+1}}{(2k+1)!},\quad c_N=\sum_{k=0}^{N}\frac{(-1)^kx^{2k}}{(2k)!}

Сравните со стандартными функциями и выведите отклонение суммы квадратов от 1. Таблицу членов хранить не нужно.

Задание 3 · Таблица значений

Вычислить значение Z при изменении X. Y - значение произвольное задается самостоятельно Результаты вывести в виде таблицы

z=x+2x+yz=x+2x+y
2.5≤x≤5,h=0.52.5\le x\le5,\quad h=0.5

Дополнение для варианта+: без сохранения таблицы в массив найдите минимальное и максимальное допустимые значения функции и соответствующие аргументы. При равенстве сохраняйте первое вхождение. Выведите количество вычисленных и пропущенных строк.

Вариант 18+ · Евклид с протоколом · Таблица с подсчётом ветвей

Задание 1 · while и do while

Для двух положительных целых чисел до 10^9 найдите НОД алгоритмом Евклида. Печатайте пары до каждого перехода и число переходов.

gcd⁡(a,b)=gcd⁡(b,a mod b)\gcd(a,b)=\gcd(b,a\bmod b)

Вычислите НОК в long long, сначала разделив на НОД. Проверьте на взаимно простых и равных числах; объясните остановку при нулевом остатке.

lcm⁡(a,b)=agcd⁡(a,b)b\operatorname{lcm}(a,b)=\frac{a}{\gcd(a,b)}b

Задание 2 · for

Для x от −2 до 2 с шагом 0.5 и y от −1 до 1 с шагом 0.5 выведите таблицу.

f(x,y)={x2+y2,x+y<0,xy,x+y≥0.f(x,y)=\begin{cases}x^2+y^2,&x+y<0,\\xy,&x+y\ge0.\end{cases}

Без массива найдите минимум и максимум по всем узлам, их координаты и количество обращений к каждой ветви. При равных экстремумах сохраняйте первый в порядке строк.

Задание 3 · Таблица значений

Вычислить значение Z при изменении X. Y - значение произвольное задается самостоятельно Результаты вывести в виде таблицы

z=x+y−xyz=x+y-xy
3≤x≤3.5,h=0.13\le x\le3.5,\quad h=0.1

Дополнение для варианта+: без сохранения таблицы в массив найдите минимальное и максимальное допустимые значения функции и соответствующие аргументы. При равенстве сохраняйте первое вхождение. Выведите количество вычисленных и пропущенных строк.

Вариант 19+ · Фибоначчи в интервале · Сумма факториалов и обратных величин

Задание 1 · while и do while

Введите 2 ≤ left ≤ right ≤ 10^12. Последовательно вычисляйте числа Фибоначчи, не сохраняя весь ряд. Выведите все попавшие в закрытый интервал.

Найдите количество, сумму и первое число после интервала. При отсутствии значений выведите отдельное сообщение. Объясните, какие два состояния нужны циклу.

Задание 2 · for

Для N от 1 до 20 одновременно вычислите две суммы. Факториал храните в long double и обновляйте одним умножением на итерацию.

AN=∑k=1Nk!,BN=∑k=0N1k!A_N=\sum_{k=1}^{N}k!,\qquad B_N=\sum_{k=0}^{N}\frac1{k!}

Для каждого N от 1 до введённого выведите строку промежуточных сумм. Вычислите абсолютную ошибку приближения e второй суммой.

Задание 3 · Таблица значений

Вычислить значение Z при изменении X. Y - значение произвольное задается самостоятельно Результаты вывести в виде таблицы

z=x−y+xyz=x-y+\frac xy
10≤x≤15,h=1,y≠010\le x\le15,\quad h=1,\quad y\ne0

Дополнение для варианта+: без сохранения таблицы в массив найдите минимальное и максимальное допустимые значения функции и соответствующие аргументы. При равенстве сохраняйте первое вхождение. Выведите количество вычисленных и пропущенных строк.

Вариант 20+ · Сходимость с защитой · Сравнение приближений

Задание 1 · while и do while

Введите точность от 10^-12 до 10^-3 и лимит от 1 до 1000. Для последовательности вычисляйте соседние члены, пока их разность не станет меньше точности или пока лимит не исчерпан.

A1=2,Ak=2+1/Ak−1A_1=2,\qquad A_k=2+1/A_{k-1}

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

lim⁡k→∞Ak=1+2\lim_{k\to\infty}A_k=1+\sqrt2

Задание 2 · for

Введите x с модулем меньше 0.9 и N от 1 до 30. Рассчитайте частичные суммы логарифма для всех номеров от 1 до N.

Ln=∑k=1n(−1)k−1xkk≈ln⁡(1+x)L_n=\sum_{k=1}^{n}\frac{(-1)^{k-1}x^k}{k}\approx\ln(1+x)

Выведите номер первой суммы с абсолютной ошибкой не больше 10^-6 либо сообщите об отсутствии. Цикл всё равно завершите на N, чтобы получить итоговую таблицу. Не используйте массивы.

Задание 3 · Таблица значений

Вычислить значение Z при изменении X. Y - значение произвольное задается самостоятельно Результаты вывести в виде таблицы

z=2x−y2z=2x-\frac y2
5≤x≤7,h=0.45\le x\le7,\quad h=0.4

Дополнение для варианта+: без сохранения таблицы в массив найдите минимальное и максимальное допустимые значения функции и соответствующие аргументы. При равенстве сохраняйте первое вхождение. Выведите количество вычисленных и пропущенных строк.

Возможные вопросы к защите

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

Чем отличаются while, do while и for?

Назовите момент проверки условия и минимальное число выполнений тела. Покажите выбранный цикл в каждом задании.

Повторить: Лекция 2 · циклы

Какие три части есть в заголовке for?

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

Повторить: Лекция 2 · циклы

Почему ваш цикл завершается?

Покажите изменение счётчика, остатка числа или последовательности. Назовите ошибку, которая сделала бы цикл бесконечным.

Повторить: Лекция 2 · циклы

Как выбрать начальные значения суммы, произведения и счётчика?

Обоснуйте ноль для суммы и количества, единицу для произведения; проверьте наименьший допустимый вход.

Повторить: Лекция 1 · типы · Лекция 2 · циклы

Как избежать ошибки на один проход?

Сравните строгие и нестрогие границы, начальный индекс и число итераций. Покажите первый и последний шаг на своём варианте.

Повторить: Лекция 2 · циклы

Почему таблицу с вещественным шагом строят по целому индексу?

Объясните погрешность double и случай, когда правая граница не принадлежит сетке.

Повторить: Лекция 1 · вещественные числа · Лекция 2 · циклы