
Originariamente inviata da
torn24
Ciao, lo scopo dell'esercizio e che tu trovi la soluzione, in realtà l'esercizio non presenta nessun problema di programmazione "usa concetti base del linguaggio C", quindi l'essenza dell'esercizio è che tu trovi un ALGORITMO che risolva il problema.
Non è prassi fornire codice già pronto, ma io ti voglio fornire la parte del programma che esegue la conversione, visto che dovrai implementare il resto del programma, se non capisci come funziona non puoi scrivere il resto del programma...
DOVE ConvertiCifra() è una funzione che restituisce un numero intero da carattere romano
Dove Decimale è un int inizializzato a zero
codice:
for (i = 0; NumRomano[i] != 0; ) { // Per tutto il numero romano
/*Se la cifra è maggiore o ugguale della sucessiva */
if (ConvertiCifra(NumRomano[i]) >= ConvertiCifra(NumRomano[i + 1])) {
Decimale += ConvertiCifra(NumRomano[i]);
/* se il numero+1 è minore di numero+2*/
if (NumRomano[i + 2] != '\0' && ConvertiCifra(NumRomano[i + 1]) < ConvertiCifra(NumRomano[i + 2])) {
sottrarre = (ConvertiCifra(NumRomano[i + 2]) - ConvertiCifra(NumRomano[i + 1]));
Decimale += sottrarre;
i += 3;
}
else {
i++;
}
} /* se la cifra è minore della sucessiva */
else if (ConvertiCifra(NumRomano[i]) < ConvertiCifra(NumRomano[i + 1])) {
Decimale += (ConvertiCifra(NumRomano[i + 1]) - ConvertiCifra(NumRomano[i]));
i += 2;
}
}