Schaut mal bitte die if in der while_schleife werden nicht abgearbeitet
-
#include <cstdlib>
#include <iostream>
#include <string>
#include <conio.h>
#include <ctime>using namespace std;
string name1, name2;
int zufallszahl, i, a;
int wuerfel1, wuerfel2, summeSpieler1, summeSpieler2;
char wuerfeln = 'j', wurf;int main()
{
system("color 9e");
while( wuerfeln == 'j')
{summeSpieler1 = 0;
summeSpieler2 = 0;
cout << "\n Bitte geben Sie den Spielernamen ein: \n\n\t" ;
cin >> name1;
cout << "\n Bitte geben Sie den Spielernamen ein: \n\n\t" ;
cin >> name2;
cout << endl;
// Zufallszahlen
// Zufallsgenerator initialisieren
srand( time(0) );//rand - random time(0) oder eine hohe Zahl
i=0;
while(i<3)
{cout <<"Runde : " << i+1 <<endl;
cout << "\n";cout <<"\t Zum wuerfeln bitte << w >> druecken" <<endl;
cout <<"\n\n\t";
wurf = getch();if (wurf == 'w')
{
wuerfel1 = rand() % 6+1;
cout << "\n\t" << name1 <<" hat eine " <<wuerfel1 <<" gewuerfelt" << endl;
cout << "\n\n";
summeSpieler1 = summeSpieler1 + wuerfel1;
wuerfel2 = rand() % 6+1;
cout << "\n\t" << name2 <<" hat eine " <<wuerfel2 <<" gewuerfelt" << endl;
cout << "\n\n";
summeSpieler2 = summeSpieler2 + wuerfel2;//cout << summeSpieler1 <<endl;
//cout << summeSpieler2 <<endl;
}
else if(i >= 3)
{if (summeSpieler1 < summeSpieler2)
{
cout << name2 <<" hat gewonnen \n\n";
cout << summeSpieler2;
}
if (summeSpieler1 > summeSpieler2)
{
cout << name1 <<" hat gewonnen \n\n";
cout << summeSpieler1;
}
if (summeSpieler1 == summeSpieler2)
{
cout << "Remis\n\n";
}
}
i++; // oder i=i+1;
}
}
system("PAUSE");}
Danke Uwe
-
Doch, die if-Anweisungen werden selbstverständlich abgearbeitet.
Wenn du Hilfe bei deinem Problem haben willst, solltest du es mal vernünftig beschreiben. Ich weiß nämlich nicht, was deiner Meinung nach nicht funktioniert. Und ich werde den Code nicht bis ins Kleinste durchtesten, nur weil du keine ordentliche Fehlerbeschreibung lieferst.
Hierzu auch etwas Lektüre:
http://www.c-plusplus.net/forum/200753Kleiner Tipp: falls du dich wunderst, dass immer die gleichen Zufallszahlen kommen, pack doch
srandeinfach mal an den Anfang des Programms und nicht in die Schleife.
-
und noch ein Tipp: Benutze cpp-Tags. So lässt sich der Code unmöglich überblicken, insbesondere da die Einrückung (die bei dir hoffentlich vorhanden ist) nicht erkennbar ist.
-
Tipp Nr. 3: wenn du eine Schleife hast, die solange läuft, wie i<3 ist, hat es wohl wenig Sinn, darin eine Verzweigung für i>=3 zu machen. Wann soll das bitte vorkommen? Du solltest deinen Ablauf mal ein wenig überdenken.
-
Ok das Problem ist folgendes wenn ich den Code compiliere dann macht das Programm alles bis auf das es die Auswertung in den drei if Anweisungen wo ich den Sieger versuche zu ermitteln nicht es spring sofort wieder auf den beginn und fragt nach geben sie den Namen des Spielers ein.
Ich hoffe die Beschreibung passt jetzt
Gruß Uwe
-
ob das möglicherweise etwas hiermit zu tun hat?
_matze schrieb:
Tipp Nr. 3: wenn du eine Schleife hast, die solange läuft, wie i<3 ist, hat es wohl wenig Sinn, darin eine Verzweigung für i>=3 zu machen. Wann soll das bitte vorkommen? Du solltest deinen Ablauf mal ein wenig überdenken.
-
Lies bitte immer alle Antworten aufmerksam. Ich habe dir im Grunde schon verraten, woran es scheitert. Aber gut, noch mal ausführlich:
Du lässt die while-Schleife für i==0 bis 0==2 laufen (i<3). Darin fragst du immer ab, ob der Benutzer 'w' gedrückt hat. Wenn er nicht 'w' gedrückt hat, fragst du ab, ob i>=3 ist. Erst in dem Fall würdest du den Sieger ausgeben.
1. Was der Benutzer machen, außer 'w' zu drücken? Du sagst ihm gar nicht, dass eine beliebige andere Eingabe eventuell etwas machen könnte. Das ist schon mal suboptimal.
2. Die Schleife läuft nur bis i==2. Es ist also völlig unmöglich, dass i>=3 jemals erfüllt wird. Verstehst du jetzt, warum der Sieger nie angezeigt wird?
3. Dieses Konstrukt
i=0; while(i<3) { ... i++; }kannst du auch anders formulieren. Genau für diesen Zweck gibt es das for-Statement:
for(int i=0;i<3;++i) { ... }Hast du die anderen Tipps beherzigt, die dir gegeben wurden? Zum Beispiel die Sache mit srand...
-
Ich hoffe ich hab das jetzt begriffen ich bin noch blutiger Anfänger und unsere Lehrerin an der Technikerschule konnte mir auch nicht weiterhelfen deswegen habe ich die Frage hier gepostet.
Gruß Uwe
-
@_Matze schrieb:
unsere Lehrerin an der Technikerschule konnte mir auch nicht weiterhelfen deswegen habe ich die Frage hier gepostet.
Habt ihr so wenige Interessenten für Heimarbeit dass die Lehrering vom Häkelkurs jetzt für C++-Fragen herhalten muss?

Wenn sie sowas nicht sieht sollte sie Ihre Fächerwahl nochmal überdenken...
-
@_Matze schrieb:
Ich hoffe ich hab das jetzt begriffen ich bin noch blutiger Anfänger und unsere Lehrerin an der Technikerschule konnte mir auch nicht weiterhelfen deswegen habe ich die Frage hier gepostet.
Gruß Uwe
Hast du das Programm denn jetzt angepasst? Geht es jetzt? Zeig ruhig mal her.
-
melde mich morgen wenn ich es angepasst habe
Gruß Uwe