Übungsaufgabe: Zwischen kleinsten und größten Wert unterscheiden
-
?
int main() { int werte[10] = {0}; int minimum,maximum; for(int i=0;i<10;i++) { cin >> werte[i]; cout << endl; } minimum = werte[0]; maximum = werte[0]; for(int i=0;i<10;i++) { if(werte[i] < minimum) minimum = werte[i]; if(werte[i] > maximum) maximum = werte[i]; } cout << "Sie haben Werte zwischen " << minimum << " und " << maximum << " eingegeben!"; return 0; }
-
Was habe ich denn jetzt falsch gemacht???
Ohne Buch kann man einfach kein C++ lernen bzw. wird es eh nur Mist.
PS: Es heißt "to keep a stiff upper lip", das macht mich ganz verrückt...
-
Großartig... Lerneffekt Null, dafür kommt der TE bald mit dem nächsten trivialen Problem wieder und will ´ne Lösung. Damit hast du hier niemandem einen Gefallen getan.
-
DocShoe schrieb:
Großartig... Lerneffekt Null, dafür kommt der TE bald mit dem nächsten trivialen Problem wieder und will ´ne Lösung. Damit hast du hier niemandem einen Gefallen getan.
Ich habe mir natürlich Gedanken gemacht.
Mein momentaner Quellcode sieht so aus:
double max(double x, double y) { if(x>y) { return x; } } double min(double x, double y) { if(x<y) { return y; } } double eingabe (double nummer) { double eingabe=0; return eingabe; } int main() { double Werte[10] int i; anzahl=0; double minimum, maximum; cout << "Geben Sie 10 Werte ein!" << endl; for(i=0; i<10; i++) { cout << "Wert[" << i << "]: "; cin >> Werte[i]; } maxium = eingabe (Werte[i]); minimum = eingabe (Werte[i]); for (i=0; i<=anzahl; i++) { maxium = max(eingabe(Werte[i]),maximum); minimum = min(eingabe(Werte[i]), minimum); } cout << "Sie haben Zahlen zwischen " << minimum << " und " << maximum " eingegeben!" << endl; return 0; }Der einzige Fehler, der jetzt noch besteht, ist der, dass die Ausgabe so aussieht:
Sie haben Zahlen zwischen -1.#IND und -1.#IND eingegeben!Ich bin leider noch nicht darauf gekommen, wo der Fehler ist...
-
silent_max schrieb:
Der einzige Fehler, der jetzt noch besteht, ist der, dass die Ausgabe so aussieht:
Sie haben Zahlen zwischen -1.#IND und -1.#IND eingegeben!Ich bin leider noch nicht darauf gekommen, wo der Fehler ist...
Nein, es gibt mehr als einen Fehler, und die sind eklatant offensichtlich. Eigentlich stimmt da überhaupt nichts. Auf Seite 1 hat SeppJ die Fehler übrigens schon aufgezählt, ohne dass du sie korrigiert hast. Geh dein Programm im Debugger durch und schau dir an, wie sich die Werte während der Laufzeit verändern. Oder mach´s mit ´nem Zettel und Stift, wenn du den Umgang mit dem Debugger noch nicht beherrschst. Langfristig solltest du den Umgang mit einem Debugger allerdings beherrschen.
Edit:
Stell deinem Compiler mal so ein, dass er Warnungen wie Fehler behandelt. Dann kompiliert dein Code nicht einmal.
-
Es hat lange gedauert, bis ich auf die Lösung gekommen bin, aber ich habe sie immerhin.
Also hier der Code:
#include <iostream> using namespace std; int main() { const int ANZ = 5; double Werte[ANZ]; double a,b,Min,Max; double aktEl; int i=0; cout << "Geben Sie 5 Werte ein!\n"; //Eingabe for(i=0; i<ANZ; i++) { cout << "Wert[" << i << "]:"; cin >> Werte[i]; } //Bestimmung des kleinsten und größten Elementes des Feldes Min = Werte[0]; Max = Werte[0]; for(i=1; i<ANZ; i++) { aktEl = Werte[i]; if(aktEl < Min) Min = aktEl; if(aktEl > Max) Max = aktEl; } cout << "Sie haben Zahlen zwischen " << Min << " und " << Max << "eingegeben!\n"; return 0; }Ich hoffe, ihr seid mit der Lösung zufrieden???
Gruß
Max
-
silent_max schrieb:
Ich hoffe, ihr seid mit der Lösung zufrieden???
Leider nein. Hast du sie nicht selber ausprobiert? Das compiliert ja nicht einmal:
test.cc: In function 'int main()': test.cc:20:3: error: expected ';' before '}' token } ^Selbst wenn ich den Fehler korrigiere:
test.cc: In function 'int main()': test.cc:9:10: warning: unused variable 'a' [-Wunused-variable] double a,b,Min,Max; ^ test.cc:9:12: warning: unused variable 'b' [-Wunused-variable] double a,b,Min,Max; ^ test.cc:9:14: warning: 'Min' is used uninitialized in this function [-Wuninitialized] double a,b,Min,Max; ^ test.cc:9:18: warning: 'Max' is used uninitialized in this function [-Wuninitialized] double a,b,Min,Max; ^Entsprechend:
Geben Sie 5 Werte ein! Wert[0]:66 Wert[1]:44 Wert[2]:88 Wert[3]:33 Wert[4]:78 Sie haben Zahlen zwischen 0 und 88eingegeben!
-
Sorry ... habe zwei Zeilen vergessen. Muss ich gleich editieren...
Edit:
@SeppJ: Jetzt müsste es passen.
Gruß
-
Hinter
cin >> Werte[i]fehlt ein Semikolon. Du solltest darauf achten, dass du dein Programm vor dem Posten selber noch mal kompilierst.
Ansonsten scheint es aber korrekt zu funktionieren.
In C++ muss man die Variablen nicht am Blockanfang initialisieren:
for(int i=1; i<ANZ; i++)geht auch.
Die Variablen a und b werden deklariert aber nie genutzt.
-
silent_max schrieb:
Sorry ... habe zwei Zeilen vergessen. Muss ich gleich editieren...
Benutz doch Copy&Paste wie jeder sonst auch.
@SeppJ: Jetzt müsste es passen.
Compiliert immer noch nicht. Mit eigenständiger Fehlerbehebung durch mich, erfüllt es nun teilweise die Aufgabe. Es bleiben jedoch unbenutzte Variablen, die dir nicht auffallen, wegen des schlechten Stils.
-
Ja ok... die Variablen a und b sind ein überbleibsel von vorherigen Versuchen. Werde ich wahrscheinlich auch raushauen.
Wollte ja nur zeigen, dass ich mich mit der Programmierung beschäftige...

Aber euch allen an der Stelle ein Danke für die tatkräftige Unterstützung.
Gruß
Max