2016-10-15 4 views
-1

Ich habe Probleme mit meinen Hausaufgaben und mein Professor reagiert nicht. Wie bekomme ich meine Arrays den String-Namen des Monats für die Funktionen getHighest und getLowest zurückgeben?Parallele Arrays, wie man int in String verwandelt

Er sagt mir immer, dass ich mehr Details hinzufügen muss, entfernte ich Code von diesem, so habe ich jetzt nur die wichtigsten und getLowest und getHighest Funktionen übrig. Es sagt, dass ich noch mehr Details brauche, also tippe ich das, um mehr Details hinzuzufügen, damit ich meine Frage einreichen kann.

Vielen Dank im Voraus!

#include <iostream> 
#include <string> 
#include <iomanip> 
using namespace std; 

//Function prototypes 
void getRainfall(double[], int); //To retrieve the user input. 
double getTotal(double[], int); //To total the rainfall amounts. 
double getAverage(double[], int); //To get the average rainfall. 
double getLowest(double[], int, int&); //Returns the lowest value, provides     the index of the lowest value in the last parameter. 
double getHighest(double[], int, int&); //Returns the highest value,  provides the index of the highest value in the last parameter. 

//Global Variable 
const int NUM_MONTHS = 12; 

//Array names 
double rainfall[NUM_MONTHS]; 
string month[NUM_MONTHS] = { "January", "February", "March", "April", "May",  "June", "July", "August", "September", "October", "November", "December" };   //Month array to hold names of months 

int main() 
{ 
    //Declare variables 
    double total, average; 
    int low, high; 
    string lowMonth, highMonth; 

    //Call Functions 
    getRainfall(rainfall, NUM_MONTHS); //To retrieve the user input. 
    total = getTotal(rainfall, NUM_MONTHS); //To total the rainfall amounts. 
    average = getAverage(getTotal, NUM_MONTHS); //To get the average rainfall. 
    lowMonth = getLowest(rainfall, NUM_MONTHS, low); //Returns the lowest value, provides the index of the lowest value in the last parameter. 
    highMonth = getHighest(rainfall, NUM_MONTHS, high); //Returns the highest value, provides the index of the highest value in the last parameter. 

    //Display the following: 
    cout << "The total rainfall for the year is: " << total << endl; 
    cout << "The average rainfall for the year is: " << fixed << showpoint << setprecision(2) << average << endl; 
    cout << "Least amount of rainfall fell in: " << highMonth << endl; 
    cout << "Most amount of rainfall fell in: " << lowMonth << endl; 

    return 0; 
} 


//******************************************************************************************* 
//    double getLowest(double amount[], int size)         * 
// Returns the lowest value, provides the index of the lowest value in the last parameter. * 
//******************************************************************************************* 

double getLowest(double amount[], int NUM_MONTHS, int &low) 
{ 
    low = amount[0]; //Variable to hold lowest value. 
    int lowMonth = 0; //Set low value to intial rainfall value. //Variable to return month element location. 

    for (int index = 0; index < NUM_MONTHS; index++) 
    { 
     if (amount[index] < low) 
     { 
      low = amount[index]; 
      lowMonth = index; 
     } 
    } 

    return lowMonth; 
} 

//********************************************************************************************* 
//    double getHighest(double amount[], int size)         * 
// Returns the highest value, provides the index of the highest value in the last parameter. * 
//********************************************************************************************* 

double getHighest(double amount[], int NUM_MONTHS, int &highMonth) 
{ 
    //high = amount[0]; //Variable to hold highest value 
    months = amount[0]; 
    double highMonth = 0; //Variable to hold highest value 

    for (int index = 0; index < NUM_MONTHS; index++)  
    { 
     if (amount[index] > high) 
     { 
      highMonth = amount[index]; 
      months = index; 
     } 
    } 

    return highMonth; 
} 
+0

Hinweise: Schreiben Sie 'Haupt' zuerst. Sie können die anderen Funktionen nicht ohne 'main' testen und herausfinden, wie Sie die Ergebnisse der Funktionen testen und anzeigen, hilft Ihnen herauszufinden, wie Sie die Funktionen schreiben werden. [Mehr zur Testgetriebenen Entwicklung.] (Https://en.wikipedia.org/wiki/Test-driven_development) Sobald Sie wissen, wie alle Funktionen aussehen müssen, implementieren und testen Sie sie einzeln. Alles auf einmal zu testen erhöht die Oberfläche, die überprüft werden muss, und vergrößert die Wirkung von Fehlern, wenn sie aufeinander aufbauen und sich gegenseitig verbergen. – user4581301

+0

Mit was hast du jetzt, warum machst du nicht 'lowMonth' und' highMonth' in 'main()' ints, und gibst nur 'month [lowMonth]' und 'month [highMonth]' aus? –

Antwort

0

So Ihre Frage ist sehr unklar, und der Code ist ein totales Durcheinander, aber ich nehme an, Sie die Funktion getHighest wollen auch einen String mit dem Namen des Monats zurückgeben?
Nun, man kann nur eine Funktion eine Art von Variable zurück, aber Sie es mit Referenzen tun könnte:

double getHighest(double amount[], int NUM_MONTHS, int &highMonth, string &name) 
{ 
    //high = amount[0]; //Variable to hold highest value 
    months = amount[0]; 
    double highMonth = 0; //Variable to hold highest value 

    for (int index = 0; index < NUM_MONTHS; index++)  
    { 
     if (amount[index] > high) 
     { 
      highMonth = amount[index]; 
      months = index; 
      name = month[index]; 
     } 
    } 
    return highMonth; 
} 

einige Mängel ganz Code hat aber im Allgemeinen: Zum Beispiel das Überschreiben von highMonth könnte Probleme verursachen und Warum passierst du NUM_MONTHS, obwohl es global definiert ist? Und ich verstehe nicht genau, warum dieser Code so kompliziert ist. Ich denke auch, dass die getHighest und getLowest Funktionen nicht einmal funktionieren. Als besserer Ansatz würde ich eine Funktion wie diese versuchen:

double getHighest(double amount[], string &name) 
{ 
    double highest = 0; 
    double highPos = 0; 
    for(unsigned int i = 0; i < NUM_MONTHS; i++) 
    { 
     if(highest <= amount[i]) 
     { 
      highest = amount[i]; 
      highPos = i; 
     } 
    } 
    name = month[highPos]; 
    return highest; 
} 

Edit: Oder, wenn Sie nur die Zeichenfolge zurückgeben möchten, können Sie es wie folgt tun:

String & Name) { // hoch = Menge [0]; // Variable, die den höchsten Wert enthält monates = Betrag [0]; double highMonth = 0; // Variable höchsten Wert

for (int index = 0; index < NUM_MONTHS; index++)  
    { 
     if (amount[index] > high) 
     { 
      highMonth = amount[index]; 
      months = index; 
      name = month[index]; 
     } 
    } 
    return highMonth; 
} 

Aber in der Regel Ihr Code hat recht einige Mängel zu halten: Zum Beispiel das Überschreiben von highMonth könnte Probleme verursachen, und warum passieren Sie NUM_MONTHS, auch wenn es global definiert ist? Und ich verstehe nicht genau, warum dieser Code so kompliziert ist. Ich denke auch, dass die getHighest und getLowest Funktionen nicht einmal funktionieren. Als einen besseren Ansatz würde ich eine Funktion wie folgt versuchen:

string getHighest(double amount[], string &name) 
{ 
    double highest = 0; 
    double highPos = 0; 
    for(unsigned int i = 0; i < NUM_MONTHS; i++) 
    { 
     if(highest <= amount[i]) 
     { 
      highest = amount[i]; 
      highPos = i; 
     } 
    } 
    name = month[highPos]; 
    return name; 
} 
+2

Der Code ist kein totales Durcheinander. Es ist in Funktionen organisiert und die Funktionen sind meist sinnvoll. OP-Bedürfnisse müssen das Lehrbuch viel härter treffen und die Syntax abbauen und etwas mehr darüber nachdenken, was sie tun und was sie in den Funktionen nicht tun müssen. Die Frage ist jedoch unklar. Und wenn die Frage keinen Sinn ergibt, antworte nicht. – user4581301

+0

Danke euch allen. Ich weiß, dass es total durcheinander ist und überall.Ich habe gelesen und an den Review-Fragen gearbeitet, aber die Arrays klicken nicht auf mich. Es ist ein Online-Kurs und mein Professor steht nicht zur Verfügung, während ich an meinen Hausaufgaben arbeite. – beverlyras

+0

Meine Frage war für die Funktionen getHighest und getLowest, ich brauche es, um den String-Namen anstelle eines int zurückzugeben. Ich bin mir nicht sicher wie. – beverlyras

Verwandte Themen