Oppure

Loading
23/11/12 11:01
Erica
Salve a tutti! Navigando per internet in cerca di spiegazioni sulla programmazione in C++ mi sono imbattuta in questo, devo proprio dire, bel sito!

Spero di non aver sbagliato luogo di post in cui inserire questa mio breve quesito. (in realta' ne avrei tanti!!! :) ) Ad ogni modo all'universita' due o tre settimane fa ci avevano dato un esercizio nella quale bisognava fare la serie di fibonacci e in seguito calcolarne il rapporto tra il risultato e quello finale. In aula c'ero riuscita, ma ieri sera ho provato a rifarlo ed il risultato e' stato un risultato sbagliato! Posto qui quel che ho scritto nel terminale, perche' vorrei proprio capire dove sbaglio e perche'! Grazie a mille di tutto!!! P.S. il rapporto dovrebbe essere 1.6 ma a me viene 1: ho provato a inserire a posto di i++/i la variabile double rapp = i++/i ma quel che viene fuori e' sempre 1.

#include <iostream>

int main()
{
using namespace std;

int f0 = 0;
int f1 = 1;
int i = f0+f1;
int n;

cout << "Inserisci il valore della serie a cui vuoi arrivare " ;
cin >> n;

for (int k=1; k<n; k++) {
i= f0+f1;
f0=f1;
f1=i;
cout << i << endl;
cout << "e il rapporto " << i++/i << endl;}

return 0;
}



aaa
23/11/12 14:13
Poggi Marco
Benvenuta! :k:

Il programma ti da come rapporto 1 perché esegui una divisione tra due int; e di conseguenza anche il risultato sarà int. Per rimediare, basta un cast:

Invece di
cout << i << endl; 
      cout << "e il rapporto " << i++/i << endl;
scriverai
 cout << i << endl; 
cout << "e il rapporto " <<(double) i/f0 << endl;
aaa
25/11/12 11:49
Erica
Ok! Infatti inizialmente avevo scritto, sempre rimanendo nel ciclo for,

double rap = i\i--;

il rapporto era sempre 1 però. La mia domanda quindi è questa: la variabile decrementata, quindi i-- , perchè non viene considerata tale? nel senso se prendo i = 3, i-- dovrebbe essere 2 (se andiamo a ritroso nella serie di fibonacci). Se però inizializzo il rapporto come i\i-- e mi stampa nell'output 1 significa che considera i ed i-- lo stesso numero. (questa è l'unica giustificazione che mi viene in mente!) .
Di nuovo: grazie di tutto per la risposta e per tutti i chiarimenti che mi darete: sono davvero importanti! (Soprattutto per una incapace come me !!! :) )
aaa
25/11/12 13:14
Poggi Marco
Certamente, il rapporto sara sempre 1, perché usi l' incremento post fisso, di conseguenza prima legge il valore di i e poi lo incrementa o decrementa.
In ogni caso, la variabile i è superflua.
La successione di Fibonacci è una successione in sequenza di numeri interi naturali ciascun numero della quale è il risultato della somma dei due precedenti.
aaa