Ciao a tutti, sto creando un programma per convertire numeri romani, il problema è che non funziona come dovrebbe, io inizialmente avevo pensato di di vedere le decine dei numeri esempio prendiamo il 50, io nel ciclo if dichiaro che 50 = L (per le decine) e per le unita invece sotraggo ad 'a' 50 cosi mi rimane solo piu un numero da decifrare.
questo numero (a) lo passo a switch che controlla a cosa corisponde l'unita.
il problema è che mi da degli avvertimenti l'editor, io chiedo alla persona che vuole convertire il numero un numero con variabile char perche con int non posso convertirla in char, ammeno che non faccio un casting, però se faccio cosi, senza chiedere prima un int e poi convertirlo in char, non posso farlo eseguire correttamente il programma?
ve lo faccio vedere:
codice:
#include <stdio.h>
int main (int argc, const char * argv[]) {
char a;
char b;
printf("Che numero vorresti convertire in numero romano\? \n");
scanf("%c", &a);
if (a >= 10 && a<= 19) {
b = 'XX';
a -= 10;
}
else if (a >= 20 && a<= 29) {
b = 'XX';
a -= 20;
}
else if (a >= 30 && a<= 39) {
b = 'XXX';
a -= 30;
}
else if (a >= 40 && a <= 49) {
b = 'XL';
a -= 40;
}
else if (a >= 50 && a <= 59) {
b = 'L';
a -= 50;
}
else if (a >= 60 && a <= 69) {
b = 'LX';
a -= 60;
}
else if (a >= 70 && a <= 79) {
b = 'LXX';
a -= 70;
}
else if (a >= 80 && a <= 89) {
b = 'LXXX';
a -= 80;
}
else if (a >= 90 && a <= 99) {
b = 'XC';
a -= 90;
}
else if (a == 100) {
b = 'C';
a -= 100;
}
else{
printf("Hai inserito un numero minore di 1 e superiore di 100!");
}
switch (a) {
case 0:
a =' ';
break;
case 1:
a = 'I';
break;
case 2:
a = 'II';
break;
case 3:
a = 'III';
break;
case 4:
a = 'IV';
break;
case 5:
a = 'V';
break;
case 6:
a = 'VI';
break;
case 7:
a = 'VII';
break;
case 8:
a = 'VIII';
break;
case 9:
a = 'IX';
break;
}
printf("Il numero è: %c%c", b, a);
return 0;
}
Spero di essere stato chiaro, perche ho spiegato abbastanza bene anche se un po in modo confuso... =D