C++:Risolvere numeri romani!

Stato
Discussione chiusa ad ulteriori risposte.

Mr_x

Utente Silver
13 Giugno 2008
5
0
0
58
sono le 4,52 di notte e non avendo neinte da fare :asd: mi sono messo a scriviere un piccolo programmino che mi richiedeva il mio testo di studio del c++ il testo mi chiede di trovare il valore di un numero romano senza l'ausilio di array,io ho scritto questo codice che risolve senza problemi il valore del numero romano:

Codice:
#include <iostream>
#include <cstdlib>
using namespace std;

int main()
{
    int r=0,v2,n,;
    
    cout<<"da quanti valori è composto il numero? "<<endl;
    cin>>n;
    for (int i=0; i<n; i++) {
        int v;
        char m;        
        cout<<"inserire la "<<i+1<< " lettera :"<<endl;
        cin>>m;
        switch (m)
        {
               case 'I': v=1; break;
               case 'V': v=5; break;
               case 'X': v=10; break;
               case 'L': v=50; break;
               case 'C': v=100; break;
               case 'D': v=500; break;
               case 'M': v=1000; break;
               default:cout<<"non e un valore valido"<<endl;
        }
        if (v>r) r=v-r; else r=v+r;
        if (v>v2) r=r-2*v2;
        v2=v;
            
    }
    cout<<"il valore del numero è: "<<r<<endl;
        
     
    system("PAUSE");
    return 0;
   
}

vorrei sapere se trovate che abbia bisogno di qualche miglioramento in termini di leggibilità e struttura o comunque di qualche miglioramento in generale

grazie
 
Un sono consiglio (quello che dico sempre): leva il system("PAUSE") e metti cout<<"Premi un tasto per continuare...";getchar();
Perchè se non lo sapessi, la funzione system richiama un programma del sistema operativo, e pause c'è solo su winzoz, quindi mettendo quell'istruzione uccidi la portabilità del programma.

Per il resto, non so se ci sei arrivato con lo studio, potresti evitare la parte della richiesta del numero di lettere operando sulla stringa, senza array è un po' scomodo ma fattibile.
Per il resto, mi sembra che il blocco switch sia spostato più di tre spazi (l'identatura consigliara), e alla 14° riga c'è uno spazio di troppo tra l'operatore << e l'apertura delle virgolette (sono spaventoso eh?).
 
grazie per i consigli ;) ora saprò a chi affidarmi per i prossimi programmi
:asd:
 
Stato
Discussione chiusa ad ulteriori risposte.