Zahlenmaximun aus einem Array suchen (???)
-
Moin liebe Gemeinde ;),
hab hier ne Aufgabe vor mir liegen, die ich nicht lösen kann
:Erstellen Sie ein Programm, das das Maximum aus einer Zahlenmenge findet.
Um beim Einlesen eine Schleife einsetzen zu können, arbeiten Sie vorteilhaft mit einem array.
Bildschirmausgabe des gesuchten Programmes:Bitte eine Zahl eingeben und jeweils mit Return beenden:
2
Bitte eine Zahl eingeben und jeweils mit Return beenden:
3
Bitte eine Zahl eingeben und jeweils mit Return beenden:
1
Bitte eine Zahl eingeben und jeweils mit Return beenden:
7
Bitte eine Zahl eingeben und jeweils mit Return beenden:
5
Das Maximum ist 7 !Wäre echt nice wenn ihr mir bei dieser schweren Hürde weiterhelft

greetz
-
und welche huerde meinst du da ?
zeig doch mal wie weit du bist und wo dein problem liegt.aufgaben werden hier nicht geloest.
Meep Meep
-
naja ich weiß nicht wie ich da rangehen soll.
wie kann ich denn beim einlesen eine schleife einsetzen? welche schleife ist gemeint? for/while/do,while?einlesen ist ja des hier: cin>>
hier ist ein array: x[5]
(5 deßhalb weil 5 werte eingegeben werden bis das maximun ausgegeben wird(?))
ps: das ist keine hausaufgabe, die ich abgeben muss. lerne für eine klausur und will das verstehen.
-
Nubbl schrieb:
wie kann ich denn beim einlesen eine schleife einsetzen? welche schleife ist gemeint? for/while/do,while?
ne for-schleife nimmst am besten wenn du weißt wieviele durchgaenge du machen willst. stimmt zwar im detail auch nicht, aber im grossen und ganzen.
while und do-while-schleifen nimmst wenn du es nicht weißt bzw. z.b. die abbruchbedingung der schleife von ner externen eingabe, wie z.b. der user es ist, abhaengig ist.wenn du ne klausur schreiben musst, dann solltest du doch fast auch unterlagen zur c++ programmierung besitzten oder ?
Meep Meep
-
Meep Meep schrieb:
wenn du ne klausur schreiben musst, dann solltest du doch fast auch unterlagen zur c++ programmierung besitzten oder ?
jo, finde aber nix was das maximum angeht. gibt es da einen bestimmten befehl mit dem man die sache ins rollen bringt? dann kann ich ja vllt danach suchen.
-
Ja gibt es. ">" (Größer als)
Man benutzt ihn so:
if( var1 > var2 ) cout << "var1 ist größer als var2" << endl;Verstehst du?
-
for schleife, den größten wert merken und wenn du beim schleifendurchlauf einen größeren findest den großten wert updaten ...
-
@MAG: so weit mit meinen kenntnissen bin ich schon

@darthdespotism: thx, habs mit diesem code hinbekommen:
int i,z,m; m=0; for(i=0;i<=4;i++) { cout<<"Zahl eingeben"<<endl; cin>>z; if(z>m) { m=z; }; }; cout<<"Maximum ist "<<m; getch();das ganze ist aber ohne arrays

-
dann legst du halt ein array an, schreibst die werte die waehrend deiner for-schleife eingegeben werden da rein. wenn du aus der schleife heraus bist, durchsuchst du das array nach dem groessten wert und gibst den dann aus.
Meep Meep
-
deine lösung ohne schleife ist allerdings besser. weiss nicht, warum da was von nem array in der aufgabe steht. wie du selbst festgestellt hast, ist das gar nicht nötig.
-
@Meep Meep:
Ich komm net drauf.@thordk:
Wieso? Wie soll das ohne Schleife gehen? Es soll ja 5 mal aufgefordert werden eine Zahl einzugeben.Kann mir jmd die Lösung posten bitte?
-
ohne arrays, nich ohne schleife. war nen vertipper

was für ne lösung? hast doch schon eine. oder meinst mit arrays dazu?
- 5x einlesen, werte in nem array speichern (da es genau 5 int werte sein sollen, reicht nen int tollesIntArray[5]).
- array einmal durchlaufen, um maximum zu finden.
- maximum ausgeben.
-
Als Ausgangspunkt dein Code:
int i,z,m; m=0; for(i=0;i<=4;i++) { cout<<"Zahl eingeben"<<endl; cin>>z; if(z>m) { m=z; }; }; cout<<"Maximum ist "<<m; getch();Mit Arrays:
int i,z; int array[6]; //Merken von Maximum in 0tem Arrayelement array[0] = 0; for(i=0;i<=4;i++) { cout<<"Zahl eingeben"<<endl; cin>>array[i+1]; if(array[i+1]>array[0]) { array[0] = array[i+1]; }; }; cout<<"Maximum ist "<<array[0]; getch();
-
würds schon auf zwei schleifen verteilen, sonst ist das array komplett überflüssig *G
-
#include <iostream> #include <vector> #include <algorithm> template<class T> const T max(const std::vector<T> &_v) { T _act = *_v.begin(); for(std::vector<T>::const_iterator _it = _v.begin(); _it != _v.end(); ++_it) if(_act < *_it) _act = *_it; return _act; } int main() { std::vector<int> v; int c; do { std::cin>>c; v.push_back(c); }while(v[v.size()-1] != 0); std::cout<<"Maximum : "<<max<int>(v)<<std::endl; return 0; }
-
Was gefällt dir denn an max_element nicht?

-
THX @zeigerzeiger!
Wäre so darauf nicht gekommen

thordk schrieb:
würds schon auf zwei schleifen verteilen, sonst ist das array komplett überflüssig *G
Funzt doch super (?)
@c++-user:
thx aber 85% deines Codes sind mir fremd ^^Braunstein schrieb:
Was gefällt dir denn an max_element nicht?

kenn ich nicht

-
Kein Problem...
trotzdem solltest du dir max_element aus der stl mal anschauen... Ist wohl eine der gängisten Lösungen in C++...
Gruß
zeiger
-
Hallo,
Um C++-users Beispiel aufzunehmen und etwas zu verbessern.
#include <iostream> #include <vector> #include <algorithm> int main() { std::vector<int> v; int c; do { std::cin >> c; v.push_back(c); }while(v.back() != 0); std::cout << "Maximum : " << *std::max_element(v.begin(), v.end()) << std::endl; return 0; }
-
na ich glaube nicht das das die Aufgabe ist Funktionen wie max etc. ztu verwenden.
Überlege dir einfach mal wie da das selbst machen würdest wenn du ohne Stift und Zettel aus 100 Zahlen die Größte herausfinden müsstest. Du würdest vorne anfangen, dir die erste zahl merken und dann zur 2ten gehn, ist die größer würdest du dir eben diese merken, etc. etc.
-
zumal wir im C++ Stoff noch nicht so weit fortgeschritten sind, dass ich damit was anfangen könnte, und in meinem Vorlesungsscript steht auch nix drüber. Naja vllt kommts ja nächstes Semester dran..................aber trotzdem thx
