2013-10-10 8 views
-2

Привет всем Я пытаюсь получить массив, работающий с вектором, поэтому мой код перестает придумывать букву «слово» каждый раз, когда вы запускаете мою программу. Я предполагаю, что мне нужно что-то сделать с векторами, но я прочитал несколько руководств, но я довольно смущен, если кто-то может помочь мне с шагами, которые будут здорово? :)Как объявить массив с вектором

EDIT: В основном я пытаюсь заставить свои векторы работать с функцией playGame(); так что я могу показать разные слова вместо того, чтобы просто иметь то же самое слово придумать каждый раз, когда он же «Слово»

Вот мой текущий код:

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

using namespace std; 

int playGame(string word); 
string array[]= { "apple", "banana", "orange", "strawberry" }; 
vector<string> word (array, array+4); 

int main() 
{ 
int choice; 
bool menu = true; 
do{ 
cout <<"Please select one of the following options: \n"; 

cout << "1: Play\n" 
    "2: Help\n" 
    "3: Quit\n"; 

cout << "Enter your selection (1, 2 and 3): "; 
cin >> choice; 
//***************************************************************************** 
// Switch menu to display the menu. 
//***************************************************************************** 
    switch (choice) 
{ 
     case 1: 
     cout << "You have chosen play\n"; 
     //int playGame(string word); 
     playGame("word"); 
     break; 
    case 2: 
     cout << "You have chosen help\n"; 
     cout << "Here is a description of the game Hangman and how it is played:\nThe  word to guess is represented by a row of dashes, giving the number of letters, numbers and category. If the guessing player suggests a letter or number which occurs in the word, the other player writes it in all its correct positions"; 
     break; 
     case 3: 
     cout << "You have chosen Quit, Goodbye."; 
     break; 
    default: 
     cout<< "Your selection must be between 1 and 3!\n"; 

    } 

}while(choice!=3);  
getchar(); 
getchar(); 


cout << "You missed " << playGame("programming"); 
cout << " times to guess the word programming." << endl; 
} 
+2

будьте более конкретным. что именно вы хотите достичь с помощью «получения массива с вектором»? также, пожалуйста, покажите только * соответствующие * части кода. например, это угадающая игра, что вы, возможно, имели в виду – codeling

+0

Попробуйте, что это более полезно? Извините, я новичок в этом и пытаюсь выяснить, какой код имеет значение. – user2857301

+0

Ваш код 'vector word (array, array + 4);' - правильный способ объявить вектор, который является копией массива. Поэтому, если у вас возникают проблемы, это должно быть где-то в другом месте. Что мне совершенно непонятно, так это то, почему вы думаете, что переход от массива к вектору поможет. Возможно, вы объясните, почему вы так думаете. – john

ответ

2

векторы не являются частью ответа. Вы можете сделать эту работу с массивами или векторами. Проблема (как я понимаю) заключается в том, что вы хотите выбрать случайное слово из своего списка слов. Вот как сделать это с помощью массива

int main() 
{ 
    size_t sizeOfArray = sizeof array/sizeof array[0]; // calculate the 
                 // size of the array 
    srand(time(0)); // set up random number generator 

    ... 

     case 1: 
      cout << "You have chosen play\n"; 
      playGame(array[rand()%sizeOfArray]); // pick a random word 
      break; 
+0

Где я могу точно определить Array?Это дает мне ошибки в массиве/sizeof – user2857301

+0

+1 для ваших психических сил, обнаруживающих, что OP хотел спросить;) – codeling

+0

Да, спасибо за помощь, но я не уверен, почему массив рядом с размером дает мне неопределенную ошибку:/ – user2857301

1

На высоком уровне, предполагая, что мы decidce играть, ваш код делает этот

playGame("word"); 

Другими словами, вы всегда отправить слово "word" функции playGame, поэтому он всегда использует слово word. Случайное отбор другого слова из набора слов явно даст вам множество слов в каждой игре, а не одно и то же слово снова и снова.

Whe вы говорите

I'm trying to get my vectors to work with the function playGame(); 

Я полагаю, вы имеете в виду playGame(string word) функцию, а не какой-либо другой функции вы не показывают нам.

Выбрав случайный индекс в свой вектор, скажем index, просто измените свой вызов на функцию playGame следующим образом. playGame (слово [index]);

Этот индекс в массиве, вы назвали слово, а не слова "word"

Конечно, это означает, что массив не требуется, и, конечно, не нужно быть глобальным и вектор слов может декалироваться внутри основной функции, а не в глобальном масштабе.

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