Buenas este año empiezo ingeniería informática y me he quedado encallado en una de mis practicas. Tengo que hacer un convertidor de números romanos a decimales solo se me permite procesar I V X L D M y el salto de linea para cualquier otro tengo que sacar mensaje de error y salir . Este es mi código, a ver si alguien me echa un cable .#include <stdio.h>
char n;
int suma=0;
int a;
int b;
int main () {
printf("Escribe un numero en romano \n"); if (n=='I' || n=='V' || n=='X' || n=='L' || n=='C' || n=='D' || n=='M' || n=='\n'){
while (n!='\n'){
if (n=='I') {
a=1;
if(b<a) { suma=suma+(a-b); }
else { suma=suma+(a+b);}
}
if (n=='V') {
a=5;
if(b<a) { suma=suma+(a-b); }
else { suma=suma+(a+b); }
}
if (n=='X') {
a=10;
if(b<a) { suma=suma+(a-b); }
else { suma=suma+(a+b); }
}
if (n=='L') {
a=50;
if(b<a) { suma=suma+(a-b); }
else { suma=suma+(a+b); }
}
if (n=='C') {
a=100;
if(b<a) { suma=suma+(a-b); }
else { suma=suma+(a+b); }
}
if (n=='D') {
a=500;
if(b<a) { suma=suma+(a-b); }
else { suma=suma+(a+b); }
}
if (n=='M') {
a=1000;
if(b<a) { suma=suma+(a-b); }
else { suma=suma+(a+b); }
}
b=a;
}
}
else {
fprintf(stderr
,"ERROR: El numero introducido no es correcto \n"); return -1;
}
printf("Este es el numero: %i",suma
); return 0;
}
Solo se me permiten usar condicionales if, else if, else y bucles while y for. Nada de arrays . Ni break.
Cuando ejecuto me reconoce si es uno de los caracteres permitidos y saca mensaje de error si no es el esperado, pero cuando pongo uno de los esperados no hace nada.