K2 (Normal User)
Rookie
Messaggi: 27
Iscritto: 08/08/2008
|
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++ |
#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 il 24/08/2009 alle 11:53 |
|
netarrow (Admin)
Guru^2
Messaggi: 2502
Iscritto: 12/05/2004
|
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à.
|
|
NewAge (Normal User)
Pro
Messaggi: 153
Iscritto: 23/08/2009
|
per non perdere i decimali usa 'float' invece che int
|
|
manvb.net (Member)
Guru
Messaggi: 663
Iscritto: 28/01/2008
|
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) |
|
gigisoft (Member)
Guru
Messaggi: 696
Iscritto: 11/10/2008
|
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 ) ? |
|
manvb.net (Member)
Guru
Messaggi: 663
Iscritto: 28/01/2008
|
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... |
|
K2 (Normal User)
Rookie
Messaggi: 27
Iscritto: 08/08/2008
|
Credo di avere capito, ma non potreste farmi un esempio in codice, così forse riesco a implementarlo nel programma che ho scritto sopra.
Grazie.
|
|
gigisoft (Member)
Guru
Messaggi: 696
Iscritto: 11/10/2008
|
Ciao,
dovresti fare qualcosa del genere:
Codice sorgente - presumibilmente C# |
[...] 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.
Luigi
Ultima modifica effettuata da gigisoft il 24/08/2009 alle 12:14 |
|
netarrow (Admin)
Guru^2
Messaggi: 2502
Iscritto: 12/05/2004
|
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 ) ? |
certo, ma non mi era passato per la testa. |
|