Проверить, является ли введенная последовательность чисел рядом Фибоначчи - 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;
}

Объяснение кода листинга программы

В этом коде:

  1. #include и #include - подключают необходимые для работы функции из библиотек.
  2. int main() - функция main(), в которой происходит основная логика программы.
  3. int a=0,b=1,kol=1,n; - объявление переменных a, b, kol, n типа int (целые числа). Значения переменных a=0, b=1, kol=1, n=не определено.
  4. freopen(input.txt,r,stdin); и freopen(output.txt,w,stdout); - перенаправление стандартного ввода и вывода на файлы input.txt и output.txt соответственно.
  5. scanf(%d,&n); - считывание значения n из стандартного ввода.
  6. while(kol<n) - цикл, выполняющийся до тех пор, пока значение переменной kol меньше значения переменной n.
  7. kol+=2; - увеличение значения переменной kol на 2.
  8. a=a+b; и b=a+b; - вычисление и присваивание значений переменным a и b по формуле Fn = (F1 + F2) / 2, где F1 и F2 - предыдущие два числа ряда Фибоначчи.
  9. (n%2!=0) ? printf(%d,b) : printf(%d,a); - вывод значения переменной b или переменной a в зависимости от того, является ли n четным числом.
  10. return 0; - завершение работы функции main(). Пояснение по коду:
    • Ввод значения n и последующий цикл обеспечивают вычисление и вывод на экран определенного числа из ряда Фибоначчи (Fn), если оно не превышает значение n.
    • Перенаправление стандартного ввода и вывода на файлы позволяет сохранить результаты вычислений в файл output.txt и считывать последовательность чисел из файла input.txt.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.875 из 5
Похожие ответы