- ベストアンサー
入力値が1以下、かつ数字以外の文字の場合・・・
皆様の知恵を貸してください!! 素数判定問題で、 「入力値が1以下、かつ数字以外の文字の場合、その旨 エラーメッセージとして表示&再入力させる」 という要求事項があるのですが… /* キーボードからの入力を受け付ける */ scanf("%d", &number); /**== 入力値をチェック ==**/ /* 入力値が1以下の場合、再入力を促す */ while(number <= 1) { printf("2以上の数を入力してください。\n"); } /* 入力値が数字以外の文字の場合、再入力を促す */ while(★) { printf("数字を入力してください。\n"); } 上記ソースの★のところになんと入れて良いかわかりません!! 課題の提出が明日なので…。 大至急、教えてください。よろしくお願いします!
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#1の方の意見に賛成です。 それと、このソースは根本的に間違えています。 このままでは、無限ループになってしまいます。 書き換えると。。。 /* 目的の値が入力されるまで繰り返す */ while(1) { /* キーボードからの入力を受け付け */ scanf(XXX, YYYYYY); /**== 入力値をチェック ==**/ if(数字であるか判定する条件) { if(2以上であるか判定する条件) { /* 入力値が1以下の場合のメッセージを表示 */ printf("2以上の数を入力してください。\n"); } else { break; } } else { /* 入力値が数字以外の文字の場合のメッセージを表示 */ printf("数字を入力してください。\n"); } }
その他の回答 (3)
- Bonjin
- ベストアンサー率43% (418/971)
while文よりもdo while文の方が適してないですか? まぁそれはおいておいて、scanfの返値を利用すれば数値以外が入力されたかどうか判定できますよ
補足
Bonjinさん、回答ありがとうございます。 do while文は使わないこと、という条件が ありまして・・・。 scanfの返値を利用するとは・・・。 初心者名なものですみません。 詳しい説明をおねがいできますか?
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
> 「入力値が1以下、かつ数字以外の文字の場合… そんな入力を想像できないのですけど、 'かつ'じゃなくて'または'ではありませんか?
補足
確かに「または」です・・・。 ごめんなさい。
- cats1234
- ベストアンサー率28% (103/356)
課題は自分で解かなければ意味が無いので、ヒントだけ。 isdigit()という数字判定関数があります。 あとはご自分で頑張ってください。
お礼
cats1234さん、回答ありがとうございます。 isdigit()ですか・・・。 がんばってみます!
お礼
Aquarius172さん、回答ありがとうございます。 そうですよね、おかしいコードですよね。 投稿してから、あっ!と思いました・・・。