Problem mit Visual Basis+Wartebefehl+(?) Randomzahl
-
ich glaube was otze dir sagen wollte ist das du die srand() falsch verwendet/verstanden hast
... siehe auch die links ^^
und du meintest ja uch das verbesserungen gut wären ... das hat er durch die for schleife gemacht ... nicht ständig if ^^ ind [] bedeutet nen array
also nen int array ... also in zahl stehen viele int ... ansprechen kannste die über zahl[0] zahl[1] zahl[2] usw. also hier hast du int zahl[11] also 11 int oder ???
-
devil81 schrieb:
Das Feststellen welche Zahl gezogen wurde, könnte man
in einen switch packen, anstatt 10 if-Zweige aufzumachen.Oder ein Array und darin die Zufallszahl als Index nehmen...
-
otze schrieb:
#include <windows.h>//für time
Wat is los? Wie wärs denn mit <ctime>?
-
Ich habe mal noch eine Bitte: Ein belibieges Beispiel, dass eine beliebe Ganzzahl per Zufall ausgibt. Und Bitte ohne das drum herum, als Anfäönger verliert man dann unglaublich schnell die übersicht
Für das random muss ich doch stdlib.h includieren? Wie genau heißt dann dwer Befehl: Überschreibe die Variable a mit einer beliebigen ganz zahl?
Ich nehme es auch etwas höher (schwieriger), nur dann erklärt bitte eure einzelnen Schritte!
was h eißt eigentlich in otze's Aussage:
int main(){
int zahlen[11];
for(int i=0;i<11;++i){
zahlen[i]=0;
Zahlen[i]=0? Was macht diese Zeile?
und was heißt srand(time(NULL)); ? Wird hier irgendetwas mit 0 miltiplieziert oder was hat diees Wort zu bedeuten?
Wiesofolgt eigentlich nach rand()eine leere Klammer?
Und dann noch danke für den Rest und das, was noch kommt!
-
#include <iostream> // für srand und cout #include <time.h> // für time using namespace std; int main() { // initialisieren des Zufallszahlen-Generators srand( time( NULL )); // von 0-4 mal die Schleife durchlaufen for( int i = 0; i < 5; ++i ) cout << rand() % 11 << endl; // Zufallszahl 0-10 return 0; }
-
Ist es denn zu fassen? Mein Compiler muckt immernoch auf! Jetzt habe ich extra schon ein anderes Programm und bekomme jedesmal beim Kompilieren: "ein Fehler, null Wahrnungen", nur er kann mir nicht sagen, wo im quellcode der fehler liegt! Wer hat auch sdchon mal solche Problem gehabt?
Kurze Korrektur: Aus irgendeinem unverständlichen Grundläuft das jetzt, das heißt, den sleep Befehl (ganz unten) will er nicht akzeptieren! Muss ich da irgendeine zusätzliche Datei includieren?
hier noch mal der Qellcode (Wenn ich die Arrys versatnden habe, werfe ich die ganzen if-Bedinguntgen raus!)#include <iostream> #include <windows.h> #include <ctime> #include <cstdlib> using namespace std; int randomzahl; int zehn=0; int neun=0; int acht=0; int sieben=0; int sechs=0; int fuenf=0; int vier=0; int drei=0; int zwei=0; int eins=0; void main() { srand(time(NULL)); while(true) //endlosschleifee { randomzahl=rand()%11; if(randomzahl==10) zehn=zehn+1; //angabe der häufigkeit else ; if(randomzahl==9) neun=neun+1; else ; if(randomzahl==8) acht=acht+1; else ; if(randomzahl==7) sieben=sieben+1; else ; if(randomzahl==6) sechs=sechs+1; else ; if(randomzahl==5) fuenf=fuenf+1; else ; if(randomzahl==4) vier=vier+1; else ; if(randomzahl==3) drei=drei+1; else ; if(randomzahl==2) zwei=zwei+1; else ; if(randomzahl==1) eins=eins+1; else ; cout<<"10"<<zehn<<endl; cout<<"9"<<neun<<endl; cout<<"8"<<acht<<endl; cout<<"7"<<sieben<<endl; cout<<"6"<<sechs<<endl; cout<<"5"<<fuenf<<endl; cout<<"4"<<zehn<<endl; cout<<"3"<<drei<<endl; cout<<"2"<<zwei<<endl; cout<<"1"<<eins<<endl; //sleep(1000); } };
-
Da ist so das ein oder andere Problem in dem Code. Aber was der Compiler dran aussetzt ist mir nicht 100% klar... vielleicht kann uns hier die Fehlermeldung helfen?
Bau mal Deine includes um:
#include <iostream> #include <cstdlib> #include <ctime> using namespace std;
Sollte für den Moment vollständig genügen. Alles andere kannst Du Dir getrost sparen. Und ja: die .h habe ich absichtlich "vergessen", die gehören da nämlich nicht hin.
Weiters solltest Du die Signatur von main auf
int main() { // Code }
ändern. Damit wärst Du schonmal ein Stück weiter.
Beim if in den Bedingungen führst Du keinen Vergleich durch, sondern eine Zuweisung. Vergleichen geht mit ==.
diese ganzenelse ;
kannste eh wegkicken, die machen nichts und if geht auch ohne else-Zweig.
Achja, Du mußt den Zufallsgenerator nur einmal initialisieren. Das in der Schleife immer wieder zu tun macht die Zufallszahlen nicht etwa besser sondern im gegensatz sogar viel viel Schlechter. Das geht hiert vermutlich sogar so weit, daß immer die gleiche Zahl generiert wird.
Einfach ganz am Anfang des Programms einmal:
srand(time(0));
und das ist erledigt.
Danach einfach immer nur rand verwenden.MfG Jester
-
Danke erstmal, das war super! Perfekt auf meine Suchanfrage geantwortet!!!
Kannst ihr mir den Unterschied ziwschen void main() und int main() erklären?
Ich dachte, wenn ich das If nicht "beende", werden Bedingungen in Bedingeungen reingeschriebn, wie z.B.: Wenn randomzahl==10, dann... wenn randomzahl==10 und randomzahl==9, dann... würde das nicht so ohne ein else aussahen?Wie hat nun eigentlich ein SLEEP Befehl auszusehen
Also, ich hab edas Programm nun etliche Male nachbearbeitet (z.B. if(zahl==wert),... und wenn ich den sleepbefehl weglasse, läuft es auch, aber die ersten werte, die mir schin beim ersten Durchlauf angegeben werden, heißen 678, 573, 471,...
Pro durchgang wird doch nur eine Zahl aufgerufen, das heißt, im ersten Durchgang kann nur eine der zehn Zahlen einmal aufgerzufen worden sein, somit müssten alle bis auf eine eine Null haben, weil sie im ersten Durchgang nicht aufgerufen wurden....
Ich versteh das nicht......, wieso kommen dann solche rießigen Zahlenwerte raus?
Den Quellcode findet ihr oben nochmal, den bessere ich noch auf!Ich wage zu behaupten, dass der ModuleOperator nicht funktioniert!
-
Unterschied ziwschen void main() und int main()
void main ist seit ca 6 jahren falsch, und wurde durch int main ersetzt
-
ich glaube mich zu erinnern, daß void main noch nie richtig war.
Kannst Du den überarbeiteten Code nochmal posten? Hast Du vielleicht vergessen die Zählvariablen mit 0 zu initialisieren?
MfG Jester
-
Mr.Marcus schrieb:
Wie hat nun eigentlich ein SLEEP Befehl auszusehen
#include <windows.h> //... Sleep(1000); // Gross-/Kleinschreibung beachten!
Sleep gehört aber nicht zum Standard und ist Windows-spezifisch.
-
otze schrieb:
Unterschied ziwschen void main() und int main()
void main ist seit ca 6 jahren falsch, und wurde durch int main ersetzt
IMHO ist es eine falsches Geruecht, dass 'void main' je korrekt war. Nur mittler-
weile mekern die Compiler, frueher eben nicht. Und im C-Draft wird ausschliesslich
von 'int main' geredet, ich denke nicht, dass das im C-Standard geaendert wurde.mfg
v R