Untitled
/* 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