2016-09-29 2 views
-4

Also übe ich für einen Test, der kommt, und ich stehe auf eine meiner Fragen. Dies ist eine zweiteilige Frage, ich werde beide Fragen zuerst einschließen.Eine Funktion schreiben, die ein Array von Strings aufnimmt und ein Double zurückgibt, was die durchschnittliche Länge dieser Strings ergibt

1) Erstellen Sie eine Funktion, die ein Array von Strings aufnimmt und ein Double zurückgibt. Dieses Double repräsentiert die durchschnittliche Länge aller Strings.

2) Erstellen Sie eine MAIN-Funktion, die den Benutzer nach 10 Zeichenfolgen fragt. Sobald das Array gefüllt ist, rufen Sie die Funktion aus Frage 1 auf, um die durchschnittliche Länge der Strings zu berechnen und das Ergebnis an die Konsole auszugeben.

Hier ist mein Code so weit:

void avg(std::string averages[], int size) { 

    double sum = 0; 

    for(int index = 0; index < size; index++) { 

     sum += averages[index]; // Error here, invalid operands to binary expression? 

    } 

    double retVal = sum/size; 
    return retVal; //**I am getting an error here: void function avg should not return a value 

} 

int main() { 

    std:: string myArray[10]; 
    std:: cout << "Please enter 10 strings..."; 

    for(int i = 0; i < 10; i++) { 
    std::cin >>myArray[i]; 

    } 

} 
+2

Sie haben vergessen, eine Frage zu stellen. Welche Frage haben Sie zu dieser Aufgabe oder zu dem Code, den Sie geschrieben haben? –

Antwort

0

sum eine ganze Zahl. Sie haben averages als ein Array von Strings definiert; Sie können keine Zeichenfolgen zu Ganzzahlen hinzufügen. Versuchen

sum += averages[index].length(); 

Auch Ihr Kommentar später „ich eine Störung erhalte hier: void Funktion avg keinen Wert zurückgeben sollte“ ... auch die Fehlermeldung Ihnen genau sagt, was das Problem ist; Ihre Funktion als

void avg(std::string averages[], int size) { 
... 
} 

Der Typ deklariert definiert, bevor der Name der Funktion seiner Rückkehr Typ "ist. Das Schlüsselwort 'void' bedeutet einfach 'diese Funktion gibt keinen Wert zurück', so dass es dann verwirrend wird, wenn Sie versuchen, das Schlüsselwort return zu verwenden, um tatsächlich einen Wert zurückzugeben. Ändern Sie ihn auf

double avg(std::string averages[], int size) { 
... 
} 

bearbeiten

die Funktion aufzurufen, Ihre main() sollte wie folgt aussehen. Ich habe das nicht getestet, aber es sollte funktionieren.

int main() { 
    std::string myArray[10]; 
    std::cout << "Please enter 10 strings...\n"; 

    for(int i = 0; i < 10; i++) { 
     std::getLine(std::cin, myArray[i]); 
    } 

    std::cout << avg(myArray, 10) << "\n"; 
} 
+0

Vielen Dank! Das funktioniert perfekt ... Meine letzte Frage lautet: Wie würde ich diese avg-Funktion in der Hauptfunktion nennen, um den Durchschnitt der 10 Strings zu berechnen, die der Benutzer eingibt? –

Verwandte Themen