Este programa te saca la equivalencia en numeros romanos de la cantidad que metas, tengo que encontrar los errores, pero no llevo mucho tiempo programando y a lo mejor peco unppoco de novatilla, alguien me podria decir donde estan los fallos o que es lo que deberia poner??
Grasias
#include <stdio.h>
#include <conio.h>
void romano(int,int);
void romano2(char,char,char,int);
void escribe(char,int);
void main()
{
int num,num2,div;
do{
clrscr();
printf("Introduzca numero decimal a convertir (0 para salir) => ");
scanf("%d",&num);
num2=num;
if(num!=0)
{
div=1000;
printf("El numero romano equivalente es => ");
while(num!=0)
{
romano(num/div,div);
num=num%div;
div=div/10;
}
getch();
fflush(stdin);
}
}while(num2!=0);
}
///////////////////////////////////////////////////////////////////////////////
void romano(int cant,int div)
{
switch(div)
{
case 1000: printf("M",cant);
break;
case 100: printf("C","M","D",cant);
break;
case 10: printf("X","L","C");
break;
case 1: printf("I","V","X",cant);
break;
}
}
///////////////////////////////////////////////////////////////////////////////
void romano2(char u, char d, char c,int cant)
{
switch (cant)
{
case 1:
case 2:
case 3: escribe(u,cant);
break;
case 4:
case 5: escribe(u,5-cant);
escribe(d,1);
break;
case 6:
case 7:
case 8: escribe(d,1);
escribe(u,cant-5);
break;
case 9:
escribe(u,5-cant);
escribe(d,1);
break;
}
}
///////////////////////////////////////////////////////////////////////////////
void escribe(char car,int veces)
{
int i;
for(i=1;i<=veces;i++)
{
putchar(car);
}
}