§ 6. Использование основных алгоритмических конструкций для решения задач
Упражнения
1. Напишите программу для вычисления первых n элементов последовательности Фибоначчи.
1. Для какого максимального значения n программа выдает корректный ответ?
2. Измените программу так, чтобы она выводила значение числа Фибоначчи по введенному номеру.
3. Замените в программе тип int на тип long long. Какое максимальное значения n можно ввести сейчас?
2. Напишите программу, которая будет выводить на экран элементы последовательности трибоначчи — первые элементы последовательности: 0, 0, 1, 1, 2, 4, 7, 13, 24, 44, 81, 149… . Каждый элемент, начиная с четвертого, равен сумме трех предыдущих: an = an – 1 + an – 2 + an – 3.
1. По заданному n вывести элемент последовательности.
2. Для заданного x вывести элементы последовательности меньшие x.
3. Напишите программу, которая найдет первый отрицательный элемент последовательности sin(tgn)n = 1, 2, ... и его номер.
4. Выполните задания для примера 6.15.
1. Замените в решении задачи цикл for на цикл while или do…while.
2. Ваня решил сократить количество строк в программе и записал цикл следующим образом:
for (int n = 1; n <= m; n++){
double a = n * n * n / (sqrt(n * n * n)- n + 1);
s += a;
}
Почему для m = 2000 Ваня получил в ответе s = nan?
5. Напишите программу, которая найдет сумму первых m элементов последовательности. Число m вводится. Элементы последовательности задаются формулой.
6. Написать программу для вычисления суммы, имеющей своими слагаемыми элементы последовательности . Вычисления производить до тех пор, пока не найдется слагаемое, для которого верно неравенство . Значение eps вводится (0 < eps < 1 ).
7. Напишите программу, которая найдет произведение из n сомножителей следующего вида. Значение n вводится.
8. Выполните задание для примера 6.17.
- Замените в решении задачи цикл for на цикл while или do…while.
- Получите таблицу значений функции на отрезке [–3; 3]. В качестве условия в цикле можно использовать следующее: x < = 3;
- Добавьте в программу вывод границ вокруг таблицы:
9. Напишите программу, которая построит таблицы значений для следующих функций.
10. Программу из примера 6.18 изменили. Сформулируйте задачу, которая решается с помощью данной программы.
#include<iostream>
using namespace std;
int main()
{
int i, n;
cout << "n = ";
cin >> n;
cout << "i = ";
cin >> i;
int k = 0;
while (n > 0)
{
int z = n % 10; //текущая цифра
k++;
if (k == i){
cout << "v razrjade " << i;
cout << " stoit zifra "<< z << endl;
}
n /= 10; //уменьшение числа в 10 раз
}
if (i > k){
cout << "v chisle "<<k<<" cifr, ";
cout << "v razrjade " << i << " net cifr " << endl;
}
else
cout<<"v chisle "<<k<<" cifr";
return 0;
}
11. Дано натуральное число n. Напишите программу, которая определит, каких цифр в числе больше, четных или нечетных.
12. Дано натуральное число n. Напишите программу, которая выведет номера разрядов, в которых стоят цифры кратные 3, или сообщение, что таких цифр нет.
13. Напишите программу, которая выведет на экран цифру, стоящую на средней позиции числа, если число имеет нечетное количество цифр, или 2 средние для числа с четным количеством цифр.
14. Напишите программу, которая после каждой цифры 1 в числе вставит еще одну единицу. Например, из 51214 → 5112114.
15. Выполните задание для примера 6.19.
1. Для ситуации, когда сахар заканчивается, выведите значение времени, когда это произошло.
2. Измените программу так, чтобы задавалось начальное и конечное количество сахара, а рассчитывалось время, необходимое для такого изменения концентрации.
3. Измените программу так, чтобы по введенному времени и количеству сахара в начале и в конце процесса рассчитывался начальный объем раствора.