C++ Anfänger frage

05/05/2012 17:58 Pataya40#1
Hallo zusammen,

Ich hab ein problem mit den variablen mit den eckigen klammern (z.B anzahl[10] ) weis grad nicht wie die genau heißen..

Ich schreibe gerade ein Program beidem ich belieblig viele schulnoten eingeben kann sodas mir am ende der mittelwert ausgegeben wird.
Bis jetzt wusste ich immer wie viele von diesen variablen ich gebraucht wurden, war also kein problem ... nun tu ichs aber nicht.
Was muss ich also tun um die variablen laufend zu "erweitern"? habs schon mit anzahl[i] versucht, weils mir logisch erschien, ging aber nicht xD

lg
05/05/2012 18:00 xNopex#2
Laufend erweitern.. Da würde ich spontan mal std::vector empfehlen.
05/05/2012 18:12 Pataya40#3
noch nie gehört xD
das ist ja dann keine variable oder?
05/05/2012 18:25 Dr. Coxxy#4
[Only registered and activated users can see links. Click Here To Register...]

Am anfang sind noch arrays, am ende des ersten drittels ungefähr werden vektoren erklärt.
05/05/2012 18:30 Pataya40#5
danke, werd ich mal alles lesen ;)

heist das, das variablen mit [] nur mit einem fixen wert funktioniren?
ich frag mich was sich mein informatik lehrer dabei gedacht hat als er uns die aufgabenstellung gab bei der man die variablen genau so verwenden muss :rolleyes:
05/05/2012 18:50 MoepMeep#6
Ich wüßte nicht wozu man bei dieser Aufgabenstellung unbedingt ein array braucht.
05/05/2012 18:56 Pataya40#7
Quote:
Originally Posted by MoepMeep View Post
Ich wüßte nicht wozu man bei dieser Aufgabenstellung unbedingt ein array braucht.
was meinst du mit array?

wie gesagt, bin anfänger ...
05/05/2012 18:59 xNopex#8
Nja im Grunde musst du nur die Summe und Anzahl der Noten speichern. Da hat MoepMeep recht. Zwei Integers und eine Double Variable fürs Ergebnis dürften langen.
05/05/2012 19:01 Pataya40#9
Ich muss aber später auf jeden wert zugreifen können, deshalb auch die []-variablen ...
05/05/2012 19:03 xNopex#10
Die "[]-Variablen" sind die Arrays.. Felder.. Lern mal deinen Stoff anständig. Sicherlich geht es auch über Arrays, aber das ist überhaupt keine kluge Idee. Weder Perfomance noch Speichertechnisch. Via new kannst du dynamische Arrays anlegen. Aber da würde ich doch lieber std::vector bevorzugen.

EDIT: Wenn du den Nutzen vorher eingeben lässt, wieviele Noten er eingibt, dann könnte es etwa so gehen:

Code:
int anzahlNoten = 6;
int* noten = new int[anzahlNoten];
Ansonsten std::vector nehmen, wenn dir der Zugriff auf die einzelnen Elemente so wichtig ist.
05/05/2012 19:10 Pataya40#11
hat leider nix damit zu tun das ich nicht genug lerne, mein lehrer ist einfach kacke (ich weiß standart ausrede, aber wenns stimmt ^_^)
Laut meinem lehrer müssen wir arrays verwenden, kann ich leider nix machen :(
05/05/2012 19:14 xNopex#12
Das bezweifle ich. Du hast dir eher die Aufgabenstellung nicht genau durchgelesen. Mit Arrays wäre es nur so lösbar, dass du das Feld elendig groß machst, um alle Noten speichern zu können, was undglaubliche Speicherverschwendung wäre oder du erstellst immer wieder dynamisch ein neues Array, das um ein Element größer ist. Das ist jedoch von der Performance her dumm.
05/05/2012 19:24 Pataya40#13
Aufgabenstellung :
Program schreiben welches die Noten einer belibigen anzahl von schüler einliest.
Das Program muss am ende denn mittelwert und die anzahl der noten welche über dem mittelwert sind ausgeben.
Wir dürfen natürlich nur dinge verwenden die wir gelernt haben...

wie kann man den dynamische arrys erstellen?
05/05/2012 19:45 xNopex#14
Und wo steht da jetzt, dass du Arrays verwenden musst? Du liest die Noten ein. Summierst sie auf. Speicherst ab, wie viele eingegeben wurden. Und am Schluss berechnest du den Mittelwert.

EDIT: Klassischer Fall von überlesen.. "und die anzahl der noten welche über dem mittelwert sind ausgeben."

Dann musst du das aufteilen. Du speicherst ab, wie viele 1er, 2er, ... eingegeben worden. Geht aber auch ohne Array.
05/05/2012 19:54 Pataya40#15
wir bekommen keine Zettel auf der die angabe steht sondern der leher sagt uns alles mündlich >.>
Mittelwert berechnen ist ja nicht das problem, das problem ist das ichs nicht schaffe das alle werte die über dem durschnitt liegen gezählt werden...
Das abspeichern der werte kann man nicht vermeiden, da ich die zahlen erst zählen kann nachdem ich den mittelwert berechnet habe. Wird mir woll nichts anderes übrig bleiben als ein 100er arrey zu erstellen