Buenas, aqui estoy de nuevo, me da mucha rabia postear porque estais haciendo eel trabajo vosotros y no yo, pero es que no logro ver los fallos, supongo que sera por la falta enorme de practica que tengo. El programa, teóricamente, está terminado pero no se porque motivo no da el resultado esperado, aqui el codigo:
Probe con algunos numeros y haciendolo mentalmente con el codigo delante aparentemente funciona bien pero seguro que hay algun detalle que se me escapa porque sino tendria que funcionar bien el programa y de verdad que no doy visto donde esta el fallo, porque apostaria a que es una tonteria.
Un saludo
EDITO:Revisando el codigo me fije en que el fallo puede estar en los for's dentro del switch ya que puede ser problema de que la variable i que se utiliza en esos ciclos se ponga a 0 cada ez que se cmabia de cifra entonces eso de problemas, no se.
Código (c) [Seleccionar]
#include <stdio.h>
#include <math.h>
int main()
{
int num, i, j, cant_decimal = 0, z;
int digitos[3];
char letras[4][3] = { 'I', 'V', 'X'
'X', 'L', 'C',
'C', 'D', 'M',
'M'};
char digito_romano[20];
printf("Introduzca el numero (máximo 3 digitos):\n");
scanf("%d", &num);
for (i = 2; i >= 0; i--)
{
digitos[i] = num / (pow(10, i));
num -= digitos[i] * (pow(10, i));
}
printf("%d\n", digitos[0]);
printf("%d\n", digitos[1]);
printf("%d\n", digitos[2]);
for(j = 0; j <= 3; j++)
{
switch(digitos[j])
{
case 1:
case 2:
case 3:
for( i = 0; i < digitos[j]; i++ )
digito_romano[i] = letras[cant_decimal][0];
break;
case 4:
for( i = 0; i < 2; i++ )
digito_romano[i] = letras[cant_decimal][i];
break;
case 5:
digito_romano[0] = letras[cant_decimal][1];
i++;
break;
case 6:
case 7:
case 8:
digito_romano[0] = letras[cant_decimal][1];
for( i = 1; i <= digitos[j] - 5; i++ )
digito_romano[i] = letras[cant_decimal][0];
break;
case 9:
digito_romano[0] = letras[cant_decimal][0];
digito_romano[1] = letras[cant_decimal][2];
i = 2;
break;
}
digito_romano[i] = '\0';
cant_decimal++;
}
for(z=0; z <= 20; z++)
printf("%c", digito_romano[z]);
return 0;
}
Probe con algunos numeros y haciendolo mentalmente con el codigo delante aparentemente funciona bien pero seguro que hay algun detalle que se me escapa porque sino tendria que funcionar bien el programa y de verdad que no doy visto donde esta el fallo, porque apostaria a que es una tonteria.
Un saludo
EDITO:Revisando el codigo me fije en que el fallo puede estar en los for's dentro del switch ya que puede ser problema de que la variable i que se utiliza en esos ciclos se ponga a 0 cada ez que se cmabia de cifra entonces eso de problemas, no se.