Hilfe bei Programm(Maximum,Minimum)



  • Hallo

    würde gerne bei folgendem Programm noch das Maximum,Minimum und durchschnittliche Abweichung vom Mittelwert hinzufügen,weiß aber nciht wie das geht.Könnt ihr mir helfen?

    #include <iostream>
    
    using namespace std;
    
    double durchschnitt; 
    double gesamt;
    
    int main()
    
    {
    double *feld;
    feld = new double[7];
    
    if (feld == NULL)
    {
    cout << "Error: kein Speicher verfuegbar"
    << endl;
    
    return 1;
    }
    double t1,t2,t3,t4,t5,t6,t7;
    cout << "Geben Sie bitte einen Zahlenwert ein: ";
    cin >> t1; 
    cout << "Geben Sie bitte einen Zahlenwert ein: ";
    cin >> t2; 
    cout << "Geben Sie bitte einen Zahlenwert ein: ";
    cin >> t3; 
    cout << "Geben Sie bitte einen Zahlenwert ein: ";
    cin >> t4; 
    cout << "Geben Sie bitte einen Zahlenwert ein: ";
    cin >> t5; 
    cout << "Geben Sie bitte einen Zahlenwert ein: ";
    cin >> t6; 
    cout << "Geben Sie bitte einen Zahlenwert ein: ";
    cin >> t7; 
    
    feld[0]=t1;
    feld[1]=t2;
    feld[2]=t3;
    feld[3]=t4;
    feld[4]=t5;
    feld[5]=t6;
    feld[6]=t7;
    
    gesamt = feld[0] + feld[1] + feld[2] + feld[3] + feld[4] + feld[5] + feld[6];
    durchschnitt = gesamt/7.0;
    
    cout << "Durchschnitt: " << durchschnitt << '/n';
    
    delete[] feld;
    
    fflush(stdin); // leert den Eingabepuffer
    getchar(); // auf Tastatureingabe warten
    return 0;
    }
    

    Vielen Dank



  • Wenn ich sowas schon sehe rollen sich mir die Zehnägel hoch. Bitte bitte lies dir Thinking in C++ Vol. 1 und 2 durch.



  • Keine Idee? Wie würdest du denn den größten und kleinsten Wert in einer Liste finden?



  • Wat meinst du denn mit durchschnittliche Abweichung vom Mittelwert??

    BTW: dein Code ist wirklich miserabel. Du solltest dir das nochmal ansehen. Aber weil ich n guten Tag hab, hab ich mal n bisschen korrigiert und drin rumgefuscht..
    Keine Ahnung, obs funzt, hab grad keinen Compiler und auch keinen Bock...

    #include <iostream> 
    
    using namespace std; 
    
    int main() 
    { 
        double durchschnitt, gesamt, max, min; 
        double *feld = new double[7]; 
    
        if (feld == NULL) 
        { 
            cout << "Error: kein Speicher verfuegbar!" << endl; 
            return 1; 
        } 
    
    	for(int k = 0; k != 7; k++)
    	{
    		cout << "Geben Sie bitte einen Zahlenwert ein: "; 
    		cin >> feld[k]; 
    	}
    
        durchschnitt = (feld[0] + feld[1] + feld[2] + feld[3] + feld[4] + feld[5] + feld[6]) / 7.0; 
    
        max = feld[0]; 
        min = feld[0]; 
        for(int i = 0; i != 7; i++) 
        { 
            if(feld[i] < min) 
                min = feld[i]; 
            if(feld[i] > max) 
                max = feld[i]; 
        } 
    
        cout << "Durchschnitt: " << durchschnitt << endl; 
        cout << "Maximal: " << max << endl; 
        cout << "Minimal: " << min << endl; 
    
        delete[] feld; 
    
        cin.get(); 
        return 0; 
    }
    


  • double durchschnitt, gesamt, max, min;
        double *feld = new double[7];
    

    Alle Variablen zu Beginn einer Funktion zu definieren ist alter C-Stil und in C++ unnötig (und unübersichtlich).

    Machine schrieb:

    if (feld == NULL) 
        { 
            cout << "Error: kein Speicher verfuegbar!" << endl; 
            return 1; 
        }
    

    Den Teil kannst du getrost wegschmeißen, new wirft eine Exception, wenns Probleme gibt.

    durchschnitt = (feld[0] + feld[1] + feld[2] + feld[3] + feld[4] + feld[5] + feld[6]) / 7.0;
    

    man könnte natürlich auch std::accumulate benutzen...

    max = feld[0]; 
        min = feld[0]; 
        for(int i = 0; i != 7; i++) 
        { 
            if(feld[i] < min) 
                min = feld[i]; 
            if(feld[i] > max) 
                max = feld[i]; 
        }
    

    auch hier gibts standard-algorithmen: std::max_element und std::min_element

    delete[] feld;
    

    Die Speicherverwaltung kann man sich natürlich auch abnehmen lassen wenn man STL-container verwendet...

    #include <algorithm>
    #include <cstdlib>
    #include <iostream>
    #include <vector>
    
    using namespace std;
    
    int main()
    {
        const int anzahl = 7;
        vector<double> feld(anzahl);
    
        for(int k = 0; (k != anzahl) && cin; ++k)
        {
            cout << "Geben Sie bitte einen Zahlenwert ein: ";
            double d;
            cin >> d;
            feld.push_back(d);
        }
    
        if (feld.size() != anzahl)
        {
          cerr << "Probleme bei der Eingabe!" << endl;
          return EXIT_FAILURE;
        }
    
        double durchschnitt = accumulate(feld.begin(), feld.end()) / feld.size();
        double max = *max_element(feld.begin(), feld.end());
        double min = *min_element(feld.begin(), feld.end());
    
        cout << "Durchschnitt: " << durchschnitt << endl;
        cout << "Maximal: " << max << endl;
        cout << "Minimal: " << min << endl;
    
        cin.get();
        return EXIT_SUCCESS;
    }
    

Log in to reply