Würfelprogramm
-
Ich hatte mal die Idee ein Würfelprogramm zu schreiben.
Naja Würfeln tut es wunderbar nun soll es das Gwürfelte auswerten.
Aber komischerweiße kommen da ziemlich hohe Zahlen raus so e1= 208876 obwohl ich nur einmal würfle...
Hier mein Programm
´#include <cstdlib> #include <iostream> #include "random.cpp" using namespace std; int main(int argc, char *argv[] ) { int anzahl; int wuerfel; cout<<"Programm zur Wahrscheinlichkeitsberechnung anhand einer Wuerfel Simulation.\n\n"; cout<<"Wie viel mal wollen sie Wuerfeln "; cin>>anzahl; int i; int e1; int e2; int e3; int e4; int e5; int e6; for (unsigned i = 0; i < anzahl; i++) { wuerfel ==0; wuerfel = Random::rnd(1, 6); cout<<wuerfel<<endl; if (wuerfel == 1) { e1++; } else if (wuerfel == 2) { e2++; } else if (wuerfel == 3) { e3++; } else if ( wuerfel == 4) { e4++; } else if (wuerfel == 5) { e5++; } else { e6++; } } cout <<"Sie haben "<< anzahl << " mal gewuerfelt\n\n"; cout <<"1 gewuerfelt " << e1 << "\n"; cout <<"2 gewuerfelt " << e2 << "\n"; cout <<"3 gewuerfelt " << e3 << "\n"; cout <<"4 gewuerfelt " << e4 << "\n"; cout <<"5 gewuerfelt " << e5 << "\n"; cout <<"6 gewuerfelt " << e6 << "\n"; system("pause"); return EXIT_SUCCESS; }
Danke für Hilfe im vorraus
-
mußt e1 vorher auf 0 setzen.
int e1=0;
-
Tatsächlich.
Klappt auch so.
Hatte angenommen, dass Variablen automatisch der Wert zugewiesen wird.
Hatte es auch so versucht aber da kam das gleich bei raus... int i; int e1; int e2; int e3; int e4; int e5; int e6; e1 == 0; e2 == 0; ... for (unsigned i = 0; i < anzahl; i++) { ...
Da muss wohl ein = zu viel sein.
Da ich vorher VB und Pascal programmiert habe ist mir dieses == oder =+ und sowas sowieso nich nen Rätsel
-
'=' nimmst du, um Werte zuzuweisen. '==' nimmst du, um zu vergleichen. Und '=+' gibt es nicht. Du meinst wohl '+=':
i=i+5; //du weist i seinen eigenen Wert plus 5 zu i+=5; //dasselbe in abgekürzter Form i++; //so kannst du 1 addieren (Postfix) ++i; //so auch (Präfix) j=i++; //erst wird j der Wert von i zugewiesen, danach wird i inkrementiert (um 1 erhöht) j=++i; //erst wird i inkrementiert, danach wird der neue Wert von i j zugewiesen
Genau wie += funktionieren übrigens auch *=, -=, /=, &= usw.
-
Nimm vielleicht lieber ein Array oder falls reines C++, einen STL-Container (std::vector).
-
Kóyaánasqatsi schrieb:
Nimm vielleicht lieber ein Array oder falls reines C++, einen STL-Container (std::vector).
Arrays sind reines C++.
-
volkard schrieb:
Arrays sind reines C++.
Das bezog sich auf std::vector.
-
_matze schrieb:
Und '=+' gibt es nicht.
Gibt es schon, aber das ist nichts anderes als '='.
int i =+ 1; //müsste doch gehen
-
TyRoXx schrieb:
_matze schrieb:
Und '=+' gibt es nicht.
Gibt es schon, aber das ist nichts anderes als '='.
int i =+ 1; //müsste doch gehen
Hehe, Klugsch...
Den operator=+ gibt es nicht. Genau genug?
-
_matze schrieb:
Hehe, Klugsch...
Den operator=+ gibt es nicht. Genau genug?
Es gibt aber noch "=-", man kann es zwar zusammenschreiben, was dazu führt das es aussieht, als seie es ein Operator. Jedoch gilt in diesem Falle das Minus als Negativierung als Präfix einer Variable.
-
Kóyaánasqatsi schrieb:
_matze schrieb:
Hehe, Klugsch...
Den operator=+ gibt es nicht. Genau genug?
Es gibt aber noch "=-", man kann es zwar zusammenschreiben, was dazu führt das es aussieht, als seie es ein Operator. Jedoch gilt in diesem Falle das Minus als Negativierung als Präfix einer Variable.
Ja, klar. Ist ja nichts anderes als das '=+'-Beispiel. Das hat alles nix mit Operatoren zu tun.
Und wer in seinem Code sowas
i =- 1;
stehen hat, hat für meine Begriffe einen schlechten Stil. Es muss natürlich so aussehen:
i = -1;
Das lässt erst gar keine falschen Vermutungen zu und entspricht dem, was man wohl auch handschriftlich notieren würde.
-
_matze schrieb:
Und wer in seinem Code sowas
i =- 1;
stehen hat, hat für meine Begriffe einen schlechten Stil. Es muss natürlich so aussehen:
i = -1;
Nein, es MUSS so aussehen
i=-1;
Jede andere Schreibweise ist schlechter Stil. Ist doch klar.
-
außerdem sind grafisch-gestalterische aspekte zu bedenken:
for ( unsigned i=0 ; i<anzahl ; i-=-1 )
-
volkard schrieb:
außerdem sind grafisch-gestalterische aspekte zu bedenken:
for ( unsigned i=0 ; i<anzahl ; i-=-1 )
Ich hätte es so geschrieben:
for( unsigned i = 0; i < anzahl; i -= -1 )
(Hatte ich glaube von der CodeStyle-Convention von ID-Software abgeguckt)
-
Kóyaánasqatsi schrieb:
volkard schrieb:
außerdem sind grafisch-gestalterische aspekte zu bedenken:
for ( unsigned i=0 ; i<anzahl ; i-=-1 )
Ich hätte es so geschrieben:
for( unsigned i = 0; i < anzahl; i -= -1 )
(Hatte ich glaube von der CodeStyle-Convention von ID-Software abgeguckt)
Hiermit für die Nachwelt festgehalten.
Genau das passiert, wenn man sich an Konventionen festhält. Man schreibt irgendwann tatsächlich
for( unsigned i = 0; i < anzahl; i -= -1 )
, denn es ist ja jetzt "lesbar" und man kann stolz drauf sein. Zur Not holt man jede Menge static_cast raus für srand(static_cast<int>(time(static_cast<time_t*>(0))).
-
volkard schrieb:
außerdem sind grafisch-gestalterische aspekte zu bedenken:
for ( unsigned i=0 ; i<anzahl ; i-=-1 )
Und als Variable vielleicht noch 'l' anstelle von 'i' ...
-
volkard schrieb:
Genau das passiert, wenn man sich an Konventionen festhält. Man schreibt irgendwann tatsächlich
Verstehe ich nicht, was meinst du damit?
Belli schrieb:
Und als Variable vielleicht noch 'l' anstelle von 'i' ...
-
Kóyaánasqatsi schrieb:
volkard schrieb:
Genau das passiert, wenn man sich an Konventionen festhält. Man schreibt irgendwann tatsächlich
Verstehe ich nicht, was meinst du damit?
Na, i-=-1 ist doch ein Scherz. Normale Menschen schreiben ++i
-
volkard schrieb:
Na, i-=-1 ist doch ein Scherz. Normale Menschen schreiben ++i
Sag das doch, ich dachte du meinst die Konvention .
-
volkard schrieb:
Nein, es MUSS so aussehen
i=-1;
Jede andere Schreibweise ist schlechter Stil. Ist doch klar.
Nenenene, nix da! Es MUSS so aussehen:
i = -1;