PDA

Visualizza la versione completa : [C] Conversione numeri arabi in romani


robyy94
13-02-2011, 23:05
Ciao a tutti,

Ho bisogno di creare un algoritmo che dato in input un numero arabo lo trasformi in romano.

Ho giÓ provedduto a farlo, ma una volta eseguito non mi da nnt come output ... potete aiutarmi a trovare l'errore?









#include <stdio.h>
#include <stdlib.h>

int main() {
int unita;
int decine;
int centinaia;
int migliaia;
int num;

printf("Inserisci il numero che vuoi convertire:");
scanf("%d", &num);

migliaia=num/1000;
centinaia=(num-(migliaia*1000))/100;
decine=(num-(migliaia*1000)-(centinaia*100))/10;
unita=(num-(migliaia*1000)-(centinaia*100)-(decine*10));

switch(migliaia){

case '1': printf("M");
break;
case '2': printf("MM");
break;
case '3': printf("MMM");
break;
case '4': printf("MMMM");
break;
case '5': printf("MMMMM");
break;
case '6': printf("MMMMMM");
break;
case '7': printf("MMMMMMM");
break;
case '8': printf("MMMMMMMM");
break;
case '9': printf("MMMMMMMMM");
break;

}


switch (centinaia) {
case '1': printf("C");
break;
case '2': printf("CC");
break;
case '3': printf("CCC");
break;
case '4': printf("CD");
break;
case '5': printf("D");
break;
case '6': printf("DC");
break;
case '7': printf("DCC");
break;
case '8': printf("DCCC");
break;
case '9': printf("CM");
break;
}


switch (decine){
case '1': printf("X");
break;
case '2': printf("XX");
break;
case '3': printf("XXX");
break;
case '4': printf("XL");
break;
case '5': printf("L");
break;
case '6': printf("LX");
break;
case '7': printf("LXX");
break;
case '8': printf("LXXX");
break;
case '9': printf("XC");
break;
}


switch (unita){
case '1': printf("I");
break;
case '2': printf("II");
break;
case '3': printf("III");
break;
case '4': printf("IV");
break;
case '5': printf("V");
break;
case '6': printf("VI");
break;
case '7': printf("VII");
break;
case '8': printf("VIII");
break;
case '9': printf("IX");
break;
}

system("pause");
}

lolide
14-02-2011, 10:07
Originariamente inviato da robyy94
Ciao a tutti,

Ho bisogno di creare un algoritmo che dato in input un numero arabo lo trasformi in romano.

Ho giÓ provedduto a farlo, ma una volta eseguito non mi da nnt come output ... potete aiutarmi a trovare l'errore?
[/CODE]

Se l'output non lo stampi a schermo non l'avrai mai ;)

Per farlo usa la funzione printf(pattern, par1, par2, ...)

EDIT: scusa non avevo visto i printf.
Si la funzione Ŕ quasi giusta,Ŕ solo che nei case non devi inserire 'numero' ma numero senza apici.

linoma
14-02-2011, 10:13
Nn devi usare case 'cifra' ma solo case cifra: se il resto funge.

robyy94
14-02-2011, 11:13
Grazie mille dell'aiuto, il problema erano proprio gli apici del case!

Posto il codice funzionante.. magari potrÓ tornare utile a qualcun'altro






#include <stdio.h>
#include <stdlib.h>

int main() {
int unita;
int decine;
int centinaia;
int migliaia;
int num;

printf("Inserisci il numero che vuoi convertire:");
scanf("%d", &num);

migliaia=num/1000;
centinaia=(num-(migliaia*1000))/100;
decine=(num-(migliaia*1000)-(centinaia*100))/10;
unita=(num-(migliaia*1000)-(centinaia*100)-(decine*10));

switch(migliaia){

case 1: printf("M");
break;
case 2: printf("MM");
break;
case 3: printf("MMM");
break;
case 4: printf("MMMM");
break;
case 5: printf("MMMMM");
break;
case 6: printf("MMMMMM");
break;
case 7: printf("MMMMMMM");
break;
case 8: printf("MMMMMMMM");
break;
case 9: printf("MMMMMMMMM");
break;

}


switch (centinaia) {
case 1: printf("C");
break;
case 2: printf("CC");
break;
case 3: printf("CCC");
break;
case 4: printf("CD");
break;
case 5: printf("D");
break;
case 6: printf("DC");
break;
case 7: printf("DCC");
break;
case 8: printf("DCCC");
break;
case 9: printf("CM");
break;
}


switch (decine){
case 1: printf("X");
break;
case 2: printf("XX");
break;
case 3: printf("XXX");
break;
case 4: printf("XL");
break;
case 5: printf("L");
break;
case 6: printf("LX");
break;
case 7: printf("LXX");
break;
case 8: printf("LXXX");
break;
case 9: printf("XC");
break;
}


switch (unita){
case 1: printf("I");
break;
case 2: printf("II");
break;
case 3: printf("III");
break;
case 4: printf("IV");
break;
case 5: printf("V");
break;
case 6: printf("VI");
break;
case 7: printf("VII");
break;
case 8: printf("VIII");
break;
case 9: printf("IX");
break;
}

system("pause");
}

Loading