Найти первый из номеров К, для которого выполняется условие - C (СИ)
Формулировка задачи:
Дано вещественное число е( >0). Последовательность вещественных чисел Ak определяется следующим образом:
A1=1, A2=2. Ak=(Ak-2 + 2Ak-1)/3. К=3,4, ... .
Найти первый из номеров К, для которого выполняеться условие
|Ak -Ak-1|< e,
И вывести этот номер, а также числа Ak-1 и Ak.
Решение задачи: «Найти первый из номеров К, для которого выполняется условие»
textual
Листинг программы
#include<iostream>
#include<cmath>
#include<vector>
using namespace std;
int func(int n)
{
int i;
vector<int> dp(n+1);
dp[1] = 1; dp[2] = 2;
for (i = 3; i <= n; i++)
{
dp[i] = (dp[i-2]+2*dp[i-1])/3;
}
for(i=1;i<=n;i++){
cout<<dp[i]<<' ';
}
cout<<endl;
for(i=1;i<=n;i++){
if(fabs(dp[i]-dp[i-1])<e){
cout<<dp[i-1];}
}
return dp[n];
}
int main(){
float n=5;
f(5);
return 0;
}
Объяснение кода листинга программы
В этом коде:
- Создается функция
func, которая принимает целочисленный аргументn. - Внутри функции объявляются три переменные:
i- используется в циклах, инициализируется значением 3.dp- вектор, который заполняется значениями на основе заданного условия.n- копия аргумента функции, используется в цикле.
- Вектор
dpинициализируется значениями для первых двух элементов (1 и 2). - С помощью двойного цикла
forзаполняется векторdpзначениями от 3 доn.- Значение
dp[i]вычисляется на каждой итерации цикла и записывается в вектор.
- Значение
- С помощью цикла
forи оператораcoutвыводятся все значения вектораdpчерез пробел. - С помощью цикла
forи оператораcoutвыводятся номера элементов вектораdp, для которых выполняется условиеfabs(dp[i]-dp[i-1])<e. - В конце функции возвращается значение
dp[n]. - В функции
mainсоздается переменнаяnсо значением 5. - Вызывается функция
funcс аргументомn. - Программа завершается.