在if/else语句中调用数组的成员
Calling a member of an array in an if/else statement
我试图写一个if/else语句,说'如果选择的随机问题是数组中的第一个这样做....'等等,用于数组的所有成员。然而,它默认选择每个问题作为数组的第一个成员并执行该操作。我怎样才能把它分开呢?
if (choice == 1)
{
enum fields{ QUESTS, ANS_1, ANS_2, ANS_3, ANS_4, NUM_FIELDS };
string QUEST[NUM_QUEST][NUM_FIELDS] =
{
{ "What course is this?n", "A)C++n", "B)DIDn", "C)Intro to Gamen", "D)Yoga" },
{ "Who am I?n", "A)Billn", "B)Nyen", "C) 24601n", "D)No onen" },
{ "Are you actually reading this?n", "A) Yesn", "B)Non", "C)Mayben", "D)Who wants to know?n" },
{ "Will this program work?n", "A)Of course it will!n", "B)It mightn", "C)Are you kidding me?n", "D)Gods only know." },
{ "Where would I rather be?n", "A)Homen", "B)Europen", "C)Anywhere but heren", "D)All of the aboven" }
};
srand(static_cast<unsigned int>(time(0)));
int randomQuest = (rand() % NUM_QUEST);
string question = QUEST[randomQuest][QUESTS];
cout << question;
string printAns1 = QUEST[randomQuest][ANS_1];
string printAns2 = QUEST[randomQuest][ANS_2];
string printAns3 = QUEST[randomQuest][ANS_3];
string printAns4 = QUEST[randomQuest][ANS_4];
cout << printAns1;
cout << printAns2;
cout << printAns3;
cout << printAns4;
cout << "nAnswer:";
string answer;
cin >> answer;
//问题在这里。一直默认使用这个IF语句并忽略其余语句,因此它认为答案总是
if (question == QUEST[randomQuest][0])
{
if (answer == "A")
{
cout << "Correct. Proceed.";
}
else if (answer != "A")
{
cout << "Failure. Leave. Or, you know, try again.";
}
}
else if (question == QUEST[randomQuest][1])
{
if (answer == "C")
{
cout << "Correct. Proceed.";
}
else if (answer != "C")
{
cout << "Failure. Leave. Or, you know, try again.";
}
}
else if (question == QUEST[randomQuest][2])
{
if (answer == "D")
{
cout << "Correct. Proceed.";
}
else if (answer != "D")
{
cout << "Failure. Leave. Or, you know, try again.";
}
}
else if (question == QUEST[randomQuest][3])
{
if (answer == "C")
{
cout << "Correct. Proceed.";
}
else if (answer != "C")
{
cout << "Failure. Leave. Or, you know, try again.";
}
}
else if (question == QUEST[randomQuest][4])
{
if (answer == "D")
{
cout << "Correct. Proceed.";
}
else if (answer != "D")
{
cout << "Failure. Leave. Or, you know, try again.";
}
}
}
你没有发布完整的源代码,所以我只是发布了一个例子,我将如何做到这一点。虽然它多了几行,但我认为它更容易读懂。
#include <stdio.h>
#include <vector>
#include <string>
struct Question
{
unsigned char answer;
std::string title;
std::vector<std::string> options;
};
int main()
{
std::vector<Question> questions;
// Define the questions
Question questionOne;
Question questionTwo;
Question questionThree;
Question questionFour;
Question questionFive;
questionOne.answer = 'c';
questionOne.title = "What course is this?";
questionOne.options.push_back("aaaaaaaaaaaaaaaaaaaaaaaaaaa");
questionOne.options.push_back("aaaaaaaaaaaaaaaaaaaaaaaaaaa");
questionOne.options.push_back("aaaaaaaaaaaaaaaaaaaaaaaaaaa");
questionOne.options.push_back("aaaaaaaaaaaaaaaaaaaaaaaaaaa");
questionTwo.answer = 'a';
questionTwo.title = "Who am I?";
questionTwo.options.push_back("aaaaaaaaaaaaaaaaaaaaaaaaaaa");
questionTwo.options.push_back("aaaaaaaaaaaaaaaaaaaaaaaaaaa");
questionTwo.options.push_back("aaaaaaaaaaaaaaaaaaaaaaaaaaa");
questionTwo.options.push_back("aaaaaaaaaaaaaaaaaaaaaaaaaaa");
questionThree.answer = 'b';
questionThree.title = "Are you actually reading this?";
questionThree.options.push_back("aaaaaaaaaaaaaaaaaaaaaaaaaaa");
questionThree.options.push_back("aaaaaaaaaaaaaaaaaaaaaaaaaaa");
questionThree.options.push_back("aaaaaaaaaaaaaaaaaaaaaaaaaaa");
questionThree.options.push_back("aaaaaaaaaaaaaaaaaaaaaaaaaaa");
questionFour.answer = 'c';
questionFour.title = "Will this program work?";
questionFour.options.push_back("aaaaaaaaaaaaaaaaaaaaaaaaaaa");
questionFour.options.push_back("aaaaaaaaaaaaaaaaaaaaaaaaaaa");
questionFour.options.push_back("aaaaaaaaaaaaaaaaaaaaaaaaaaa");
questionFour.options.push_back("aaaaaaaaaaaaaaaaaaaaaaaaaaa");
questionFive.answer = 'd';
questionFive.title = "Where would I rather be?";
questionFive.options.push_back("aaaaaaaaaaaaaaaaaaaaaaaaaaa");
questionFive.options.push_back("aaaaaaaaaaaaaaaaaaaaaaaaaaa");
questionFive.options.push_back("aaaaaaaaaaaaaaaaaaaaaaaaaaa");
questionFive.options.push_back("aaaaaaaaaaaaaaaaaaaaaaaaaaa");
// Save them
questions.push_back(questionOne);
questions.push_back(questionTwo);
questions.push_back(questionThree);
questions.push_back(questionFour);
questions.push_back(questionFive);
// Change to a random question accordingly
for (auto& question : questions)
{
// Show question title
std::cout << question.title << std::endl;
// Show question options
for (auto& option : question.options)
{
std::cout << option << std::endl;
}
// Get the user input accordingly
unsigned char userInput = 0;
// Validate user input
if (userInput == question.answer)
{
std::cout << "Congratulations! Next question coming up..." << std::endl;
}
else
{
std::cout << "Wrong answer. Next question coming up..." << std::endl;
}
}
return 0;
}
相关文章:
- 在调用接收数组的方法时,模板化数组大小是不是一种糟糕的做法
- 为什么调用堆栈数组会导致内存泄漏
- C++从函数指针数组调用函数
- 为什么静态数组成员变量在调用对象的实例后不显示任何内容?
- 如何在 c# 代码中通过引用调用时从 c++ dll 更新数组值?
- 调用函数后无法访问数组
- 使用数组数组调用 C++ 函数
- 为什么数组中对象的析构函数在被另一个对象替换时不被调用?
- 当数组位于两个循环之间时,您可以调用数组的 void 函数吗?
- 未调用数组的函数专用化
- 为什么只调用数组元素[3][..]或[4][..]会导致EXC_BAD_ACCESS
- 从c++中的结构数组中调用数组
- 如何调用数组的成员
- 调用数组中子类实例的方法
- 从同一类的另一个方法调用数组2D-C++
- c++析构函数调用数组索引?在非线程安全的refcount对象上崩溃
- 在c++中调用数组的成员以显示到控制台
- 在if/else语句中调用数组的成员
- 调用数组存储字符串类型从一个while到另一个while
- 在c++中使用枚举类值调用数组元素