Visualizzazione dei risultati da 1 a 1 su 1
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2018
    Messaggi
    1

    [C] programma di Fibonacci

    Buon pomeriggio dovrei scrivere un programma con un file di input e uno di output dove dovrò scrivere la sequenza di Fibonacci.
    Ho scritto il programma ma non riesco a stampare nel file di output la sequenza giusta di Fibonacci perché non riesco a trovare i primi due 1 della sequenza.
    Vi allego la traccia e il programma che ho fatto.

    Chi può aiutarmi ??


    TRACCIA
    Sia dato un file contente una sequenza di interi positivi.
    * Si vuole verificare se tale sequenza contiene un sottoinsieme di elementi, che
    * rispettando l'ordine dato, costituisca una parte della successione di Fibonacci.
    * Si ricordi che la successione di Fibonacci è una successione di numeri interi positivi
    * in cui ciascun numero è la somma dei due precedenti e i primi due termini della successione
    * sono per definizione F1=1 e F2=1.
    * Scrivere un programma C che letta da file la sequenza di interi positivi, verifichi se esiste una
    * sotto-sequenza che sia costituita dai primi N elementi della successione di Fibonacci.
    * Il programma deve stampare in un nuovo file (il cui nome è dato in input da tastiera)
    * gli elementi delle sequenza iniziale e
    * gli indici della sequenza che costituiscono la (parte di) successione di Fibonacci contenuta.
    *
    *
    *


    Un esempio di file di input e' il seguente:
    *
    * 7 1 4 7 1 5 2 3 4 5 9 6 8 11
    *
    * Un esempio di esecuzione e':
    *
    * >>>Inserire nome file input: in.txt
    *
    * >>>Inserire nome file output: in.txt
    *
    * Il file out.txt conterrà :
    *
    * Numero elementi della sequenza iniziale: 14
    * Indici della successione di Fibonacci estratta:
    * 1 4 6 7 9 12
    *
    *
    */


    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #define DIMR 20
    #define NCAR 100
    
    
    /* Prototipi delle funzioni  */
    
    
    int LeggiSequenza(char [], int S[DIMR], int *m );
    int Fibonacci(int S[DIMR],int n, int m);
    int ScriviSeq(char [], int S[DIMR], int r, int c, int val);
    int  StampaSequenza(int S[DIMR], int r, int c);
    
    
    int main(int argc, char** argv) {
    int S[DIMR];
      char  nomefile[NCAR];
        int r, c, val;
    
    
        
         
        printf("Inserire nome file di input >");
        scanf("%s", nomefile);
    
    
        /* Legge la sequenza di interi  da file e costruisce la seguenza*/
        r=LeggiSequenza(nomefile, S, &c);
    
    
    
    
    
    
        /* Stampa Seguenza a video */
        StampaSequenza(S,r,c);
    
    
    
    
        /* Verifica se la seguenza è di Fibonacci */
        val = Fibonacci(S, r, c);
        if (val)
            printf("Seguenza di Fibbonacci.\n");
        else
            printf("Non è una seguenza di Fibbonacci");
    
    
           
        printf("Inserire nome file di output >");
        scanf("%s", nomefile);
            /* Stampa su file la matrice e dice se è o no una matrice FRAME*/
            ScriviSeq(nomefile, S, r, c, val);
        return (EXIT_SUCCESS);
    }
    
    
    int LeggiSequenza(char nomefile[], int S[DIMR], int *m )
    {
        int i;
        FILE* file= fopen(nomefile,"r");
        if(file==NULL){
            printf("Errore nell'apertura del file %s\n",nomefile);
            return EXIT_FAILURE;
        }
        fscanf(file,"%d",m);
        if(*m>DIMR){
            printf("La dimensione massima è %d\n",DIMR);
            return 0;
       }
        while(!feof(file)){
            for(i=0;i<*m;i++) 
             
                fscanf(file, "%d\n", &S[i]);
            
         
           i;
        }
       
        fclose(file);
        
       return i;
        
    }
    
    
    
    
    int Fibonacci(int S[DIMR],int n, int m){
    
    //non riesca a farla 
    
    
    }
    
    
    
    
    
    
    
    int ScriviSeq(char nomefile[], int S[DIMR], int r, int c, int val)
    {
       int i;
        FILE* file=fopen(nomefile, "w");
        if(file==NULL){
            printf("errore nell'apertura del file %s\n",nomefile);
            return 1;
        }
        
        for(i=0; i<r; i++){
            
                fprintf(file, "%d", S[i]);
            
            fprintf(file,"\n");
        }
        fclose(file);
        
        return 0;                      
    }
    
    
                                                  
    
    
    
    
    
    
    
    
    // La funzione stampa la successione a video
    
    
    int StampaSequenza(int S[DIMR], int r, int c)
    {
        int i;
    for(i = 0; i < r; i++) {
        printf("%d ",S[i]);
            
            printf("\n");
        }
    }
    Ultima modifica di LeleFT; 03-04-2018 a 10:15 Motivo: Aggiunti i tag CODE

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.