[ Foro de C ]

error en programa

22-Jun-2022 17:31
edwin Abris
0 Respuestas

Hola a todos, tengo un programa que convierte números enteros a romanos, pero a la hora de correrlo muesta primero el número en romanos y despues la leyenda, lo cual debería ser al revés, primero imprimir la leyenda y despúes el número en romanos, además de esto alfinal aparece esto "(null)".
este es el código espero me puedan ayudar

#include <stdio.h>

char * Entero2Roman (unsigned int n);

int main()
{
   int n = 2022;
   
   
   printf("El numero 2022 en numeros romanos es: %s",Entero2Roman (n));
 
   return 0;
}

char * Entero2Roman (unsigned int n)
{
   int unidades, decenas, centenas , millares;
   
   unidades = n%10; n = n /10;
   decenas = n%10; n = n /10;
   centenas = n%10; n = n /10;
   millares = n%10; n = n /10;
   
    switch(millares){
       case 1: printf("M"); break;
       case 2: printf("MM"); break;
       case 3: printf("MMM"); break;
   }
   
   switch(centenas){
       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(decenas){
       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(unidades){
       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;
   }
   
   return 0;
}




(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)