プロが教える店舗&オフィスのセキュリティ対策術

皆様の知恵を貸してください!!

素数判定問題で、
「入力値が1以下、かつ数字以外の文字の場合、その旨
エラーメッセージとして表示&再入力させる」
という要求事項があるのですが…

/* キーボードからの入力を受け付ける */
scanf("%d", &number);

/**== 入力値をチェック ==**/
/* 入力値が1以下の場合、再入力を促す */
while(number <= 1)
{
printf("2以上の数を入力してください。\n");
}

/* 入力値が数字以外の文字の場合、再入力を促す */
while(★)
{
printf("数字を入力してください。\n");
}

上記ソースの★のところになんと入れて良いかわかりません!!

課題の提出が明日なので…。
大至急、教えてください。よろしくお願いします!

A 回答 (4件)

#1の方の意見に賛成です。



それと、このソースは根本的に間違えています。
このままでは、無限ループになってしまいます。

書き換えると。。。

/* 目的の値が入力されるまで繰り返す */
while(1)
{
/* キーボードからの入力を受け付け */
scanf(XXX, YYYYYY);

/**== 入力値をチェック ==**/
if(数字であるか判定する条件)
{
if(2以上であるか判定する条件)
{
/* 入力値が1以下の場合のメッセージを表示 */
printf("2以上の数を入力してください。\n");
}
else
{
break;
}
}
else
{
/* 入力値が数字以外の文字の場合のメッセージを表示 */
printf("数字を入力してください。\n");
}
}
    • good
    • 0
この回答へのお礼

Aquarius172さん、回答ありがとうございます。
そうですよね、おかしいコードですよね。
投稿してから、あっ!と思いました・・・。

お礼日時:2005/05/12 00:02

while文よりもdo while文の方が適してないですか?



まぁそれはおいておいて、scanfの返値を利用すれば数値以外が入力されたかどうか判定できますよ

この回答への補足

Bonjinさん、回答ありがとうございます。

do while文は使わないこと、という条件が
ありまして・・・。

scanfの返値を利用するとは・・・。
初心者名なものですみません。
詳しい説明をおねがいできますか?

補足日時:2005/05/12 00:03
    • good
    • 0

> 「入力値が1以下、かつ数字以外の文字の場合…



そんな入力を想像できないのですけど、
'かつ'じゃなくて'または'ではありませんか?

この回答への補足

確かに「または」です・・・。
ごめんなさい。

補足日時:2005/05/12 00:05
    • good
    • 1

課題は自分で解かなければ意味が無いので、ヒントだけ。



isdigit()という数字判定関数があります。

あとはご自分で頑張ってください。
    • good
    • 0
この回答へのお礼

cats1234さん、回答ありがとうございます。

isdigit()ですか・・・。
がんばってみます!

お礼日時:2005/05/12 00:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!