elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


  Mostrar Temas
Páginas: [1]
1  Programación / Programación C/C++ / Problema con mi codigo en: 8 Noviembre 2014, 13:03 pm
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 .

Código
  1. #include <stdio.h>
  2. char n;
  3. int suma=0;
  4. int a;
  5. int b;
  6. int main () {
  7. printf("Escribe un numero en romano \n");
  8. scanf("%c",&n);
  9.    if (n=='I' || n=='V' || n=='X' || n=='L' || n=='C' || n=='D' || n=='M' || n=='\n'){
  10.        while (n!='\n'){
  11.            if (n=='I') {
  12.                    a=1;
  13.                    if(b<a) { suma=suma+(a-b); }
  14.                    else { suma=suma+(a+b);}
  15.            }
  16.            if (n=='V') {
  17.                    a=5;
  18.                    if(b<a) { suma=suma+(a-b); }
  19.                    else { suma=suma+(a+b); }
  20.            }
  21.            if (n=='X') {
  22.                    a=10;
  23.                    if(b<a) { suma=suma+(a-b); }
  24.                    else { suma=suma+(a+b); }
  25.            }
  26.            if (n=='L') {
  27.                    a=50;
  28.                    if(b<a) { suma=suma+(a-b); }
  29.                    else { suma=suma+(a+b); }
  30.            }
  31.            if (n=='C') {
  32.                    a=100;
  33.                    if(b<a) { suma=suma+(a-b); }
  34.                    else { suma=suma+(a+b); }
  35.            }
  36.            if (n=='D') {
  37.                    a=500;
  38.                    if(b<a) { suma=suma+(a-b); }
  39.                    else { suma=suma+(a+b); }
  40.            }
  41.            if (n=='M') {
  42.                    a=1000;
  43.                    if(b<a) { suma=suma+(a-b); }
  44.                    else { suma=suma+(a+b); }
  45.            }
  46.            b=a;
  47.            scanf("%n",&n);
  48.        }
  49.  
  50.    }
  51.    else {
  52.        fprintf(stderr,"ERROR: El numero introducido no es correcto \n");
  53.        return -1;
  54.    }
  55. printf("Este es el numero: %i",suma);
  56.    return 0;
  57. }



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.
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines