在if/else语句中调用数组的成员

Calling a member of an array in an if/else statement

本文关键字:调用 数组 成员 语句 if else      更新时间:2023-10-16

我试图写一个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;
}