DR.DEATH
2002-07-31, 23:52:24
Also ich hab ein merkwuerdiges Problem mit meinem Sourcecode.
Nich lachen, der Code is simple und von nem Tutorial (aber alles abgeschrieben und bissel was geaendert) :).
Nun wenn ich das compiliere alles schoen und gut. Fuehre ich es dann aus dann fuert Case 1 bis 3 dann zur ersten IF Anweisung obwohl nichmal der pistolen Flag gesetzt wurde also die bool pistole kann ja bei Case 2 und 3 net auf True gesetzt werden.
Aender ich den oberen Codeteil zu bool pistole = false, hevmodul = false, akten = false; dann werden entsprechend den in Case gesetzten Flags auch die richtigen IF Anweisungen genommen.
Jeder kann mal den Code kompilieren und sehn das es so ist. Es ist mit VC++ 6 kompiliert.
Hat einer ne Idee wieso das so ist ?
#include <iostream.h>
void main()
{
int schublade;
bool pistole, hevmodul, akten;
char mitnehmen[1];
cout << "\nWelche Schublade moechten Sie oeffnen ?\n";
cout << "Schublade Nr.: ";
cin >> schublade;
cout << "\n";
switch(schublade){
case 1:
cout << "In dieser Schublade befinden sich ein paar Akten ueber Dr.Freeman!\n";
cout << "Mitnehmen ? (j/n):";
cin >> mitnehmen[1];
if (mitnehmen[1] == 'j')
{
akten = true;
cout << "...mitgenommen!\n\n";
}
break;
case 2:
cout << "In dieser Schublade liegt eine Pistole!\n";
cout << "Wem die wohl gehoert ?\n";
cout << "Mitnehmen ? (j/n):";
cin >> mitnehmen[1];
if (mitnehmen[1] == 'j')
{
pistole = true;
cout << "...mitgenommen!\n\n";
}
break;
case 3:
cout << "In dieser Schublade liegt ein Modul fuer den HEV Suit!\n";
cout << "Mitnehmen ? (j/n):";
cin >> mitnehmen[1];
if (mitnehmen[1] == 'j')
{
hevmodul = true;
cout << "...mitgenommen!\n\n";
}
break;
case 4:
cout << "In dieser Schublade ist nichts ausser ein bisschen Staub.\n";
cout << "Mitnehmen ? (j/n):";
cin >> mitnehmen[1];
if (mitnehmen[1] == 'j')
{
cout << "Das packe ich nicht an... da mache ich mich womoeglich noch dreckig!\n";
}
break;
default:
cout << "So viele Schubladen hat der Aktenschrank nicht!\n\n";
break;
};
cout << "Ploetzlich oeffnet sich die Tuer zum Buero und ein Soldat tritt ein!\n";
if (pistole == true)
cout << "Sie haben ihn mit der Pistole erschossen und konnten fliehen!\n";
else if (akten == true)
{
cout << "Als Sie sich nach den Akten gebueckt haben ging die abgefeuerte Patrone\n";
cout << "des Soldaten vorbei und Sie konnten entkommen!\n";
}
else if (hevmodul == true)
cout << "Sie haben das HEV Modul eingesetzt, dass Sie vor einschlagenden Schuessen schuetzt!\n";
else
cout << "Sie haben nichts um sich zu verteidigen und wurden erschossen!\n\nGAME OVER!\n";
}
Nich lachen, der Code is simple und von nem Tutorial (aber alles abgeschrieben und bissel was geaendert) :).
Nun wenn ich das compiliere alles schoen und gut. Fuehre ich es dann aus dann fuert Case 1 bis 3 dann zur ersten IF Anweisung obwohl nichmal der pistolen Flag gesetzt wurde also die bool pistole kann ja bei Case 2 und 3 net auf True gesetzt werden.
Aender ich den oberen Codeteil zu bool pistole = false, hevmodul = false, akten = false; dann werden entsprechend den in Case gesetzten Flags auch die richtigen IF Anweisungen genommen.
Jeder kann mal den Code kompilieren und sehn das es so ist. Es ist mit VC++ 6 kompiliert.
Hat einer ne Idee wieso das so ist ?
#include <iostream.h>
void main()
{
int schublade;
bool pistole, hevmodul, akten;
char mitnehmen[1];
cout << "\nWelche Schublade moechten Sie oeffnen ?\n";
cout << "Schublade Nr.: ";
cin >> schublade;
cout << "\n";
switch(schublade){
case 1:
cout << "In dieser Schublade befinden sich ein paar Akten ueber Dr.Freeman!\n";
cout << "Mitnehmen ? (j/n):";
cin >> mitnehmen[1];
if (mitnehmen[1] == 'j')
{
akten = true;
cout << "...mitgenommen!\n\n";
}
break;
case 2:
cout << "In dieser Schublade liegt eine Pistole!\n";
cout << "Wem die wohl gehoert ?\n";
cout << "Mitnehmen ? (j/n):";
cin >> mitnehmen[1];
if (mitnehmen[1] == 'j')
{
pistole = true;
cout << "...mitgenommen!\n\n";
}
break;
case 3:
cout << "In dieser Schublade liegt ein Modul fuer den HEV Suit!\n";
cout << "Mitnehmen ? (j/n):";
cin >> mitnehmen[1];
if (mitnehmen[1] == 'j')
{
hevmodul = true;
cout << "...mitgenommen!\n\n";
}
break;
case 4:
cout << "In dieser Schublade ist nichts ausser ein bisschen Staub.\n";
cout << "Mitnehmen ? (j/n):";
cin >> mitnehmen[1];
if (mitnehmen[1] == 'j')
{
cout << "Das packe ich nicht an... da mache ich mich womoeglich noch dreckig!\n";
}
break;
default:
cout << "So viele Schubladen hat der Aktenschrank nicht!\n\n";
break;
};
cout << "Ploetzlich oeffnet sich die Tuer zum Buero und ein Soldat tritt ein!\n";
if (pistole == true)
cout << "Sie haben ihn mit der Pistole erschossen und konnten fliehen!\n";
else if (akten == true)
{
cout << "Als Sie sich nach den Akten gebueckt haben ging die abgefeuerte Patrone\n";
cout << "des Soldaten vorbei und Sie konnten entkommen!\n";
}
else if (hevmodul == true)
cout << "Sie haben das HEV Modul eingesetzt, dass Sie vor einschlagenden Schuessen schuetzt!\n";
else
cout << "Sie haben nichts um sich zu verteidigen und wurden erschossen!\n\nGAME OVER!\n";
}