Informatică, întrebare adresată de Madalina9119, 8 ani în urmă

Pe prima linie a fişierului date.in se găseşte un număr natural n, n≤100, iar a doua linie conţine un şir cu n numere naturale, separate prin cate un spaţiu. Sa se scrie în fişierul date.out toate numerele din şir care sunt termini din Şirul lui Fibonacci. Se va folosi o funcţie test_fibo care verifică daca un număr natural, dat ca parametru de intrare, este termen în şirul lui Fibonacci (f1=1, f2=1, fn=fn-1+fn-2, pentru n>2).
Exemplu:
date.in: 7
4 7 1 10 21 13 5
date.out: 1 21 5

Răspunsuri la întrebare

Răspuns de ArMyFoRHeLL
1
#include <fstream>

using namespace std;

ifstream fin("date.in");
ofstream fout("date.out");

int test_fibo(int x)
{
    int f1=1,f2=1,f;
    while(f2 < x)
    {
        f = f1 + f2;
        f1 = f2;
        f2 = f;
    }
    if ( f2 == x )
        return 1;
    else
        return 0;
}
int main()
{
    int n,x;
    fin >> n;
    for (int i = 1;i <= n;++i)
    {
        fin >> x;
        if (test_fibo(x))
            fout << x << ' ';
    }
    return 0;
}


Alte întrebări interesante