Zahlen erkennen?
-
Dein Beispiel ist ein klassischer Fall der Verwendung einer Schleife und eines Arrays.
Wenn du z.b. sieben Zahlen eingeben willst, kann das z.b. so aussehen:
std::vector<int> Temperaturen; for ( unsigned i = 0; i < 7; ++i ) { int Temp; cin >> Temp; Temperaturen.push_back( Temp ); }In dieser Schleife könntest du dann auch gleich immer das Minimum und das Maximum aktualisieren. Da brauchst du dann nur prüfen ob die neue eingegebene Zahl kleiner oder größer ist als das bisherige Minimum oder Maximum.
Den Durchschnitt kannst du in dieser Schleife auch gleich mit berechnen.Und hinterher brauchst du dann nur noch deine Werte ausgeben.
-
cout << "Höchsttemperatur" << std::max<int>Meinst du etwa so?
Ich bekomme Fehlermeldungen mit denen ich nichts anfangen kann
-
nein, so meinte er das nicht.
Überleg doch mal. Der Compiler ist kein Zauberkasten, der genau weiß was du willst.
Wenn du dir eine mathematische Max-Funktion vorstellst, dann kommst du zu dem Schluss, dass du dieser Funktion 2 Werte übergeben musst. Woher soll der Computer wissen, welche Zahlen du vergleichen willst, wenn du einfach nur eine Funktion ohne Parameter aufrufst.
-
topfklee schrieb:
cout << "Höchsttemperatur" << std::max<int>Meinst du etwa so?
Ich bekomme Fehlermeldungen mit denen ich nichts anfangen kann
dann empfehle ich dir, erstmal ein gutes Grundlagenbuch zu lesen.
es handelt sich um eine Funktion, die zwei Argumente bekommt.
int zahl1 = 5; int zahl2 = 33; int maximum = std::max<int>(zahl1, zahl2);
-
nicht, dass ich nicht denken will oder jetzt dem Kurs von mir die Schuld geben will aber wenn ich mir das alles so anhöre oder ansehe wie das funktionieren soll hätte ich mir den Kurs besser gespart

Dann versuch ich das mal, danke für die Hilfe

-
Topfklee, wir können dir immer nur kleine Hinweise geben, um dich in die richtige Richtung zu schubsen,
Es macht ja keinen Sinn, wenn wir dir die fertige Lösung für dein Problem vorlegen, weil du dann nicht mehr selber denken musst und somit auch nicht so viel lernst, als wenn du selbst was beitragen musst
Nimm dir einfach mal einen Zettel und einen Stift, schreib dir 7 Zahlen in eine Reihe und überlege wie du, ohne Programmierung, das Minium oder das Maximum berechnen würdest.
Und wenn du uns dann deinen Lösungsweg hier hinschreibst, können wir dir wiederum Hinweise zur Umsetzung in C++ geben.
-
It0101 schrieb:
Topfklee, wir können dir immer nur kleine Hinweise geben, um dich in die richtige Richtung zu schubsen,
Es macht ja keinen Sinn, wenn wir dir die fertige Lösung für dein Problem vorlegen, weil du dann nicht mehr selber denken musst und somit auch nicht so viel lernst, als wenn du selbst was beitragen musst
Selbstverständlich ich erwarte ja auch keine Lösung, nur kann ich mit meinen Kenntnissen wenig damit anfangen, Ihr schreibt alle Funktionen so kurz und für mich noch etwas kompliziert. Ich habe immer 40 Zeilen+ für so eine einfachen Quelltext gebraucht.
-
40+ kommt daher weil du eben bei 7 Eingaben, 7 mal "cin >> " hinschreibst. Wie die kurze Lösung mit einer Schleife aussieht, habe ich dir ja schon vorgeschlagen.
-
It0101 schrieb:
Nimm dir einfach mal einen Zettel und einen Stift, schreib dir 7 Zahlen in eine Reihe und überlege wie du, ohne Programmierung, das Minium oder das Maximum berechnen würdest.
Und wenn du uns dann deinen Lösungsweg hier hinschreibst, können wir dir wiederum Hinweise zur Umsetzung in C++ geben.
Warum berechnen? Es soll der größte eingegebene Wert ausgegeben werden

-
daddy_felix schrieb:
das Minimum zweier (Integer-)Zahlen bekommst du mit std::min<int>, das Maximum mit std::max<int>.
Und warum laesst du nicht Template Argument Deduction die Arbeit fuer dich machen? Voellig redundant.
-
It0101 schrieb:
40+ kommt daher weil du eben bei 7 Eingaben, 7 mal "cin >> " hinschreibst. Wie die kurze Lösung mit einer Schleife aussieht, habe ich dir ja schon vorgeschlagen.
Ja, das sind jetzt meine aller ersten "Programme" die ich selbst schreibe, ich hatte mich vorher nur Übungsaufgaben beschäftigt aus einem Kurs, wo alles so richtig war, wenn ich 7x cin verwende

-
Kellerautomat schrieb:
Und warum laesst du nicht Template Argument Deduction die Arbeit fuer dich machen? Voellig redundant.
Was ist denn das?
-
edit: sorry, schon wieder "editieren" und "zitieren" verwechselt...
-
Kellerautomat schrieb:
Und warum laesst du nicht Template Argument Deduction die Arbeit fuer dich machen? Voellig redundant.
weil das so für einen totalen Anfänger, der vermutlich noch nie von Templates gehört hat, ein wenig transparenter ist.
topfklee schrieb:
Was ist denn das?
In einigen Fällen kannst du bei der Verwendung von Templates die Angabe des Typs (hier <int>) weglassen, weil der Compiler das anhand der übergebenen Parameter selbst ableiten kann.
Damit kannst du dich näher beschäftigen, wenn du dich ein wenig mit Templates auskennst.
-
daddy_felix schrieb:
Kellerautomat schrieb:
Und warum laesst du nicht Template Argument Deduction die Arbeit fuer dich machen? Voellig redundant.
weil das so für einen totalen Anfänger, der vermutlich noch nie von Templates gehört hat, ein wenig transparenter ist.
Ich behaupte das Gegenteil. Wozu muss er ueberhaupt wissen, dass es ein Template ist?
-
Kellerautomat schrieb:
Wozu muss er ueberhaupt wissen, dass es ein Template ist?
weil er sonst denkt, dass diese Funktion nur für Integer funktioniert?
-
topfklee schrieb:
It0101 schrieb:
Nimm dir einfach mal einen Zettel und einen Stift, schreib dir 7 Zahlen in eine Reihe und überlege wie du, ohne Programmierung, das Minium oder das Maximum berechnen würdest.
Und wenn du uns dann deinen Lösungsweg hier hinschreibst, können wir dir wiederum Hinweise zur Umsetzung in C++ geben.
Warum berechnen? Es soll der größte eingegebene Wert ausgegeben werden

Und wie findest du auf herkömmlichem Wege raus, welche Zahl die größte ist? Das ist vielleicht keine direkte Berechnung, ich nenne das nur so

-
Vielleicht sollte man gerade einen Anfänger zumindest zu Beginn erstmal nicht mit unnötigen Templates verwirren und nicht mit Fachbegriffen auf die Kacke hauen.
Meine Güte, er hat nicht mal Schleifen und ihr wollt ihm mit templates auf den Keks gehen? Bleibt mal auf dem Teppich. Selbst auf std::max würde ich verzichten. "<" und ">" tun es anfangs auch und sind vor allem "realitätsnah".
-
daddy_felix schrieb:
Kellerautomat schrieb:
Wozu muss er ueberhaupt wissen, dass es ein Template ist?
weil er sonst denkt, dass diese Funktion nur für Integer funktioniert?
Koennte genausogut ueberladen sein, genau wie eingebaute Operatoren auch - den Unterschied wuerde niemand bemerken, solange er keine selbstdefinierten Typen reinsteckt. Die Begruendung zieht also nicht.
Abgesehen davon, kannst du ihm auch einfach sagen, dass die Funktion mit allem funktioniert, was vergleichbar ist.
-
Topfklee du darfst das auch nicht als Vorwurf nehmen, wenn dir jemand eine bessere Lösung vorschlägt... Wir haben alle nur dein bestes im Sinn
