|
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. | NEI PREFERITI | .:: | RSS Forum | RSS News | NEWS web | NEWS software | |
| PUBBLICITA' | | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | | CERCA nel FORUM » | |
03-04-2004, 23.57.34 | #1 | |
Gold Member
Top Poster
Registrato: 04-09-2002
Loc.: Roma
Messaggi: 4.022
|
Fattoriale
Quota:
Ultima modifica di Downloader : 04-04-2004 alle ore 00.20.32 |
|
04-04-2004, 00.09.56 | #2 |
Gold Member
Top Poster
Registrato: 18-07-2002
Messaggi: 6.399
|
Guarda cosa fai alla povera variabile n nel bel mezzo del ciclo for...
p.s: indenta il codice, è tutta un'altra vita |
04-04-2004, 00.13.19 | #3 |
Gold Member
Top Poster
Registrato: 04-09-2002
Loc.: Roma
Messaggi: 4.022
|
Azz non mi sono accorto che tutta l'indentatura fatta con l'editor è andata a farsi benedire qua.
|
04-04-2004, 00.14.54 | #4 |
Gold Member
Top Poster
Registrato: 04-09-2002
Loc.: Roma
Messaggi: 4.022
|
che gle faccio di male? |
04-04-2004, 00.21.59 | #5 |
Gold Member
Top Poster
Registrato: 18-07-2002
Messaggi: 6.399
|
Entri nel ciclo for con:
i=0 n=10 ed entra poichè i<n. Poi, nel do-while della prima iterazione del for, porti n fino a 1 (while n>0). Adesso non esegue più un'altra iterazione del for poichè i=1, n=1 e !(i<n). Quindi ti dà risultati ovviamente sbagliati... Il metodo per calcolare il fattoriale è corretto, solo che è mancante di qualche piccolo accorgimento (a parte la storia dello 0 e dell'1, ma su quello siamo d'accordo ) Ciao |
04-04-2004, 00.46.18 | #6 | |
Gold Member
Top Poster
Registrato: 04-09-2002
Loc.: Roma
Messaggi: 4.022
|
Ho provato a fare in sto modo ma nn funziona uguale.
Quota:
|
|
04-04-2004, 01.00.00 | #7 |
Gold Member
Top Poster
Registrato: 18-07-2002
Messaggi: 6.399
|
Certo che non funziona
Prova a guardare bene come calcoli il valore del fattoriale nel ciclo do-while... controlla bene i valori che hanno TUTTE le variabili ad ogni iterazione e scoprirari l'errore hint: guarda i valori assunti da tot |
04-04-2004, 01.09.24 | #8 |
Gold Member
Top Poster
Registrato: 04-09-2002
Loc.: Roma
Messaggi: 4.022
|
Azz, si vede che ho sonno, alla prima occhiata ho gia trovato un errore del cacchio.
meglio che lo faccio domani a mente fresca. Grazie per l'aiuto prezioso poi ti faro sapere come va. |
04-04-2004, 01.16.02 | #9 | |
Gold Member
Top Poster
Registrato: 18-07-2002
Messaggi: 6.399
|
Quota:
Sono bastardo che non ti dico l'errore, ma se te lo svelo poi magari ti capita di farlo un'altra volta |
|
04-04-2004, 01.51.44 | #10 |
Gold Member
Top Poster
Registrato: 04-09-2002
Loc.: Roma
Messaggi: 4.022
|
Mannaggia a me quanto so duro!
C'avevo il problema (stupidissimo) sotto il naso e non lo vedevo. Ho risolto tutto, grazie mille Dav!! (Y) Ora basta che metto un paio di condizioni e finisco tutto. |
04-04-2004, 02.13.58 | #11 | |
Gold Member
Top Poster
Registrato: 04-09-2002
Loc.: Roma
Messaggi: 4.022
|
INCREDIBILE!!!
Se inserisco i numeri in ordine numerico, funziona tutto, se li metto a cavolo succede il finimondo. E dall'inserimento del numero 8 non so perchè da un numero sballato. Quota:
|
|
04-04-2004, 02.31.12 | #12 |
Gold Member
Top Poster
Registrato: 18-07-2002
Messaggi: 6.399
|
Certo.
Dai va, questa te la spiego che in effetti è un po' più complicata! Ogni ciclo for entri UNA sola volta nel do-while, poichè n non sarà mai uguale a 1 se il tuo input è una cosa tipo 6, 8, 9... (e se è uguale a 2 il do-while viene eseguito due volte ma tanto non cambia molto, visto che moltiplica tot per 1). Ma allora perchè ti dà risultati corretti? Semplice: tu non azzeri mai il valore di tot, che all'inizio del calcolo del nuovo fattoriale è pari al valore del fattoriale dell'input precedente, e visto che il do-while lo fai una sola volta, e proprio moltiplicando per il numero inserito, ottieni il risultato corretto. Per il problema dell'8 prova a vedere se questo ti dice qualcosa: 8! = 40320 > 2^15 = 32768 Ciao |
04-04-2004, 14.24.37 | #13 |
Gold Member
Top Poster
Registrato: 04-09-2002
Loc.: Roma
Messaggi: 4.022
|
Allora ho finito il programma (mamma mia ieri sera ero cotto) ma ancora non mi spiego l'8!
|
04-04-2004, 17.51.41 | #14 |
Gold Member
Top Poster
Registrato: 18-07-2002
Messaggi: 6.399
|
In sostanza per gli "int" il compilatore riserva 2 byte, quindi 16 bit, e quindi gli int possono assumere i valori da -2^15 a 2^15-1. Fuori da questo intervallo sballano (il range è proprio 2* 2^15 = 2^16, 16 bit)
Dovresti usare un long, se non un double (boh, guarda nell'help del compilatore) per i numeri più grandi. Tieni presente che la funzione fattoriale aumenta più che esponenzialmente quindi... Ciao Ultima modifica di Dav82 : 04-04-2004 alle ore 18.09.55 |
04-04-2004, 19.51.45 | #15 |
Gold Member
Top Poster
Registrato: 04-09-2002
Loc.: Roma
Messaggi: 4.022
|
Non ricordavo il limite degli int, ora funziona tutto alla grande.
Mo sto 7 a scuola non me lo toglie nessuno!!! Grazie 1000 per il preziosissimo aiuto. (Y) |
Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti) | |
Strumenti discussione | |
|
|
Discussioni simili | ||||
Discussione | Autore discussione | Forum | Risposte | Ultimo messaggio |
Lo Spammangolo [Nait, ce pensi tu?] | Sbavi | Chiacchiere in libertà | 2007 | 18-01-2008 16.55.09 |
[C] Ricorsività | Downloader | Programmazione | 9 | 09-11-2007 17.17.46 |
Combinazioni di un array | paoloGrezzo | Programmazione | 2 | 23-06-2007 14.08.20 |
Numeri cumulati | Downloader | Programmazione | 16 | 19-05-2004 01.17.56 |
Funzioni ricorsive | GiulioCesare | Programmazione | 2 | 08-09-2003 23.40.11 |