Oppure

Loading
23/08/09 17:07
K2
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
#include <iostream>
int punteggio;
int main()
{
    
   
    std::cout <<" Dammi il punteggio totale fatto: ";
    std::cin >> punteggio;
    if(punteggio <= 60) {
       std::cout <<" Il voto e' F,\n";
       std::cout <<" non hai manco aperto il libro\n";
       }
       if((punteggio >= 61)&&(punteggio <=70)) {
              std::cout <<" Il voto e' D,\n";
              std::cout <<" E' meglio che incominci a studiare\n";
              } 
              if((punteggio >= 71) && (punteggio <= 80)) {
              std::cout <<" Il voto e' C,\n";
              std::cout <<" Appena sufficiente, puoi fare di meglio\n"; 
              }
                    if((punteggio >=81) && (punteggio <= 90)) {
                        std::cout <<" Il voto e' B,\n";
                        std::cout <<" Bravo, ci sono pochi errori\n";
                        }
                        if((punteggio >= 91) && (punteggio <= 100)) {
                        std::cout <<" Il voto e' A,\n";
                        std::cout <<" Complimenti, continua cosi'\n";
                        }
                        system("pause");
                        return(0); 
                        }
                        

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 24/08/09 9:53
aaa
23/08/09 17:19
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à.
aaa
23/08/09 18:48
NewAge
per non perdere i decimali usa 'float' invece che int
aaa
23/08/09 19:03
manvb.net
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)
aaa
23/08/09 23:18
gigisoft
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 ) ?
aaa
23/08/09 23:56
manvb.net
Postato originariamente da gigisoft:

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...
aaa
24/08/09 9:49
K2
Credo di avere capito, ma non potreste farmi un esempio in codice, così forse riesco a implementarlo nel programma che ho scritto sopra.
Grazie.
aaa
24/08/09 10:13
gigisoft
Ciao,

dovresti fare qualcosa del genere:

[...]

short int c; // ultima cifra ricavata dal punteggio
char car; // simbolo da aggiungere al voto in lettere

[...]

c = punteggio % 10 // Resto della divisione punteggio/10
switch (c) {
case 1:
case 2:
case 3: car = '-'; break;
case 8:
case 9:
case 0: car = '+'; break;
default car = ' ';
}

[...]



Ciao. :k:

Luigi
Ultima modifica effettuata da gigisoft 24/08/09 10:14
aaa