Erraten der Zufallszahl funktioniert nicht
-
Ich kann mich täuschen...
Aber machen
if...else Anweisungennicht mehr Sinn, wenn man zwei Auswahlmöglichkeiten hat...if ... elsedrückt es doch ausentweder...oderbzw.wenn ... sonst...
-
silent_max schrieb:
Shade Of Mine ... bitte verstehe mich nicht falsch, aber wozu brauche ich das else, wenn es mit nur if - Anweisungen klappt??
Weil das der Programmlogik entspricht. Diese Logik ist nunmal "entweder-oder". Wenn sich die Möglichkeiten derart gegeneinander ausschließen, verwendet man "else". Optimierungsfetischisten würden jetzt die Performance erwähnen, die in diesem Fall aber vernachlässigt werden kann. Alle anderen spielen die Karte "Leserlichkeit/Verständnis". Wenn ich ein Stück Code verstehen will, dann überlege ich, in welchen Situationen der jeweilige Block durchlaufen wird. Da ist so ein "else" sehr hilfreich, insbesondere wenn die Bedingungen nicht ganz so offensichtlich sind, wie hier.
-
silent_max schrieb:
Aber machen
if...else Anweisungennicht mehr Sinn, wenn man zwei Auswahlmöglichkeiten hat...if ... elsedrückt es doch ausentweder...oderbzw.wenn ... sonst...Wenn es vor 11 Uhr ist, bin ich müde. Sonst - wenn es noch vor 13 Uhr ist - bin ich hungrig. Ansonsten freue ich mich auf den Feierabend.
-
Ja ok... werde ich beherzigen.
Aber nachdem das jetzt geklärt ist, kann ich mich jetzt wieder dem Thema Strings zuwenden...
-
silent_max schrieb:
Aber nachdem das jetzt geklärt ist, kann ich mich jetzt wieder dem Thema Strings zuwenden...
Funktioniert dein Programm denn jetzt so, wie es soll?
Was ist mit dieser Anforderung:
Die Überprüfung der Zufallszahl soll in einem Unterprogramm erfolgen. Das Unterprogramm liefert einen Enumwert zurück, der angibt ob die Zahl RICHTIG, ZU_GROSS oder ZU_KLEIN war.
-
Und was ist immer noch mit der unnützen Headerdatei zufallszahl.h und der darin deklarierten aber nirgendwo definierten/genutzten Funktion zufallszahl?
-
daddy_felix schrieb:
silent_max schrieb:
Aber nachdem das jetzt geklärt ist, kann ich mich jetzt wieder dem Thema Strings zuwenden...
Funktioniert dein Programm denn jetzt so, wie es soll?
Ja, habe ich jetzt schon zig Male ausprobiert...
Was ist mit dieser Anforderung:
Die Überprüfung der Zufallszahl soll in einem Unterprogramm erfolgen. Das Unterprogramm liefert einen Enumwert zurück, der angibt ob die Zahl RICHTIG, ZU_GROSS oder ZU_KLEIN war.
Das soll der Lehrer entscheiden...
-
[quote="silent_max"]Ja, habe ich jetzt schon zig Male ausprobiert...
Auch wenn du beim ersten mal die richtige Zahl eingibst?
Was hast du geändert?[quote="silent_max"]JDas soll der Lehrer entscheiden...
Mit einer 4 hat man bestanden. Bestanden ist gut. Gut ist 2.
-
silent_max schrieb:
daddy_felix schrieb:
Funktioniert dein Programm denn jetzt so, wie es soll?
Ja, habe ich jetzt schon zig Male ausprobiert...
Es wurde dir ein Fall genannt, in dem dein Programm nicht funktioniert, nämlich wenn beim ersten Versuch richtig geraten wird.
Was ist mit dieser Anforderung:
Die Überprüfung der Zufallszahl soll in einem Unterprogramm erfolgen. Das Unterprogramm liefert einen Enumwert zurück, der angibt ob die Zahl RICHTIG, ZU_GROSS oder ZU_KLEIN war.
Das soll der Lehrer entscheiden...[/quote]
Ich dachte, du willst etwas lernen. Du hast doch in den letzten Tagen in Threads geschrieben, wie fleißig und hartnäckig du lernst. Und jetzt ignorierst du einfach Teile der Aufgabenstellung? Das passt nicht zusammen.Auf die falschen Includes bist du bereits mehrfach hingewiesen worden. Bitte noch einmal nachlesen. Außerdem sind deine Kommentare falsch.
rand()erzeugt keine Zufallszahl zwischen 2^0 und 2^15, sondern eher zwischen 2^0 - 1 und 2^15 - 1. der %-Operator ist nicht dazu da, Kommazahlen zu vermeiden, bitte auch hier noch einmal die Bedeutung nachschlagen.
-
-
[quote="DirkB"][quote="silent_max"]Ja, habe ich jetzt schon zig Male ausprobiert...
Auch wenn du beim ersten mal die richtige Zahl eingibst?
Was hast du geändert?Also ich habe in einer zweiten CPP Datei "Überprüfen" folgenden Code geschrieben:
#include <iostream> using namespace std; int main() { int einlesen, zahl; enum {RICHTIG, ZU_GROSS, ZU_KLEIN}; if(einlesen<zahl) { cout << "ZU_KLEIN"; } if(einlesen == zahl) { cout << "RICHTIG"; } if(einlesen > zahl) { cout << "ZU_GROSS"; } return 0; }Nun hat sich bei mir die Frage eingeschlichen, wie ich diesen Code in die bereits bestehende CPP Datei mit einbinde??
-
copy & paste
-
Hier einmal der gesamte Quellcode:
#include <ctime> //Header-Datei für time bei srand #include <cstdlib> //Header-Datei für rand und srand #include <iostream> //Header-Datei für "cin" und "cout" using namespace std; int main(void) { int zahl, einlesen; //Variablen "Zahl" und "Einlesen" als Integer(da Zahlen) deklarieren int versuche; //Versuche ist auch Integer da die Versuche gezählt werden srand((unsigned)time(NULL)); zahl=rand(); //Zahl über Zufallsgenerator erzeugt zahl=zahl%1000+1; //"rand() erzeugt eine Zufallszahl zwischen 2^0 und 2^15, deswegen //%1000+1; %=Modulo -> keine Kommazahlen; 0 bis 1000 cout<<"Zufallszahl zwischen 1 und 1000 eingeben"; cin>>einlesen; for(versuche=0; zahl!=einlesen; versuche++) //Versuche muss mit =0 initialisiert werden { if( einlesen<zahl) { cout<<"Eingebene Zahl ist zu klein!\n"; cout<<"Erneute eingabe\n"; cin>> einlesen; } else if (einlesen>zahl) { cout<<"Eingebene Zahl ist zu gross!\n"; cout<<"Erneute eingabe!\n"; cin>> einlesen; } if(einlesen==zahl) { if(versuche<10) { cout<<"Weniger als 10 Versuche, Glueck gehabt\n"; cout<<"Anzahl der Versuche:\n\n"<<versuche<<endl; } if(versuche==10) { cout<<"Prima, 10 Versuche, sie sind ueberlegt an das Problem herangegangen\n"; } cout<<"Anzahl der Versuche:\n\n"<<versuche<<endl; if(versuche>10) { cout<<"Mehr als 10 Versuche, sie haben mehr oder weniger im Nebel gestochert\n"; cout<<"Anzahl der Versuche:\n"<<versuche<<endl; } } } enum {RICHTIG, ZU_GROSS, ZU_KLEIN}; if(einlesen<zahl) { cout << "ZU_KLEIN"; } if(einlesen == zahl) { cout << "RICHTIG"; } if(einlesen > zahl) { cout << "ZU_GROSS"; } return 0; }Er funktioniert zumindest bei mir noch nicht ganz... Ich weiß nicht, wie ich "ZU_GROSS", "ZU_KLEIN" und "RICHTIG" einbauen soll, damit das eingebungen wird...
Sollte ich dazu eine Funktion schreiben??
-
silent_max schrieb:
Er funktioniert zumindest bei mir...

Das hat mit der Aufgabenstellung nichts zu tun.Du hast vergessen dein Hirn zu benutzen.
-
noch nie mit Enumerationen gearbeitet?
weil so ist die nutzung falsch.
hat da nicht jemand en guten link?
-
DirkB schrieb:
silent_max schrieb:
Er funktioniert zumindest bei mir...

Das hat mit der Aufgabenstellung nichts zu tun.Du hast vergessen dein Hirn zu benutzen.
Ich habe nur den Quellcode gepostet, bevor ich mein Hirn eingeschaltet habe.
Ich hoffe, dass folgender Code jetzt passt:
#include <ctime> //Header-Datei für time bei srand #include <cstdlib> //Header-Datei für rand und srand #include <iostream> //Header-Datei für "cin" und "cout" using namespace std; enum {RICHTIG, ZU_GROSS, ZU_KLEIN}; int main(void) { int zahl, einlesen; //Variablen "Zahl" und "Einlesen" als Integer(da Zahlen) deklarieren int versuche; //Versuche ist auch Integer da die Versuche gezählt werden srand((unsigned)time(NULL)); zahl=rand(); //Zahl über Zufallsgenerator erzeugt zahl=zahl%1000+1; //"rand() erzeugt eine Zufallszahl zwischen 2^0 und 2^15, deswegen //%1000+1; %=Modulo -> keine Kommazahlen; 0 bis 1000 cout<<"Zufallszahl zwischen 1 und 1000 eingeben"; cin>>einlesen; for(versuche=0; zahl!=einlesen; versuche++) //Versuche muss mit =0 initialisiert werden { if( einlesen<zahl) { cout<<"Eingebene Zahl ist zu klein!\n"; cout << "ZU_KLEIN\n"; cout<<"Erneute eingabe\n"; cin>> einlesen; } else if (einlesen>zahl) { cout<<"Eingebene Zahl ist zu gross!\n"; cout << "ZU_GROSS\n"; cout<<"Erneute eingabe!\n"; cin>> einlesen; } if(einlesen==zahl) { cout << "RICHTIG\n"; if(versuche<10) { cout<<"Weniger als 10 Versuche, Glueck gehabt\n"; cout<<"Anzahl der Versuche:\n\n"<<versuche<<endl; } if(versuche==10) { cout<<"Prima, 10 Versuche, sie sind ueberlegt an das Problem herangegangen\n"; } cout<<"Anzahl der Versuche:\n\n"<<versuche<<endl; if(versuche>10) { cout<<"Mehr als 10 Versuche, sie haben mehr oder weniger im Nebel gestochert\n"; cout<<"Anzahl der Versuche:\n"<<versuche<<endl; } } } return 0; }
-
Was passiert wenn du Zeile 6 löschst?
Glaubst du wirklich du hast die enums benutz, oder nur dahingeschrieben?
-
Skym0sh0 schrieb:
... hat da nicht jemand en guten link?
Ich habe da gerade einen gesehen. Dunkelblau Schrift auf hellblauen Hintergrund.
-
silent_max schrieb:
Ich hoffe, dass folgender Code jetzt passt:
Nein, ist an der Aufgabenstellung vorbei.
-
Skym0sh0 schrieb:
Nein, ist an der Aufgabenstellung vorbei.
Wie würdest Du denn das mit dem Enum machen??