Проверить, является ли введенная последовательность чисел рядом Фибоначчи - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д