2

C++に関しては初心者です。

私は質問をするプログラムを書かなければならず、それが正しいか間違っているかをチェックするよりも答えを出します。

#include <iostream>
#include <sstream>
#include <string>

using namespace std;

class Question
{
public:
       Question();

       void set_text(string question_text);
       void set_answer(string correct_response);
       bool check_answer(string response) const;
       void display() const;

private:
        string text;
        string answer;
};

Question::Question()
{
}    

void Question::set_text(string question_text)
{
     text = question_text;
}

void Question::set_answer(string correct_response)
{
     answer = correct_response;
}

bool Question::check_answer(string response) const
{
     return response == answer;    
}

void Question::display() const
{
     cout << text << endl;
}

int main()
{
    string response;
    cout << boolalpha;

    Question q1;
    q1.set_text("Who was the inventor of  C ++ ? " );
    q1.set_answer("Bjarne Stroustrup" );

    q1.display();
    cout << " Your answer is :  " ;
    getline(cin,response);
    cout << q1.check_answer(response) << endl;
    return 0;
}

問題は、応答と期待される答えの間に0.01以上の差があるかどうかをチェックするNumericalQuestionのクラスを追加する必要があることです。そして、これが私が困難を抱えているところです。誰かがそれを行う方法を教えてくれたり、ヒントをくれたりしたら、本当に感謝しています.

4

1 に答える 1

1

宿題のように見えるので、完全なコードは書きません。というクラスがあるとしましょうNumericalQuestion。ここで、小数点数を処理したいので、answer変数の型はfloat(またはdouble) にする必要があります。その場合、コンソールから読み取った文字列を float に変換し、期待される応答としてこのオブジェクトに設定する必要があります。ユーザーが回答を入力したら、再度変換してfloatを呼び出す必要がありますcheck_answer。内部check_answerでは、答えと予想される答えの差が 0.01 未満かどうかを比較する必要があります。を実行することでこれを達成できますreturn fabs(answer - response) < 0.01

于 2012-04-23T12:40:01.930 に答える