Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/01/2006, 16:19
Amagoia686
 
Fecha de Ingreso: junio-2005
Mensajes: 53
Antigüedad: 19 años, 3 meses
Puntos: 0
Buscando errores

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);
}
}