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; }