V I S U A L I Z Z A D I S C U S S I O N E |
rezzonico12 |
Inserito il - 12/06/2007 : 10:26:46 Sto scrivendo un programma che chiede in input una cifra >10 dollari ed in output visualizza quante monete da 50, 20 e 10 cent sono necessarie per cambiarla. Bisogna implementare una funzione che svolga questo compito, utilizzando il minor numero possibile di monete.
Per quanto sia un programma elementare, e per quanto abbia tentato diversi "stratagemmi", il programma funziona con i valori 10.0, 10.30, 10.40,10.50,10.80,10.90...Ma con 10.70, 10.60, 10.20, 10.10 non funziona, risulta un errore nella conversione resto->arrotondato. Che fesseria ho fatto? Decani dell'informatica, dateci un'occhiata.
Allegato: 200761210196_nonfunziona.txt
|
5 U L T I M E R I S P O S T E (in alto le pių recenti) |
rel |
Inserito il - 13/06/2007 : 22:59:11 Citazione: Messaggio inserito da Aiace
rel come huber.
ahahah mitico Aiace! "cosė ho iniziato a correre! ma di brutto brutto brutto!"  |
airbag |
Inserito il - 13/06/2007 : 13:32:48 come luber? |
Aiace |
Inserito il - 13/06/2007 : 11:45:54 rel come huber. |
rezzonico12 |
Inserito il - 13/06/2007 : 11:28:45 
Effettivamente la soluzione non è "ortodossa" ma comunque efficace. Grazie mille, a breve richiederÃ˛ altre consulenze  |
rel |
Inserito il - 13/06/2007 : 01:03:24 Ciao! č chiaramente un problema di arrotondamento al posto di arrotondato = int (resto * 10); prova ad utilizzare quest'altra istruzione: arrotondato = (resto * 11);
non č elegante ma funziona. in pratica nel tuo caso se resto era 0.2, moltiplicandolo per 10 veniva 1.9999 (e non 2 come ti aspettavi) [e questo accade (se non dico fesserie) per via della rappresentazione binaria della macchina]; di conseguenza prendendo solo la parte intera, ottenevi 1 anzichč 2. Fammi sapere se ti va bene come soluzione! Ciao  |