Tengo problemas con un bule en DEV-C

hou6
25 de Noviembre del 2009
hola en bule while (x!=0) no me funciona bien haber si alguno de vosotros encuentra el error. Gracias!
#include <stdio.h>
#include <stdlib.h>

int main(void)

{
int num,i=0,j,x;
char romano[20];
printf("Introduze el numero entero entre 1 y 3999: n");
while (x!=0)
{
scanf("%d",&num);

/*Usaremos un if para que los valores mayores a 3999 no puedan ser convertidos a
numeros romanos ya que 4 letras seguidas e iguales no es possible*/
if (num >= 4000)
{
printf ("El numero introducido no es correcto. ");

}
else
{

/*Con la instrucción while buscamos mediante restas la letra que significa cada
valor en romano*/
while((num - 1000)>=0)
{
num = num - 1000;
romano[i]='M';
i++;
}

while((num - 900)>=0)
{
num = num - 900;
romano[i]='C';
i++;
romano[i]='M';
i++;
}

while((num - 500)>= 0)
{
num = num - 500;
romano[i]='D';
i++;
}

while((num - 400)>=0)
{
num = num - 400;
romano[i]='C';
i++;
romano[i]='D';
i++;
}

while((num - 100)>= 0)
{
num = num - 100;
romano[i]='C';
i++;

}

while((num - 90)>=0)
{
num = num - 90;
romano[i]='X';
i++;
romano[i]='C';
i++;
}

while((num - 50)>= 0)
{
num = num - 50;
romano[i]='L';
i++;
}

while((num - 40)>=0)
{
num = num - 40;
romano[i]='X';
i++;
romano[i]='L';
i++;
}

while((num - 10)>= 0)
{
num = num - 10;
romano[i]='X';
i++;
}

while((num - 9)>=0)
{
num = num - 9;
romano[i]='I';
i++;
romano[i]='X';
i++;
}

while((num - 5)>= 0)
{
num = num - 5;
romano[i]='V';
i++;
}

while((num - 4)>=0)
{
num = num - 4;
romano[i]='I';
i++;
romano[i]='V';
i++;
}

while((num - 1)>= 0)
{
num = num - 1;
romano[i]='I';
i++;
}
{
romano[i]='';
}

/*Continuación del if del principio del programa*/
if (num<=3999)
printf ("El numero convertido en romano es: %sn",romano);
printf("n Introduce otro numero o apreta 0 para acabarn",x);
}
}

system ("PAUSE");
return 0;
}