Maximum Minimum und Mittelwert von N Zahlen ERLEDIGT danke sehr
-
#include <iostream> using namespace std; int main() { char c; do{ int n=0,s=0,zahl,max=0,min=2147483647,mit=0; do{ cout<<"ZAHLEN EINGEBEN***ENDE ==='0'"<<endl; cin>>zahl; s+=zahl; ++n; if(zahl>max){ max=zahl; } if(zahl<min&&zahl!=0){ min=zahl; } }while(zahl!=0); mit=s/n; cout<<"Das Maximum der eingegeben Zahlen ist= "<<max<<endl; cout<<"Das Minimum der eingegeben Zahlen ist= "<<min<<endl; cout<<"Der Mittelwert der eingegeben Zahlen ist= "<<mit<<endl; cout<<"Nochmal==='j'/Abbruch==='n'"<<endl; cin>>c; } while(c=='j'); }
-
Da ist schon wieder so eine for()-Schleife, deren Sinn sich nicht erkennen lässt.
Die Bestimmung des Minimums und Maximums sieht schonmal recht brauchbar aus (allerdings benötigst du einen besseren Anfangswert für das Minimum), für den Mittelwert mußt du in der Schleife die Gesamtsumme und Anzahl der Zahlen mitschreiben.
-
CStoll schrieb:
Da ist schon wieder so eine for()-Schleife, deren Sinn sich nicht erkennen lässt.
Die Bestimmung des Minimums und Maximums sieht schonmal recht brauchbar aus (allerdings benötigst du einen besseren Anfangswert für das Minimum), für den Mittelwert mußt du in der Schleife die Gesamtsumme und Anzahl der Zahlen mitschreiben.Ich lerne gerade die Schleifen deshalb sind die noch sehr quircksig...
Der Anfangswert für Minimum ist falsch verstehe 0 ist nicht brauchbar,
ich dachte das sich das i in der for Schleife erhöht mit i++
Da habe ich dann ja schon die Anzahl allerdings mit i<=zahl das passt ja auch nicht weil das funktioniert ja dann nicht wenn ich zb fünf Zahlen eingelesen habe ist ja i=5 wenn ich dann eine 3 zb eingebe würde die Schleife ja abbrechen und das will ich nicht hmmmmmmm
-
Am Ende der for-Schleife ist i um eins höher als die Nutzereingabe, außerdem wird s und h sinnloserweise (weil sie nicht für den weiteren Ablauf gebraucht werden) erhöht. Und nur weil du weißt, wie eine for()-Schleife funktioniert, mußt du sie nicht überall zwangweise einbauen
Du benötigst nur ein
s+=zahl;
(Gesamtsumme) und++n;
(Anzahl der Werte) und am Ende die Ausgabe vons/n
.
-
CStoll schrieb:
Am Ende der for-Schleife ist i um eins höher als die Nutzereingabe, außerdem wird s und h sinnloserweise (weil sie nicht für den weiteren Ablauf gebraucht werden) erhöht. Und nur weil du weißt, wie eine for()-Schleife funktioniert, mußt du sie nicht überall zwangweise einbauen
Du benötigst nur ein
s+=zahl;
(Gesamtsumme) und++n;
(Anzahl der Werte) und am Ende die Ausgabe vons/n
.Komisch du hast gesagt für min brauche ich einen besseren Anfangswert ich habe es jetzt versucht mit dem Maximum für Integer aber dann bekomme ich für min als Ausgabe genau diesen Wert..
Wenn ich min nicht initialisiere rechnet er richtig aber bei Eingabe von 0 kommt dann ein Wert der zufällig ist schätze ich, Was für einen Anfangswert für min würdest du empfehlen?
-
Bist du sicher, daß du den richtigen Startwert gesetzt hast? Zeig doch mal deinen aktuellen Code, damit ich mitreden kann.
(PS: Was haben dir die Kollegen über das Verstümmeln der Beiträge gesagt?)
-
CStoll schrieb:
Bist du sicher, daß du den richtigen Startwert gesetzt hast? Zeig doch mal deinen aktuellen Code, damit ich mitreden kann.
(PS: Was haben dir die Kollegen über das Verstümmeln der Beiträge gesagt?)
#include <iostream> using namespace std; int main() { char c; do{ int n=0,s=0,zahl,max=0,min=2147483647,mit=0; do{ cout<<"ZAHLEN EINGEBEN***ENDE ==='0'"<<endl; cin>>zahl; s+=zahl; ++n; if(zahl>max){ max=zahl; } else if(zahl<max&&zahl<min&&zahl!=0){ min=zahl; } }while(zahl!=0); mit=s/n; cout<<"Das Maximum der eingegeben Zahlen ist= "<<max<<endl; cout<<"Das Minimum der eingegeben Zahlen ist= "<<min<<endl; cout<<"Der Mittelwert der eingegeben Zahlen ist= "<<mit<<endl; cout<<"Nochmal==='j'/Abbruch==='n'"<<endl; cin>>c; } while(c=='j'); }
-
Änder doch nicht den Orginaltitel nicht ab
-
Bei der Abfrage in Zeile 24 sieht die Bedingung "zahl<max" überflüssig aus. Außerdem kann es durchaus passieren, daß eine Zahl sowohl Minimum als auch Maximum ist, also ist das else in dieser Zeile auch überflüssig.
-
Zeus schrieb:
Änder doch nicht den Orginaltitel nicht ab
Hab es schon das else gehört weg jetzt funktionierts
sorry für die Umstände brauche etwas lange um eine aufgabe zu lösen
Aber Vielen Dank für deine Hilfe
Schönen Abend wünsche ich dir
LG
aus Wien
Markus