Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Problemino con esercizio monete e dollari
Forum - C/C++ - Problemino con esercizio monete e dollari

Avatar
luca260786 (Normal User)
Rookie


Messaggi: 22
Iscritto: 10/01/2008

Segnala al moderatore
Postato alle 11:08
Mercoledì, 27/02/2013
Ciao a tutti ho un problema con un esercizio: Scrivete un programma che chieda all'utente di inserire un importo in dollari e poi mostri come pagarlo utilizzando il minor numero di biglietti da 20$, 10$, 5$ e 1$. Il consiglio che mi viene dato dall'autore di Programmazione in C dell'apogeo è: Dividete la somma per 20 per determinare il numero di biglietti di 20$ dollari necessari e dopo riducete l'ammontare del valore totale dei biglietti da 20$. Ripetete lo stesso procedimento per i biglietti delle altre taglie. Assicuratevi di usare i valori interi e non a virgola mobile. Allora il problema è che non riesco a capire di quale somma parla ecco il codice:
Codice sorgente - presumibilmente C++

  1. /*****************************************************/
  2. /* Progetti di Programmazione: Esercizio 7 pagina 36 */
  3. /*****************************************************/
  4.  
  5. /*****************************/
  6. /* Inclusione delle librerie */
  7. /*****************************/
  8. #include <stdio.h>
  9.  
  10. /* Definizione della funzione main */
  11. int main(void)
  12. {
  13.         /* Dichiarazione delle variabili locali alla funzione */
  14.         int dollari = 0;                /* input: Variabile per l'importo in dollari da pagare */
  15.         int numero_monete_20 = 0;       /* output: numero delle monete da 20$ */
  16.         int numero_monete_10 = 0;       /* output: numero delle monete da 10$ */
  17.         int numero_monete_5 = 0;        /* output: numero delle monete da  5$ */
  18.         int numero_monete_1 = 0;        /* output: numero delle monete da  1$ */
  19.  
  20.         do
  21.         {      
  22.                 /* Chiedo all'utente di inserire l'importo da pagare */
  23.                 printf("Inserisci l'importo dei dollari da pagare: ");
  24.                 scanf("%d", &dollari);
  25.                
  26.                 /* Controllo dell'inserimento dell'importo */
  27.                 if (dollari == 0)
  28.                 {
  29.                         printf("ATTENZIONE INSERIRE VALORI DIVERSI DA 0 GRAZIE");
  30.                 }
  31.         }
  32.         while(dollari == 0);
  33.        
  34.         numero_monete_20 = dollari / 20;
  35.         numero_monete_10 = dollari / 20;
  36.         numero_monete_5 = dollari / 20;
  37.         numero_monete_1 = dollari / 20;
  38.        
  39.         printf("Il numero delle monete da 20$ e' %d\n", numero_monete_20);
  40.         printf("Il numero delle monete da 10$ e' %d\n", numero_monete_10);
  41.         printf("Il numero delle monete da 5$ e' %d\n", numero_monete_5);
  42.         printf("Il numero delle monete da 1$ e' %d\n", numero_monete_1);
  43.  
  44.         return(0);     
  45. }



Ubuntu come warning mi da ignoring return value of scanf come protrei risolvere questo warning purtroppo non devo avere ne errori ne warning?
Grazie a tutti per l'aiuto.

Ultima modifica effettuata da luca260786 il 27/02/2013 alle 11:23
PM Quote
Avatar
Poggi Marco (Member)
Guru


Messaggi: 969
Iscritto: 05/01/2010

Segnala al moderatore
Postato alle 16:05
Mercoledì, 27/02/2013
Ciao!

Per calcolare quante banconote occorrono per ogni taglio, devi dividere il totale per il valore della banconote - con un cast -. E successivamente, devi sottrarre dal totale l' importo complessivo delle banconote in esame

Esempio:
Codice sorgente - presumibilmente Plain Text

  1. numero_monete_20 = (int) dollari / 20;
  2. dollari=dollari - (numero_monete_20 * 20);
  3. // lo stesso per gili altri tagli



La funzione scanf restituisce un valore int che determina l' esito della funzione:http://www.cplusplus.com/reference/cstdio/scanf/

Qiundi, se vuoi evitare il warning devi dichiarare:
Codice sorgente - presumibilmente C/C++

  1. ...
  2.     int esito=0;
  3.     esito=scanf("%d", &dollari);
  4.     ...


PM Quote
Avatar
luca260786 (Normal User)
Rookie


Messaggi: 22
Iscritto: 10/01/2008

Segnala al moderatore
Postato alle 14:04
Giovedì, 28/02/2013
Testo quotato

Postato originariamente da Poggi Marco:

Ciao!

Per calcolare quante banconote occorrono per ogni taglio, devi dividere il totale per il valore della banconote - con un cast -. E successivamente, devi sottrarre dal totale l' importo complessivo delle banconote in esame

Esempio:
Codice sorgente - presumibilmente Plain Text

  1. numero_monete_20 = (int) dollari / 20;
  2. dollari=dollari - (numero_monete_20 * 20);
  3. // lo stesso per gili altri tagli



La funzione scanf restituisce un valore int che determina l' esito della funzione:http://www.cplusplus.com/reference/cstdio/scanf/

Qiundi, se vuoi evitare il warning devi dichiarare:
Codice sorgente - presumibilmente C/C++

  1. ...
  2.     int esito=0;
  3.     esito=scanf("%d", &dollari);
  4.     ...




Ciao grazie 1000 per l'aiuto :asd: :asd:
La prima parte è apposto funziona strano non ci avevo proprio pensato, cmq strano che al secondo capito mette un esercizio del genere. La seconda parte purtroppo non funziona mi da 2 warning uno che la variabile esito non viene usata e il secondo sempre l'ignoramento del valore di ritorno della scanf. Suggerimenti? Grazie.

Ultima modifica effettuata da luca260786 il 28/02/2013 alle 14:28
PM Quote
Avatar
Poggi Marco (Member)
Guru


Messaggi: 969
Iscritto: 05/01/2010

Segnala al moderatore
Postato alle 11:04
Venerdì, 01/03/2013
Inserisci "esito" in un if, per verificare che la scanf sia andata a buon fine.

PM Quote