Zufallszahlen mit Beispiel Würfel-->komme nicht zum Ergebnis
-
Hier, das ist viel schöner und kürzer

#include <iostream> #include <conio> using namespace std; int main(int argc, char* argv[]) { int random; int array[6] = {0}; int eingabe; for (int i = 1; i < 21; i++) { random = (rand()%6)+1; cout << "Die " << i << ". Zahl ist: " << random << endl; array[random-1] += random; } cout << endl << "Geben Sie eine Zahl ein: "; cin >> eingabe; while (eingabe < 1 || eingabe > 6) { cout << "Ungültige Zahl. Zahl muss zwischen 1 und 6 liegen." << endl; cin >> eingabe; } cout << "Es wurde " << array[eingabe-1] / eingabe << "." << " Mal die " << eingabe << " gewuerfelt" << endl; getch(); return 0; }
-
milo51 schrieb:
Hier, das ist viel schöner und kürzer

Da gebe ich dir recht, dein Code ist wirklich schöner .. die Frage ist nur ob ein Anfänger gleich mit zeigern auf arrays arbeiten sollte .. immer eins nach dem andern .. finde ich zumindestens ..
Gruss
-
hi, ja das sieht um einiges schöner aus, aber ich bin leider noch nicht so weit, ich weiß nicht, irgendwie liegt mir C++ nicht, aber gehört zur ausbildung....
und dienstag klausur über die funktionen(bestimmte projekte auslagern, werte übergeben)
schleifen
und struktogrammemit dem letzen habe ich mich mehr oder weniger angefreundet, aber die ersten beiden, kein plan, ich kopiere das einfach nicht, wisst ihr eventuell wo das gut und verständlich erklärt ist?
gruß
-
Guck mal oben rechts in die Bücher- und Tutorialecke. Da findet man immer gute Sachen. Die Forensuche sollte dir auch weiterhelfen etwas zu finden, um C++ zu lernen. Dazu gibt es mehr als genug Threads.
-
so, nun habe ich die veränderung bei iostream gemacht, wenn ich das .h weg lasse, dann erkennt er die befehle nicht! also was cout heißt und so, wenn ich das .h wieder dahin schreibe dann macht er wieder alles...
so, das mit if else gefällt mir auch, aber ich bin nicht drauf gekommen, dass man elseif machen kann, ich wusste nicht was man bei else rein schreiben soll...
was ist denn in meinem queltext falsch?
ich weiß nicht genau was ich da addieren muss, bzw. wie ich die häufigkeit der gewürfelten zahlen ermitteln kann?
der muss ja irgendwie nachsehen, wie oft die eine zahl vorgekommen ist....
und das mit den kurzen und sauberen queltexten, das sah schon um einiges besser aus....aber
bin ein NOOB, und so was ist zwar schön, ich werde es aber nie im leben so hi bekommen, ich will lernen C++ mit einfachsten mitteln zu coden und zwar bis dienstag muss ich es mehr oder weniger drauf haben!
-
hier noch mal überarbeitet, aber läuft immer noch nicht vernünftig!
zählt nicht richtig....
warum?
fehlt da was?
#include <iostream.h> #include <stdlib.h> #include <conio.h> #include <time.h> using namespace std; int main() { int iWurf; int iZaehler; int iZahl=0; int iSumme=0; int iAnzahleinser=0, iAnzahlzweier=0, iAnzahldreier=0, iAnzahlvierer=0, iAnzahlfuenfer=0, iAnzahlsechser=0; for (iZaehler=1; iZaehler<5; iZaehler++) { iWurf = 1+(rand()%6); cout<<"\nDer " << iZaehler << ". Wurf : "<< iWurf << endl; iSumme= iSumme+iWurf; cout<<endl; } cout<<"Die Summe lautet: "<<iSumme; cout<<endl; cout<<endl; cout<<"fuer Ueberpruefung der Haufigkeit der Zahlen waehlen Sie: 1, 2, 3, 4, 5 oder 6: \n" ; cin>>iZahl; cout<<endl; switch (iZahl) { case 1 : iAnzahleinser = iAnzahleinser+1; cout<<"die Haufigkeit des Wuerfels 1 betraegt: " <<iAnzahleinser; break; case 2 : iAnzahlzweier = iAnzahlzweier+1; cout<<"die Haufigkeit des Wuerfels 2 betraegt: " <<iAnzahlzweier; break; case 3 : iAnzahldreier = iAnzahldreier+1; cout<<"die Haufigkeit des Wuerfels 3 betraegt: " <<iAnzahldreier; break; case 4 : iAnzahlvierer = iAnzahlvierer+1; cout<<"die Haufigkeit des Wuerfels 4 betraegt: " <<iAnzahlvierer; break; case 5 : iAnzahlfuenfer = iAnzahlfuenfer+1; cout<<"die Haufigkeit des Wuerfels 5 betraegt: " <<iAnzahlfuenfer; break; case 6 : iAnzahlsechser = iAnzahlsechser+1; cout<<"die Haufigkeit des Wuerfels 6 betraegt: " <<iAnzahlsechser; break; default : cout<<"falscher Wurf "; break; cout<<endl; } getch(); }
-
die anzahleinser, anzahlzweier,... bekommen ja von dem durchlauf in der schleife nichts mit .. so kannst du diese auch nicht hochzählen..
was du machst ist einfach jeder variablen eine 1 zuzuweisen ..in dem du 0+1 machst.gruss
-
Du machst es viel zu kompliziert! Warum switch
Mit Arrays geht so was doch deutlich einfacher, da man die Anzahlen direkt über den Index hochzählen kann.#include <iostream> #include <ctime> using namespace std; int main() { int alleAnzahlen[6] = {0}; int n = 100, i; srand(time(0)); for (i=0; i<n; ++i) ++alleAnzahlen[(rand()%6)]; for (i=0; i<6; ++i) cout << "Es wurde " << alleAnzahlen[i] << " mal " << (i+1) << " gew\x81rfelt." << endl; cin.get(); }
-
weil ich mich mit arrays noch nicht auskenne!
ich weiß ist kompleziert, aber was leichteres fällt mich nicht ein!
und wie mache ich das, dass die zahlen gezählt bzw. aufaddiert werden?
wie weise ich ihm das zu?weil
bei switch sollte er ja gucken, welche zahl betroffen ist, wenn 1 dann das und das usw.
aber wie genau mache ich diese aufzählung?
gruß
-
mit switch ist das ein wenig schwer .. soweit ich das jetzt überblicke müsstest du dir eine Funktion schreiben, die du dann bei jedem case nach der addition wieder erneut aurufst ..
case 1 : iAnzahleinser = iAnzahleinser+1; cout<<"die Haufigkeit des Wuerfels 1 betraegt: " <<iAnzahleinser; counter();korrigiert mich wenn ich daneben liege ..

-
waldemator schrieb:
bei switch sollte er ja gucken, welche zahl betroffen ist, wenn 1 dann das und das usw.
aber wie genau mache ich diese aufzählung?
Wenn du keine arrays benutzt, musst du für das Inkrementieren (Hochzählen) AUCH switch benutzen, wenn 1, dann inkrementiere iAnzahleinser usw. Wenn du Arrays benutzt, kannst du sowohl das Auslesen als auch das Inkrementieren direkt machen, weil du alle Anzahlen mit einer einzigen Variablen ansprechen kannst. Eine einzelne Anzahl kann man so direkt über den Abstand vom Anfang, auch Array-Index genannt, ansprechen.
-
ich kenne die array funktion nicht, außerdem wie meint ihr dann jedes mal eine funktion schreiben?
ich habe es immer noch nicht am laufen, er läuft zwar durch, aber zählt nicht das richtige zusammen!
es kommt immer als häufigkeit nur eine 1 raus...
-
Du mußt in der Schleife, wo du die Zufallszahlen ermittelst, auch die Zählvariablen entsprechend erhöhen:
for (iZaehler=1; iZaehler<5; iZaehler++) { iWurf = 1+(rand()%6); cout<<"\nDer " << iZaehler << ". Wurf : "<< iWurf << endl; iSumme= iSumme+iWurf; cout<<endl; switch(iWurf) { case 1: iAnzahleinser++;break; case 2: iAnzahlzweier++;break; //... 'case 3' bis 'case 6' analog } } cout<<"Welche Anzahl wollen Sie wissen?\n"; cin>>iZahl; switch(iZahl) { case 1: cout<<"Es wurden "<<iAnzahleinser<<" Einser gewürfelt."<<endl;break; //... 'case 2' bis 'case 6' analog default:cout<<"Es gibt keinen Wert "<<iZahl<<" auf dem Würfel."<<endl; }PS: Ein "Array" ist keine Funktion, sondern ein Datentyp, der mehrere gleichartige Werte (z.B. Zahlen) Speichern kann - wie dein Programm mit Arrays aussehen kann, hat z.B. schorch demonstriert.
-
update:
irgendwie fehlt hier immer noch was, solangsam verliere ich den überblick!
#include <iostream.h> #include <stdlib.h> #include <conio.h> #include <time.h> using namespace std; int main() { int iWurf; int iZaehler; int iZahl=0; int iSumme=0; int iAnzahleinser=0, iAnzahlzweier=0, iAnzahldreier=0, iAnzahlvierer=0, iAnzahlfuenfer=0, iAnzahlsechser=0; for (iZaehler=1; iZaehler<20; iZaehler++) { iWurf = 1+(rand()%6); cout<<"\nDer " << iZaehler << ". Wurf : "<< iWurf << endl; cout<<endl; } cout<<endl; cout<<endl; switch(iWurf) { case 1: iAnzahleinser++; break; case 2: iAnzahlzweier++; break; case 3: iAnzahldreier++; break; case 4: iAnzahlvierer++; break; case 5: iAnzahlfuenfer++; break; case 6: iAnzahlsechser++; break; default: cout<<"falsch"; } cout<<endl; cout<<endl; cout<<"fuer Ueberpruefung der Haufigkeit der Zahlen waehlen Sie: 1, 2, 3, 4, 5 oder 6: \n" ; cin>>iZahl; cout<<endl; switch (iZahl) { case 1 : cout<<"die Haufigkeit des Wuerfels 1 betraegt: " <<iAnzahleinser; break; case 2 : iAnzahlzweier = iAnzahlzweier+1; cout<<"die Haufigkeit des Wuerfels 2 betraegt: " <<iAnzahlzweier; break; case 3 : iAnzahldreier = iAnzahldreier+1; cout<<"die Haufigkeit des Wuerfels 3 betraegt: " <<iAnzahldreier; break; case 4 : iAnzahlvierer = iAnzahlvierer+1; cout<<"die Haufigkeit des Wuerfels 4 betraegt: " <<iAnzahlvierer; break; case 5 : iAnzahlfuenfer = iAnzahlfuenfer+1; cout<<"die Haufigkeit des Wuerfels 5 betraegt: " <<iAnzahlfuenfer; break; case 6 : iAnzahlsechser = iAnzahlsechser+1; cout<<"die Haufigkeit des Wuerfels 6 betraegt: " <<iAnzahlsechser; break; default : cout<<"falscher Wurf "; break; cout<<endl; } getch(); }
-
So muss der Code aussehen:
int main(int argc, char* argv[]) { int iWurf; int iZaehler; int iZahl=0; int iSumme=0; int iAnzahleinser=0, iAnzahlzweier=0, iAnzahldreier=0, iAnzahlvierer=0, iAnzahlfuenfer=0, iAnzahlsechser=0; for (iZaehler=1; iZaehler<20; iZaehler++) { iWurf = 1+(rand()%6); cout<<"\nDer " << iZaehler << ". Wurf : "<< iWurf << endl; cout<<endl; switch(iWurf) { case 1: iAnzahleinser++; break; case 2: iAnzahlzweier++; break; case 3: iAnzahldreier++; break; case 4: iAnzahlvierer++; break; case 5: iAnzahlfuenfer++; break; case 6: iAnzahlsechser++; break; default: cout<<"falsch"; } } cout<<endl; cout<<endl; cout<<endl; cout<<endl; cout<<"fuer Ueberpruefung der Haufigkeit der Zahlen waehlen Sie: 1, 2, 3, 4, 5 oder 6: \n" ; cin>>iZahl; cout<<endl; switch (iZahl) { case 1 : cout<<"die Haufigkeit des Wuerfels 1 betraegt: " <<iAnzahleinser; break; case 2 : iAnzahlzweier; cout<<"die Haufigkeit des Wuerfels 2 betraegt: " <<iAnzahlzweier; break; case 3 : iAnzahldreier; cout<<"die Haufigkeit des Wuerfels 3 betraegt: " <<iAnzahldreier; break; case 4 : iAnzahlvierer; cout<<"die Haufigkeit des Wuerfels 4 betraegt: " <<iAnzahlvierer; break; case 5 : iAnzahlfuenfer; cout<<"die Haufigkeit des Wuerfels 5 betraegt: " <<iAnzahlfuenfer; break; case 6 : iAnzahlsechser; cout<<"die Haufigkeit des Wuerfels 6 betraegt: " <<iAnzahlsechser; break; default : cout<<"falscher Wurf "; break; cout<<endl; } getch(); return 0; }