Untitled

 avatar
unknown
c_cpp
2 months ago
2.2 kB
5
Indexable
/*
Si ricordi che la successione di Fibonacci è costituita da una sequenza di numeri interi in cui i primi due elementi sono
per definizione 0 e 1, e ciascun numero successivo è ottenuto come somma dei due precedenti. La sequenza è quindi:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, …
Realizzare un programma che riceve come argomento da riga di comando il nome di un file di testo contenente una
sequenza di lunghezza indefinita di numeri interi. Il programma apre il file e verifica se la sequenza di numeri
contenuta sia la successione di Fibonacci (partendo da 0) o meno. In caso affermativo il programma stampa a video 1
altrimenti 0. Controllare e segnalare eventuali situazioni di errore.
*/

#include <stdio.h>

int isFibonacci(int num, int *prec, int *corr)
{
    int next = *prec + *corr;

    if(num != *corr)
    {
        return 0;
    }

    *prec = *corr;
    *corr = next;
    return 1;
}


int main(int argc, char *argv[])
{
    if(argc == 2)
    {
        FILE * fp = fopen(argv[1], "r");
        if(fp)
        {
            int num;
            int somma = 0;

            int corrente = 1;
            int precedente = 0;

            int primo = 1;
            int risultato = 0;
            int continua = 1;

            if(fscanf(fp, "%d", &num)==1)
            {
                if(num==0)
                {
                    while(fscanf(fp, "%d", &num)==1 && continua == 1)
                    {
                        if(primo == 1)
                        {
                            if(num != 1)
                            {
                                risultato = 0;
                                continua = 0;
                            }
                            primo=0;
                        }else if(!isFibonacci(num, &precedente, &corrente))
                        {
                            risultato =0;
                            continua = 0;
                        }
                        
                    }
                }
            }



        }else{
            printf("Errore apertura file");
        }

    }else{
        printf("Numero parametri..");
    }



    return 0;

}
Leave a Comment