2016-05-01 22 views
0

Ich habe ein String-Array, das 20 Wörter enthält. Ich habe eine Funktion erstellt, die 1 zufälliges Wort aus dem Array nimmt. Aber ich möchte wissen, wie ich dieses Wort aus Array zurückgeben kann. Im Moment benutze ich die Void-Funktion, ich habe Char-Typ verwendet, aber es funktioniert nicht. Kleine Hilfe hier? Brauchen Sie, Wort Ratespiel zu machen.Rückgabewert von String-Funktion

Code:

#include <iostream> 
#include <time.h> 
#include <cstdlib> 
#include <stdlib.h> 
#include <algorithm>///lai izmantotu random shuffle funckiju 
#include <string> 
using namespace std; 


void random(string names[]); 


int main() { 
    char a; 
    string names[] = {"vergs", "rokas", "metrs", "zebra", "uguns", "tiesa", "bumba", 
         "kakls", "kalns", "skola", "siers", "svari", "lelle", "cimdi", 
         "saule", "parks", "svece", "diegs", "migla", "virve"}; 

random(names); 

     cout<<"VARDU MINESANAS SPELE"<<endl; 
     cin>>a; 







return 0; 
} 

void random(string names[]){ 
    int randNum; 
for (int i = 0; i < 20; i++) { /// makes this program iterate 20 times; giving you 20 random names. 
srand(time(NULL)); /// seed for the random number generator. 
randNum = rand() % 20 + 1; /// gets a random number between 1, and 20. 
names[i] = names[randNum]; 
} 
//for (int i = 0; i < 1; i++) { 
//cout << names[i] << endl; /// outputs one name. 
//} 

} 
+1

Ich sehe nicht, wie der Code, den Sie geschrieben haben, sich auf das bezieht, was Sie fragen (was nicht ganz klar ist, TBH). – StoryTeller

+2

Verwenden Sie entweder einen 'Vektor ' oder teilen Sie der Funktion mit, wie viele Elemente sich im Array befinden. Codiere 20 nicht fest in die Funktion. Das ist tangierend zu Ihrer Frage, aber relevante allgemeine Ratschläge. Stellen Sie sicher, dass Funktionen wissen, wie groß ein Array ist, mit dem sie zu tun haben. –

+1

Wie wäre es mit einer Saite? 'std :: string random (std :: string names []);' – Galik

Antwort

2

Marke random zurück string. Sie müssen den Nummerngenerator auch nur einmal einsetzen. Da Sie nur 1 zufälliges Wort aus dem Array erhalten möchten, benötigen Sie keine for Schleife.

string random(string names[]){ 
    int randNum = 0; 
    randNum = rand() % 20 + 1; 
    return names[randNum]; 
} 

Dann wird in der main Funktion, eine string Variable auf den Rückgabewert der Funktion random zuweisen.

int main() { 
    srand(time(NULL)); // seed number generator once 
    char a; 
    string names[] = {"vergs", "rokas", "metrs", "zebra", "uguns", "tiesa", "bumba", 
         "kakls", "kalns", "skola", "siers", "svari", "lelle", "cimdi", 
         "saule", "parks", "svece", "diegs", "migla", "virve"}; 

    string randomWord = random(names); 

    cout<<"VARDU MINESANAS SPELE"<<endl; 
    cin>>a; 

    return 0; 
} 
+0

Tnx Kumpel, alles funktioniert wie es soll. – Maaverick

0

ich mit Streichern nicht super vertraut bin, aber Sie sollten nur erklären random() als String-Funktion können.

Beispiel: String zufällig (String-Namen []);

1

Zusätzlich srand (time (NULL)) sollte nur einmal am Anfang main() Funktion aufgerufen werden.

+0

Und Sie sollten 'srand()' nicht in modernen Code verwenden. Schauen Sie stattdessen auf ''. –

2

In Ihrer Frage sowie in der vorherige Antwort, Sie außerhalb der Grenzen führt die Namen Array zuzugreifen:

int randNum = rand() % 20 + 1; 
return names[randNum]; 

Sie nie hinter dem Array erreichen zugreifen Namen [0], sondern als Namen Adressierung [20].