2016-04-23 6 views
0

Ich habe die Durchschnittsmethode von main getrennt, die beiden Studenten in main nennen beide die Methode, aber ich bin mir nicht ganz sicher, wie man den Durchschnitt berechnet, indem man es so macht, irgendwelche Ideen?Berechnen von Durchschnitten in einer anderen Methode C++

Durchschnitt macht zwei Dinge. Er berechnet den Durchschnitt der Punktzahlen des Schülers, setzt den ganzzahligen Durchschnittswert in das letzte Element und ersetzt damit die negative Zahl und gibt dann die Anzahl der tatsächlichen Testergebnisse zurück, die er im Array gefunden hat. Der Sentinel im Array ist eine negative Zahl.

hier ist mein Code

#include <iostream> 
using namespace std; 

double average(int array[]); // function declaration (prototype) 

int main() 
{ 
    int lazlo[] = {90, 80, 85, 75, 65, -10}; 
    int pietra[] = { 100, 89, 83, 96, 98, 72, 78, -1}; 
    int num; 

    num = average(lazlo); 
    cout << "lazlo took " << num << "tests. Average: " << lazlo[ num ] << endl; 

    num = average(pietra); 
    cout << "pietra took " << num << "test. Average: " << pietra[ num ] << endl; 

} 

double average(int array[]) 
{ 
    // Average code 

} 
+2

Ihre 'average' Funktion hat keine Ahnung, wie viele Artikel gibt es in der Anordnung. Hilft Ihnen das, herauszufinden, was fehlt? – PaulMcKenzie

Antwort

0

Jetzt, wo wir die wahre Zuordnung schließlich wissen.

„Average tut zwei Dinge, die es dem Durchschnitt der Noten der Schüler berechnet, legt sich den Integer-Durchschnitt in das letzte Element, das somit die negative Zahl ersetzt, gibt dann die Anzahl der tatsächlichen Testergebnisse zurück, die es in der Anordnung gefunden hat. Der Sentinel in der Anordnung ist eine negative Zahl. "

0

Wenn Sie wirklich ein C-Stil-Array als einziges Argument an die average() Funktion zu übergeben wollen, müssen Sie Vorlagen verwenden, um seine Größe zu folgern:

#include <numeric> 
#include <iostream> 

using namespace std; 

template <size_t N> 
size_t count(int (&array)[N]) 
{ 
    return N; 
} 

template <size_t N> 
double average(int (&array)[N]) 
{ 
    return std::accumulate(array, array + N, 0.0)/N; 
} 

int main() 
{ 
    int lazlo[] = {90, 80, 85, 75, 65, -10}; 

    double num = average(lazlo); 
    cout << "lazlo took " << count(lazlo) << " tests. Average: " << average(lazlo) << endl; 
} 

Natürlich, da diese C++ ist, können Sie mit std::vector oder std::array zum speichern der Spielstände, wobei in diesem Fall könnten Sie dies tun könnte besser dran:

double average(const std::vector<int>& array) 
{ 
    return std::accumulate(array.begin(), array.end(), 0.0)/array.size(); 
} 
+0

Leider kann ich nur die durchschnittliche Methode und den Prototyp bearbeiten, nicht das gesamte Programm @JohnZwinck – HoodCoolege

+0

@HoodCoolege: Kein Problem - Sie können meine erste Version von 'Durchschnitt' in Ihr bestehendes Programm einstecken. Es heißt genau so. –

Verwandte Themen