2016-03-06 3 views
1

Я пишу программу, которая просит пользователя разработать 2 типа вопросов: истинный/ложный или множественный выбор. Я написал классы QuestionTF и QuestionMC - эти два класса получены из их базового класса Question. я внедрившие параметры как для TF и ​​MC:Параметрированный конструктор с пользовательским вводом (C++)

QuestionTF(string theQuestion, int pointValue, string theAnswer) 
     : Question(theQuestion, pointValue) 

И

QuestionMC(string theQuestion, int pointValue, string theAnswer) 
     : Question(theQuestion, pointValue) 

Когда я называю конструктор в основной - это будет выглядеть как QuestionTF (строка, значение, строка). Как бы я закодировал параметры конструкторов, чтобы пользователь мог задать вопрос, ввести значение и выбрать свой ответ (все из которых будут настроены в инструкции if, задающей пользователю, какой тип вопроса он или она как настроить)?

Пример: QuestionTF («вопрос», 0, «ответ»);

+0

Ваш вопрос непонятен. Определите «установить конструктор». –

+0

исправлено так, как я могу объяснить –

+0

Если вы спрашиваете, как запрашивать эти значения, ответ будет таким же, как и запрос на любой вход: напишите приглашение для каждого из них в std :: cout, используйте std :: getline(), чтобы прочитать следующую строку из std :: cin, а затем проанализировать ее. Когда у вас есть все три параметра, создайте объект. –

ответ

0

Вот ваш ответ. Я прошел шесть параметров в конструкторе из них, 3 для неправильных параметров. Аналогично, вы можете реализовать эту логику и для истины, и для ложных.

class question{ 
public: 
question(string question, int pointValue, string opt1,string opt2, string opt3, string opt4){ 
    int userinput; 
    cout<<"Your question is :"<<endl<<question; 
    cout<<endl<<"1. "+opt1<<endl<<"2. "+opt2<<endl<<"3. "+opt3<<endl<<"4. "+opt4<<endl; 
    cin>>userinput; 
    if (userinput== pointValue) { 
     cout<<endl<<"Your answer is correct"; 
    } 
    else 
     cout<<endl<<"Your answer is incorrect"; 
} 
question(string question, int pointValue){ 
    int userinput; 
    cout<<"Your question is :"<<endl<<question<<endl; 
    cout<<endl<<"1. True"<<endl<<"2. False"<<endl; 
    cin>>userinput; 
    if (userinput == pointValue) { 
     cout<<"Your answer is correct"; 
    } 
    else 
     cout<<"Your answer is incorrect"; 
} 

}; 

int main(){ 
question q = question("What is Capital of India ?",1,"Delhi","kolkata","Mumbai","Chennai"); 
} 
+0

Используйте const & для всех этих строк, и вы уменьшаете накладные расходы при передаче параметра по O (длина строки). –

+0

@WillBriggs, не могли бы вы рассказать об этом. Или PLS, внести необходимые изменения в мой код. –

+0

@MSP ваш ответ прекрасен, однако я должен следовать домашнему заданию, и это выходит за рамки –

Смежные вопросы