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; }長い文章ですみません。