2

ユーザーからの入力が有効な入力であるかどうかを確認するためのチェックを組み込んでいます。たとえば、私のプログラムでは、ユーザーに 1 ~ 1000 の数字を推測してもらいます。私のプログラムは完璧に動作しますが、ユーザーが数字以外の文字を入力すると CRAZY になります。とにかく、ユーザーがばかげたものではなく、数字を入力していることを確認して確認したいと思います。だから私はこの部分を理解しようとして円を描いてきました. 簡単に修正できると確信していますが、プログラミングは初めてで、困惑しています。どんな助けでも大歓迎です。

#include "stdafx.h"
#include<iostream>
#include<cstdlib>
#include<ctime>

using namespace std;

int main()
{

    bool isGuessed=true;
    while(isGuessed)
    {
        srand(time(0));
        int number=rand()%1000+1;
        int guess;
        char answer;


        cout<<"Midterm Exercise 6\n";
        cout<<"I have a number between 1 and 1000.\n";
        cout<<"Can you guess my number?\n";
        cout<<"Please type your first guess:\n\n";
        cin>>guess;


    while(guess!=number)
    {



        if(guess>number)
        {
            cout<<"\nToo high. Try again!\n\n";
            cin>>guess;
        }

        if(guess<number)
        {
            cout<<"\nToo low. Try again!\n\n";
            cin>>guess;
        }
    }
    if(guess==number)
        { 
            cout<<"\nExcellent! You have guess the number!\n";
        }
            cout<<"Would you like to play again (y or n)?\n\n";
            cin>>answer;
            cout<<"\n";

    if(answer!='y')
        {
            isGuessed=false;
            cout<<"Thanks for playing!\n\n";
            system ("PAUSE"); 
            return 0;
        } 

    }


    return 0;
}
4

2 に答える 2

8

このような状況で使用するために、私が手元に置いておきたいスニペットを次に示します。

int validInput()
{
    int x;
    std::cin >> x;
    while(std::cin.fail())
    {
        std::cin.clear();
        std::cin.ignore(std:numeric_limits<std::streamsize>::max(),'\n');
        std::cout << "Bad entry.  Enter a NUMBER: ";
        std::cin >> x;
    }
    return x;
}

次に、使用したい場所はcin>>guess、代わりに使用しますguess = validInput();

于 2013-09-26T02:26:38.233 に答える