こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

C言語(プログラミング)

次の働きをするプログラムを作ろうと考えてますが、出来ない状態です。
入力:1から4999の間のアラビア数字を受け取る。入力の終わりは改行。
出力:入力されたアラビア数字に対応するローマ数字を出力する。
変換したい次のアラビア数字があるかどうかを(y又はnで)尋ねてyならば上の入力からを繰り返す,nならば終了。

自分が考えたのは、4999以下のアラビア数字がきた場合と5000以上のアラビア数字がきた場合を考え、 int c;while((c=getchar()) != '\n')、Switch(c)文を使い、CASEでCase C<=4999:Case C>=5000としたのですがコンパイルできませんでした。ご指摘やアドバイス、このプログラム自体教えていただければありがたいです。お願いします

投稿日時 - 2003-06-29 00:12:19

QNo.587647

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

3つも回答してすみません。
よく文章読まない人なんで。

下のプログラムに繰り返すか訪ねる文を追加すれば希望のプログラムになると思います。

それと、Case文では条件は使えません
switch(c)
{ case n:
と書けばc==nの時に実行されます。

投稿日時 - 2003-06-29 01:47:21

ANo.2

よく考えれば数値を減らしながら出力すれば変数が必要な気が・・・

#include<stdio.h>
main()
{ int n;
printf("アラビア数字を入力してください");
scanf("%d",&n);
if(n>=1&&n<=4999)
{
while(n>=1000)
{ printf("M");
n=n-1000;
}
if(n>=500)
{ printf("D");
n=n-500;
}
while(n>=100)
{ printf("C");
n=n-100;
}
if(n>=50)
{ printf("L");
n=n-50;
}
while(n>=10)
{ printf("X");
n=n-10;
}
if(n>=5)
{printf("V");
n=n-5;
}
while(n>=1)
{ printf("I");
n--;
}
printf("\n");
}
return 0;
}

投稿日時 - 2003-06-29 01:41:37

ANo.1

1.変数の宣言
2.数値の入力
3.1~4999の範囲か? そうでなければ終了
4.M(1000)の数を計算
5.同じ方法でD(500)、C(100)、L(50)、X(10),V(5),I(1)を計算
6.計算結果に従って表示

#include<stdio.h>
main()
{ int n,m,d,c,l,x,v,i;
printf("アラビア数字を入力してください");
scanf("%d",&n);
if(n>=1&&n<=4999)
{
m=n/1000;
n=n%1000;
d=n/500;
n=n%500;
c=n/100;
n=n%100;
l=n/50;
n=n%50;
x=n/10;
n=n%10;
v=n/5;
n=n%5;
i=n;
n=1;
while(n>=m)
{ printf("M");
n--;
}
if(d)printf("D");
n=1;
while(n>=c)
{ printf("C");
n--;
}
if(l)printf("L");
n=1;
while(n>=x)
{ printf("X");
n--;
}
if(v)printf("V");
n=1;
while(n>=i)
{ printf("I");
n--;
}
printf("\n");
}
return 0;
}

こんな感じですかね?

投稿日時 - 2003-06-29 01:33:50

あなたにオススメの質問