C ++ Magi c 8 Ball с векторами - PullRequest
0 голосов
/ 20 июня 2020

Я пытаюсь взять программу Magi c 8 Ball, которая изначально использовала массивы, и изменить ее на программу, которая вместо этого использует векторы. Задача, которую мне дали, заключалась в том, чтобы взять приведенный ниже код и сделать с ним несколько вещей.

  • используйте функцию push_back () для инициализации вектора
  • измените подпись и прототип функции getAnswer ()
  • изменить код в теле функции getAnswer ()
  • удалить любой ненужный код, например вашу константу для количества ответов
    #include <iostream>
    #include <string>
    #include <iomanip>
    #include <string>
    #include <stdio.h>
    #include <fstream>
    #include <stdio.h>


    using namespace std;

    string getAnswer();


    const string exitString = "x";
    const int SIZEOF_ANSWERS = 8;
    string magicEightBallAnswers[SIZEOF_ANSWERS] = { "Yes", "No", "Maybe", "It's not certain", "The outlook is good",
                                                     "The outlook is poor", "Time will tell", "Most likely" };



    int main(int argc, char *argv[])
    {
        bool keepGoing = true;

        while (keepGoing)
        {
            string question;

            //prompt for and get the question
            cout << "What is your question?  (Enter 'x' to exit)" << endl;
            getline(cin, question);

            //this assumes that the user enters a lower case x
            if (question.compare(exitString) == 0)
                keepGoing = false;
            else
            {
                cout << getAnswer() << endl;
            }   
        }

        return 0;
    }


    string getAnswer()
    {
        int index = rand() % SIZEOF_ANSWERS;
        return magicEightBallAnswers[index];
    }

1 Ответ

2 голосов
/ 20 июня 2020

Этот пример может помочь:

#include <iostream>
#include <string>
#include <vector>
#include <cstdlib>

using namespace std;

string getAnswer(vector<string> &  magicEightBallAnswers)
{
  int i = rand() % magicEightBallAnswers.size();
  return magicEightBallAnswers[i];
}

int main()
{
  vector<string> magicEightBallAnswers {
    "Yes",
    "No",
    "Maybe",
    "It's not certain",
    "The outlook is good",
    "The outlook is poor",
    "Time will tell",
    "Most likely"
  };

  // Initialize rand()
  srand(time(NULL));

  string question;
  while (true) {
    // Prompt for and get the question
    cout << "What is your question?  (Enter 'x' to exit)" << endl;
    getline(cin, question);
    if (question == "x")
      break;

    // Ask question
    cout << getAnswer(magicEightBallAnswers) << endl;
  }

  // Done
  cout << "Bye!  Let's play again soon!" << endl;
  return 0;
}

В частности:

  • Используйте возможности C ++ в ваших интересах, чтобы исключить ненужный код, например push_back () или инициализацию с помощью «(8)».

  • Никогда не используйте жестко запрограммированную константу, такую ​​как «SIZEOF_ANSWER», если есть альтернатива динамической c, например «vector.size ()».

  • Обратите внимание на использование передачи по ссылке : в string getAnswer(vector<string> & magicEightBallAnswers).

  • Вы должны вызвать «srand ()» с семенем перед использованием "rand ()".

  • Et c.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...