Проверить, является ли введенная последовательность чисел рядом Фибоначчи - C (СИ)
Формулировка задачи:
Здравствуйте! Закопался тут с одной задачей - требуется написать программу проверяющую является ли введенная последовательность чисел рядом Фибоначчи. Из того что нашел на форуме - во всех решениях используется массив. А от меня требуецца написать без него. Мой код проверяет только каждые три числа что естественно не может быть адекватным решением.
Помогите пожалуйста
void main()
{
int n, a, b, c, counter = 1,flag;
printf("How many numbers would you like to input: ");
scanf("%d", &n);
for (counter = 1; counter <= n/3; counter++) {
printf("Please enter the integer number: ");
scanf("%d", &a);
printf("Please enter the integer number: ");
scanf("%d", &b);
printf("Please enter the integer number: ");
scanf("%d", &c);
if (n >= 3){
if (c == a + b)
flag = 1;
else
flag = 0;
}
a = b;
b = c;
}
if(flag==1)
printf("The numbers are first members of Fibonacci series\n");
else
printf("The numbers are not the members of Fibonacci series\n");
}
Упс забыл добавить - рекурсия в этом случае тоже не принимается....
Решение задачи: «Проверить, является ли введенная последовательность чисел рядом Фибоначчи»
textual
Листинг программы
#include <stdio.h>
#include <tchar.h>
int main()
{
int a=0,b=1,kol=1,n;//Объявление переменных.
freopen("input.txt","r",stdin);// Считывания последовательности фибоначчи с input.txt
freopen("output.txt","w",stdout);// Запись результата в output.txt
scanf("%d",&n);//Считывание
while(kol<n) {//Цикл
kol+=2;// kol=kol+2;
a=a+b;
b=a+b;
}
(n%2!=0) ? printf("%d",b) : printf("%d",a);// if(n%2=0) printf("%d",b); else printf("%d",a);
return 0;
}
Объяснение кода листинга программы
В этом коде:
- #include
и #include - подключают необходимые для работы функции из библиотек. - int main() - функция main(), в которой происходит основная логика программы.
- int a=0,b=1,kol=1,n; - объявление переменных a, b, kol, n типа int (целые числа). Значения переменных a=0, b=1, kol=1, n=не определено.
- freopen(
input.txt,r,stdin); и freopen(output.txt,w,stdout); - перенаправление стандартного ввода и вывода на файлы input.txt и output.txt соответственно. - scanf(
%d,&n); - считывание значения n из стандартного ввода. - while(kol<n) - цикл, выполняющийся до тех пор, пока значение переменной kol меньше значения переменной n.
- kol+=2; - увеличение значения переменной kol на 2.
- a=a+b; и b=a+b; - вычисление и присваивание значений переменным a и b по формуле Fn = (F1 + F2) / 2, где F1 и F2 - предыдущие два числа ряда Фибоначчи.
- (n%2!=0) ? printf(
%d,b) : printf(%d,a); - вывод значения переменной b или переменной a в зависимости от того, является ли n четным числом. - return 0; - завершение работы функции main().
Пояснение по коду:
- Ввод значения n и последующий цикл обеспечивают вычисление и вывод на экран определенного числа из ряда Фибоначчи (Fn), если оно не превышает значение n.
- Перенаправление стандартного ввода и вывода на файлы позволяет сохранить результаты вычислений в файл output.txt и считывать последовательность чисел из файла input.txt.