Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - successione di fibonacci
Forum - C/C++ - successione di fibonacci

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
toninus (Normal User)
Newbie


Messaggi: 8
Iscritto: 04/01/2008

Segnala al moderatore
Postato alle 17:04
Venerdì, 04/01/2008
sono disperato!!!!!mi appello a tutti quelli che usano il c++

devo fare un programma con il dev-c++ e non so come fare..aiuto!

ecco la traccia:

fare il programma per calcolare il centesimo elemento della successione di fibonacci.La successione di fibonacci è definita nel modo seguente: 0,1,1,2,3,5,8,13,........i primi elementi sono 0 e 1; gli elementi successivi sono dati dalla somma dei due elementi precedenti.

dovrei usare le istruzioni for e cont ma non so come fare se qualcuno me lo fa sono contento ma altrimenti se mi potete dare degli imput da cui partire, dei consigli!

edit by netarrow: sistemato il titolo

Ultima modifica effettuata da netarrow il 05/01/2008 alle 16:08
PM Quote
Avatar
Fmasso91 (Normal User)
Pro


Messaggi: 103
Iscritto: 01/01/2007

Segnala al moderatore
Postato alle 19:19
Venerdì, 04/01/2008
è molto semplice,
-allora per prima cosa di definisci le variabili che userai, ad esempio n1,n2 per i valori, un contatore per il ciclo e una variabile di supporto i
-poi all'intero del ciclo for(k=0;k<99;k++) metti un istruzione che aggiorna le variabili ad ogni iterazione appoggiando il valore della somma dentro la variabile i.
-Alla fine del ciclo devi solo scrivere il contenuto di i

Comunque cercando su google trovi un mare di informazioni piene di esempi.

Ciao

PM Quote
Avatar
toninus (Normal User)
Newbie


Messaggi: 8
Iscritto: 04/01/2008

Segnala al moderatore
Postato alle 10:08
Sabato, 05/01/2008
non ho ben capito.....potresti indicarmi un esempio che fa al caso mio?

-k a che serve
-i a che corrisponde
-quando metto il contatore nel for per il ciclo:
for (cont=1; cont(qui che devo mettere) ;cont++)
come faccio poi a far eseguire il cont???

sono disperato...se qualcuno ha buonavolontà mi aiuti o mi suggerisca qualche esempio che riporti!

Ultima modifica effettuata da toninus il 05/01/2008 alle 10:11
PM Quote
Avatar
Fmasso91 (Normal User)
Pro


Messaggi: 103
Iscritto: 01/01/2007

Segnala al moderatore
Postato alle 12:03
Sabato, 05/01/2008
Hai ragione, non mi sono espresso molto bene!

alloram cerco di essere + chiaro. Il ciclo for viene chiamato anche ciclo a contatore, nel senso che usa una variabile contatore per iterare, in genere questa variabile è chiamata i,k,h,j ma puo essere chiamata arbitrariamente, nel tuo caso mi sembra che vuoi usare una variabile chiamata cont, presumibilmente dichiarata come intero all'inizio del programma. Il ciclo for ha questa struttora:

FOR("inizializazione";"condizione";"incremento")
{
   ...
   istruzioni
   ...
}

dove:
"inizializazione" è un istruzione che inizializza il valore della variabile contatore, es. cont=0
"condizione" è una condizione verificata ad ogni iterazione e finche risulta vera il ciclo va avanti, non appena risulta falso il ciclo si ferma
es. cont<99.
"incremento" è un altra istruzione usata per incrementare la variabile contatore, in genere è un incremento unitario, es.cont++.

Quindi tornando al tuo problema, a te serve un ciclo che venga eseguito 100 volte, quindi potresti scrivere un ciclo dichiarato cosi:
for(cont=0;cont<=99;cont++)
oppure
for(cont=1;cont<=100;cont++)

nel primo caso il conteggio parte da 0 quindi raggiungerà le 100 iterazioni qundo cont sarrà 99, a questo punto la condizione risulta falsa e il ciclo si ferma. Nel secondo caso il discorso è identico solo che il contegio parte da 1 quindi bisogna arrivare a 100. L'istruzione for è molto versatile infatti le parti della dichiarazione possono anche essere omesse, un esempio classico è il ciclo infinito, dichiarato come for(;;).
Non ci sono regole rigide sulle istruzioni, se hai bisogno di contare al contrario sei libero di farlo
es. for(cont=100;cont>=1;cont--)

per farti capire bene ti faccio un analogia con il ciclo while:

for(cont=0;cont<=99;cont++)
{
...
}

equivale a:

cont=0;
while(cont++ <= 99)
{
...
}

Nel post precedente avevo usato la variabile k per il ciclo, quindi puoi sostituirla con cont, mentre la variabile i era usata all'interno del ciclo per memorizzare temporaneamente la somma dei 2 numeri
es. i=n1+n2;
per poi aggiornali, il secondo con il valore del primo e il primo con il valore della somma.

Fammi sapere se incontri altri problemi
ciao

PM Quote
Avatar
toninus (Normal User)
Newbie


Messaggi: 8
Iscritto: 04/01/2008

Segnala al moderatore
Postato alle 12:26
Sabato, 05/01/2008
grazie mille sto vedendo:k:

PM Quote
Avatar
toninus (Normal User)
Newbie


Messaggi: 8
Iscritto: 04/01/2008

Segnala al moderatore
Postato alle 14:31
Sabato, 05/01/2008
tipo così?:

#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>
int n1,n2,CONT;
int i=n1+n2;
int main()
{
  for (CONT=0; CONT<100; CONT++)
  {
       for (n1=0; n1>0; n1=n2)
       {
         for (n2=1; n2>0; n2=i)
            {
             printf ("%d\n",i);
             CONT++;
  }
      }
            }
      system("PAUSE");
      return 0;
}

inutile dirti che non funziona...sono una frana...daimmi qualche altro aiuto per favore:-|:(

Ultima modifica effettuata da toninus il 05/01/2008 alle 14:33
PM Quote
Avatar
Fmasso91 (Normal User)
Pro


Messaggi: 103
Iscritto: 01/01/2007

Segnala al moderatore
Postato alle 23:02
Sabato, 05/01/2008
ti faccio un esempio, questo è un programma che riempie un vettore con la sequenza di fibonacci:

#include<stdio.h>

#define FINE 40

int main()
{
    int buf[FINE];

    int i,k,h;

    for(h=0;h<=(FINE-1);h++)
        buf[h]=0;

    buf[0]=0;
    buf[1]=1;


    for(i=0;i<=(FINE-3);i++)
        buf[i+2]=buf+buf[i+1];
    

    for(k=0;k<=(FINE-1);k++)
        printf("%d\n",buf[k]);

}

-nella riga 1 ho semplicemente incluso la libreria standard di input/output

-nella riga 3 ho definito una costante FINE che rappresenta il numero dei valori di fibonacci da calcolare

-nella riga 7 ho dichiarato un vettore di grandezza pari a al numero dei valori da calcolare

-nella riga 9 ho dichiarato 3 variabili per i cicli

-nella riga 11 c'è un ciclo che inizializza a 0 tutti i valori del vettore

-nelle righe 14-15 si inseriscono i valori 0 e 1 nelle prime 2 posizioni del vettore

-la riga 18-19 è il vero corpo del programma, c'è un ciclo che imposta ogni posizione del vettore dalla tersa in poi, al valore della somma delle precedenti

-il ciclo finale serve solo a stampare sullo schermo l'intero vettore


Nell'esempio calcolo i primi 40 numeri, ma puoi impostare il valore che vuoi cambiando il valore della costante FINE, l'unica cosa a cui devi stare attento è che i valori della serie di fibonacci crescono velocemente, se imposti un valore troppo alto a FINE potresti oltrepassare il massimo valore memorizzabile in ogni cella del vettore, generando valori inaspettati e privi di senso.

comunque ti consiglio di leggere un buon manuale sulle basi del c, (su google trovi di tutto), in modo da avere le idee chiare sui costrutti di base, indispensabili per approfondire la programmazione soprattutto in c/c++

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 0:02
Domenica, 06/01/2008
ciao
caso mai se fai fatica a capire la storia del vettore prova cosi

Codice sorgente - presumibilmente C/C++

  1. int penultimogenerato,ultimogenerato,attuale,k;
  2. penultimogenerato=0;
  3. ultimogenerato=1;
  4.  
  5. for( k=1;k<=98;k++) //98 perché i primi due sono fuori dal ciclo (0 e 1)
  6. {
  7. attuale=ultimogenerato+penultimogenerato;
  8. penultimogenerato=ultimogenerato;
  9. ultimogenerato=attuale;
  10. }
  11. cout<<"100esimo numero della sucessione = "<<attuale<<endl;




PM Quote
Avatar
toninus (Normal User)
Newbie


Messaggi: 8
Iscritto: 04/01/2008

Segnala al moderatore
Postato alle 10:35
Domenica, 06/01/2008
grazie, ci sono riuscito e funzione, grazie a tutti di cuore per il tempo e l'aiuto che mi avete dato!!!!:D riporto il programma per farvelo vedere ma comunuqe ho provato e funziona....grazie!!!!!!!!!!!!!!!



#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>
int n1=0;
int n2=1;
int cont;
int i=n1+n2;
int main()
{
     for (cont=1; cont<=100; cont++)
     {
          i=n1+n2;
          n1=n2;
          n2=i;
          printf ("%d\n",i);
     }
       system("PAUSE");
      return 0;
}

Ultima modifica effettuata da toninus il 06/01/2008 alle 10:37
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo