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++ - ESERCIZIO
Forum - C/C++ - ESERCIZIO

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
K2 (Normal User)
Rookie


Messaggi: 27
Iscritto: 08/08/2008

Segnala al moderatore
Postato alle 19:07
Domenica, 23/08/2009
Sto eseguendo degli esercizi di programmazione. Il primo esercizio dice: Un professore ricava voti in lettere utilizzando questa tabella: 0-60 (A) 61-70 (D) 71-80 (C) 81-90 (B) 91-100 (A). Con questa devo scrivere un programma che accetta un voto numerico e visualizza il voto corrispondente. Fin qua nessun problema, ecco il codice
Codice sorgente - presumibilmente C/C++

  1. #include <iostream>
  2. int punteggio;
  3. int main()
  4. {
  5.    
  6.    
  7.     std::cout <<" Dammi il punteggio totale fatto: ";
  8.     std::cin >> punteggio;
  9.     if(punteggio <= 60) {
  10.        std::cout <<" Il voto e' F,\n";
  11.        std::cout <<" non hai manco aperto il libro\n";
  12.        }
  13.        if((punteggio >= 61)&&(punteggio <=70)) {
  14.               std::cout <<" Il voto e' D,\n";
  15.               std::cout <<" E' meglio che incominci a studiare\n";
  16.               }
  17.               if((punteggio >= 71) && (punteggio <= 80)) {
  18.               std::cout <<" Il voto e' C,\n";
  19.               std::cout <<" Appena sufficiente, puoi fare di meglio\n";
  20.               }
  21.                     if((punteggio >=81) && (punteggio <= 90)) {
  22.                         std::cout <<" Il voto e' B,\n";
  23.                         std::cout <<" Bravo, ci sono pochi errori\n";
  24.                         }
  25.                         if((punteggio >= 91) && (punteggio <= 100)) {
  26.                         std::cout <<" Il voto e' A,\n";
  27.                         std::cout <<" Complimenti, continua cosi'\n";
  28.                         }
  29.                         system("pause");
  30.                         return(0);
  31.                         }


Poi però un secondo esercizio dice: Modifica il programma precedente per visualizzare un + o un - dopo la lettera del voto, in base all'ultima cifra del voto. I modificatori sono:
1-3 -
4-7 <niente>
8-0 +
Per esempio: 81=B-, 94=A e 68=D+
Mi sono scervellato tutto il pomeriggio, ma non riesco a risolverlo. Come faccio ad indicare a c++ di aggiungere un modificatore in base all'ultima cifra del voto?
Nessuno avrebbe qualche idea? Suppongo si possa ottenere il risultato in diversi modi.
:)

Ultima modifica effettuata da K2 il 24/08/2009 alle 11:53
PM Quote
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 19:19
Domenica, 23/08/2009
se hai topo 81, potresti fare 81 - 80.
se hai 86 86 - 80 e così via.
come fare a individuare 80?

fai 86 / 10 castato a int, e diventa 8 perchè perdi la precisione 0,6.
rimoltiplichi per 10 e ti rimane 80 o in generale il valore al netto dell'unità.

la differenza fra prima e dopo sarà quindi l'unità.



Mai memorizzare quello che puoi comodamente trovare in un libro.
Imparare è un'esperienza; tutto il resto è solo informazione.
L'immaginazione è più importante della conoscenza.
(A. Einstein)


Esistendo poi google...
PM Quote
Avatar
NewAge (Normal User)
Pro


Messaggi: 153
Iscritto: 23/08/2009

Segnala al moderatore
Postato alle 20:48
Domenica, 23/08/2009
per non perdere i decimali usa 'float' invece che int

PM Quote
Avatar
manvb.net (Member)
Guru


Messaggi: 663
Iscritto: 28/01/2008

Segnala al moderatore
Postato alle 21:03
Domenica, 23/08/2009
Testo quotato

Postato originariamente da NewAge:

per non perdere i decimali usa 'float' invece che int



Mi sa che non hai capito, lo scopo è proprio perderli i decimali, per trovare l'unità(e di conseguenza, moltiplicando per 10, le decine)


"E' facile distruggere, la vera sfida è creare!"(cit. me)

"Ricordati chi sei, non permettere a nessuno di cambiarti, non perdere mai te stesso. Farai grandi cose nella vita."(cit. me)

double penetration; //ouch
PM Quote
Avatar
gigisoft (Member)
Guru


Messaggi: 695
Iscritto: 11/10/2008

Segnala al moderatore
Postato alle 1:18
Lunedì, 24/08/2009
Testo quotato

Postato originariamente da netarrow:

se hai topo 81, potresti fare 81 - 80.
se hai 86 86 - 80 e così via.
come fare a individuare 80?

fai 86 / 10 castato a int, e diventa 8 perchè perdi la precisione 0,6.
rimoltiplichi per 10 e ti rimane 80 o in generale il valore al netto dell'unità.

la differenza fra prima e dopo sarà quindi l'unità.



ma scusa non fa prima a fare

86 % 10

per avere il resto della divisione 86/10 ( cioe' l'ultima cifra, proprio cio' che voleva ) ?


Le cose si fanno per bene o non si fanno affatto
PM Quote
Avatar
manvb.net (Member)
Guru


Messaggi: 663
Iscritto: 28/01/2008

Segnala al moderatore
Postato alle 1:56
Lunedì, 24/08/2009
Testo quotato

Postato originariamente da gigisoft:

Testo quotato

Postato originariamente da netarrow:

se hai topo 81, potresti fare 81 - 80.
se hai 86 86 - 80 e così via.
come fare a individuare 80?

fai 86 / 10 castato a int, e diventa 8 perchè perdi la precisione 0,6.
rimoltiplichi per 10 e ti rimane 80 o in generale il valore al netto dell'unità.

la differenza fra prima e dopo sarà quindi l'unità.



ma scusa non fa prima a fare

86 % 10

per avere il resto della divisione 86/10 ( cioe' l'ultima cifra, proprio cio' che voleva ) ?



Si, in effetti...


"E' facile distruggere, la vera sfida è creare!"(cit. me)

"Ricordati chi sei, non permettere a nessuno di cambiarti, non perdere mai te stesso. Farai grandi cose nella vita."(cit. me)

double penetration; //ouch
PM Quote
Avatar
K2 (Normal User)
Rookie


Messaggi: 27
Iscritto: 08/08/2008

Segnala al moderatore
Postato alle 11:49
Lunedì, 24/08/2009
Credo di avere capito, ma non potreste farmi un esempio in codice, così forse riesco a implementarlo nel programma che ho scritto sopra.
Grazie.

PM Quote
Avatar
gigisoft (Member)
Guru


Messaggi: 695
Iscritto: 11/10/2008

Segnala al moderatore
Postato alle 12:13
Lunedì, 24/08/2009
Ciao,

dovresti fare qualcosa del genere:

Codice sorgente - presumibilmente C#

  1. [...]
  2.  
  3. short int c; // ultima cifra ricavata dal punteggio
  4. char car; // simbolo da aggiungere al voto in lettere
  5.  
  6. [...]
  7.  
  8. c = punteggio % 10 // Resto della divisione punteggio/10
  9. switch (c) {
  10. case 1:
  11. case 2:
  12. case 3: car = '-'; break;
  13. case 8:
  14. case 9:
  15. case 0: car = '+'; break;
  16. default car = ' ';
  17. }
  18.  
  19. [...]



Ciao. :k:

Luigi

Ultima modifica effettuata da gigisoft il 24/08/2009 alle 12:14


Le cose si fanno per bene o non si fanno affatto
PM Quote
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 16:02
Lunedì, 24/08/2009
Testo quotato

Postato originariamente da gigisoft:

Testo quotato

Postato originariamente da netarrow:

se hai topo 81, potresti fare 81 - 80.
se hai 86 86 - 80 e così via.
come fare a individuare 80?

fai 86 / 10 castato a int, e diventa 8 perchè perdi la precisione 0,6.
rimoltiplichi per 10 e ti rimane 80 o in generale il valore al netto dell'unità.

la differenza fra prima e dopo sarà quindi l'unità.



ma scusa non fa prima a fare

86 % 10

per avere il resto della divisione 86/10 ( cioe' l'ultima cifra, proprio cio' che voleva ) ?



certo, ma non mi era passato per la testa.



Mai memorizzare quello che puoi comodamente trovare in un libro.
Imparare è un'esperienza; tutto il resto è solo informazione.
L'immaginazione è più importante della conoscenza.
(A. Einstein)


Esistendo poi google...
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo