Лабораторная работа №2. Цикл с постусловием
.docx-
Лабораторная работа № 2
-
Цикл с постусловием
-
Задание: Выполнить два задания (простой цикл и ряд Тейлора) по вариантам с использованием циклов с постусловием
-
Теоретический материал
Цикл с постусловием используется в тех случаях, когда заранее известно, что тело цикла повторится, по меньшей мере, один раз. Оператор цикла do..while особенен тем, что условие проверяется после очередного выполнения операторов тела цикла и таким образом гарантируется хотя бы однократное выполнение цикла.
Формат записи:
do
{
команды
}
while (условие);
Примечание: обратите внимание на обязательную точку с запятой после условия
Цикл работает следующим образом: выполняется тело цикла (операторы, заключенные между словами do и while), затем проверяется условие цикла, если оно истинно, то тело цикла выполняется вновь, затем проверяется условие, и т. д. Когда условие, наконец, станет ложным, цикла завершится, и далее будет выполняться следующий за циклом оператор.
При программировании операторов тела цикла следует обеспечить влияние, по крайней мере, одного из операторов тела цикла на значение условия, иначе цикл будет выполняться бесконечно.
-
Пример выполнения лабораторной работы
Для примера рассмотрим функцию у=, разложенную в сумме ряда (количество слагаемых n=40). Заметим, что значения s и y при одинаковых значениях x будут приблизительно равными.
В подсчете суммы s можно увидеть закономерность. Например, следующее слагаемое суммы будет выглядеть: . А сумма для n слагаемых можно записать в виде:
Подобную сумму легко посчитать, используя цикл. На каждом шаге цикла к s будет прибавляться новое слагаемое и по окончанию цикла в s будет храниться итоговая сумма всех n слагаемых
Блок-схема решения:
Код программы будет следующим:
double x = 0; // объявляем переменную x для получения от пользователя числа
cout >> “Введите x: ”; cin << x; // запрашиваем у пользователя значение
double y = log(abs(2.0 * sin(x / 2))) * (-1); // высчитываем значение y по полученному значению x
double s = 0; int i = 1; int n = 40; // задаем начальные значения для цикла
do // начинаем цикл
{
s += cos(i * x) / i;// к s прибавляем слагаемое на i-м шаге
i++; // увеличиваем счетчик i на единицу
} while (i <= n);// условие окончания цикла
cout << “y = ” << y << “ s = ” << s; // выводим что получилось на экран
Разбиение задач по вариантам
Вариант |
Задание на простой цикл |
Задание по рядам Тейлора |
1 |
5 |
1 |
2 |
1 |
5 |
3 |
9 |
9 |
4 |
8 |
7 |
5 |
4 |
3 |
6 |
6 |
10 |
7 |
2 |
4 |
8 |
7 |
6 |
9 |
3 |
8 |
10 |
10 |
2 |
11 |
9 |
9 |
12 |
4 |
1 |
13 |
3 |
7 |
14 |
1 |
3 |
15 |
10 |
5 |
16 |
6 |
4 |
17 |
5 |
8 |
18 |
8 |
6 |
19 |
2 |
2 |
20 |
7 |
10 |
21 |
4 |
6 |
22 |
8 |
4 |
23 |
6 |
7 |
24 |
2 |
3 |
25 |
1 |
1 |
26 |
5 |
8 |
27 |
9 |
9 |
28 |
10 |
2 |
29 |
7 |
10 |
30 |
3 |
5 |
Задание на простой цикл
-
В начале года в банк положили X рублей. Банк начисляет на вклады 0,95% каждый месяц. Начисленные проценты присоединяются к основному вкладу. Напечатать таблицу увеличения суммы вклада по месяцам на год. Сумма вклада вводится с клавиатуры.
-
Напечатать таблицу перевода температуры из градусов по шкале Цельсия в градусы по шкале Фаренгейта для значений от 15С до 38С с шагом 1С (перевод осуществляется по формуле F = 1,8C+32).
-
Население 2-х стран в 2014 году равно N1 и N2 человек соответственно. Прирост населения этих стран составляет P1 и P2 % в год соответственно. Население N1 < N2, а P1 > P2. Определить, в каком году население первой страны превзойдет население второй страны.
-
Ежегодный прирост рыбы в пруду составляет 15%. Запасы рыбы оценены в A тонн. Ежегодный план отлова B тонн. Наименьший запас рыбы, ниже которого запас уже не восстанавливается, составляет С тонн. Составить алгоритм и программу, подсчитывающую, сколько лет можно выдержать заданный план.
-
В банк сделали 2 вклада – один вклад 100000 рублей под 10% годовых, второй 200000 рублей под 2% годовых. Вывести изменение суммы вкладов по годам до тех пор, пока сумма на первом вкладе не превысит сумму на втором.
-
Каждый год выпуск продукции увеличивается на А%, а спрос падает на В%. В первый год выпускалось 100 единицы продукции при спросе в 150000. Подсчитать в каком году производство превысит спрос.
-
Вместимость новой тюрьмы 15000 арестантов. Каждый год количество заключенных прибавляется на 5% и каждые два года убавляется на 6%. Посчитать, в каком году тюрьма заполнится полностью.
-
В одном банке % вклада составляет 4% в год, в другом банке 6%. В обоих банках открыли по вкладу и внесли туда по 50000 руб. Выводить разницу между вкладами за каждый год до момента, когда эта разница станет большей, чем вклад в одном из банков. Вывести год, когда это произойдет.
-
Ежегодно вылавливают 50 т. крабов. Воспроизводство составляет 30 тонн в год. Известно, что на 2013 г. в запасах находилось 4500 тонн краба. Вывести статистику запасов за каждый год до момента, когда она станет ниже 50 т.
-
Ежегодный прирост населения составляет 7%, смертность – 5%. В 2014 году количество населения равнялось 300 000. Выводить ежегодный прирост населения, пока численность населения не удвоится по сравнению с 2014 годом.
-
-
Задание по рядам Тейлора
N |
Сумма S |
n |
Функция Y |
|
|
30 |
|
|
|
40 |
|
|
|
40 |
|
|
|
10 |
|
|
|
20 |
|
|
|
30 |
|
|
|
50 |
|
|
|
40 |
|
|
|
40 |
|
|
|
20 |
|