1~4999までの整数を入力してローマ記法に変換するプログラムを作ったのですが、実行すると
的外れの結果になります。0(ゼロ)を入力すると終了するように作ったつもりなのですが、
終了しません。どこが悪いのかまったくわかりません。宜しくお願いします。
また、もっとスマートに作れるのであれば、指摘もお願いします。
#include<stdio.h>
int main(void)
{
int n=0,m,p,q,r;
char seisu[5];
printf("1~4999までの整数を入力してください。\n");
fflush(stdout);
while(1)
{
printf("Input integer (0 QUIT)====>");
fflush(stdout);
scanf("%s",&seisu);
if(seisu[0]==0)break;
printf("%s ===> ",seisu);
fflush(stdout);
while(seisu[n]!='\0')
{
n++;
}
p=n-3;
q=n-2;
r=n-1;
if(n==4) /*千の位*/
{
for(m=1;m<=seisu[0];m++)
{
printf("M");
}
n--;
}
if(n==3) /*百の位*/
{
if(seisu[p]>=5)
{
printf("D");
for(m=1;m<=seisu[p]-5;m++)
{
printf("C");
}
}
else
{
for(m=1;m<=seisu[p];m++)
{
printf("C");
}
}
n--;
}
if(n==2) /*十の位*/
{
if(seisu[q]>=5)
{
printf("L");
for(m=1;m<=seisu[q]-5;m++)
{
printf("X");
}
}
else
{
for(m=1;m<=seisu[q];m++)
{
printf("X");
}
}
n--;
}
if(n==1) /*一の位*/
{
if(seisu[[/url]==9){
printf("IX");
}else if(seisu[[/url]>=5){
printf("V");
for(m=1;m<=seisu[[/url]-5;m++)
{
printf("I");
}
}else if(seisu[[/url]==4){
printf("IV");
}else{
for(m=1;m<=seisu[[/url];m++)
{
printf("I");
}
}
}
printf("\n");
}
return 0;
}
長い文章ですみません。