我的问题是关于我写的一个小C ++程序(类似于Zork)。我对编码很新,所以如果我的问题没有任何意义,不要怪我。这就是代码:< / p>
#include <iostream>
using namespace std;
int main()
{
cout << "Du befindest dich in einem dunklem Wald,um dich herum ist es dunkel.\n Vor dir liegt eine Fakel.\n Gebe 1 und Enter ein um die Fakel an dich zu nehmen \n oder 2 und Enter um sie in Ruhe zu lassen \n" ;
int Entscheidung;
cin>> Entscheidung;
switch (Entscheidung) {
case 1:
cout <<"Du zündest die Fakel an,deine Umgeben ist nun sichtbar \n";
break;
case 2:
cout <<"Du lässt die Fakel liegen,um dich herum bleibt es Dunkel \n";
break;
}
if (Entscheidung==1) {
cout << "Vor dir steht ein Elf,er scheint friedlich \n Gebe 1 ein um ihn anzusprechen oder 2 um ihn Anzugreifen \n";
}
if(Entscheidung==2){
cout<< "Du hörst Schritte im dunkeln. \n Gebe 1 ein um die Fakel zu nehmen und den Geräuschen auf den Grund zu gehen \n oder 2 um dich von den Geräuschen weg zu bewegen \n";
}
int Entscheidung2;
switch (Entscheidung2) {
case 1:
cout <<"Du redest mit dem Elfen.Er versucht dich anzugreifen \n";
break;
}
return 0;
}
我的问题是,如果我运行程序,我只能输入一个变量然后 按任意键继续显示,从那时起,我不能放任何新东西,因为它只是关闭。希望有人可以帮助我。 Thx提前
PS:我使用Code :: Blocks作为IDE和编译器
答案 0 :(得分:1)
您的逻辑没问题,但您忘记阅读变量Entscheidung2
;
问题是您确实声明了变量 Entscheidung2 ,但从未初始化/读取,因此条件
switch (Entscheidung2) {
case 1:
cout <<"Du redest mit dem Elfen.Er versucht dich anzugreifen \n";
break;
}
从未被执行过......
在声明变量之后添加cin>> Entscheidung2;
。
一切都会奏效:
答案 1 :(得分:1)
int Entscheidung2; switch (Entscheidung2) {
这是未定义的行为。 Entscheidung2
既未初始化也未设定;你不能试图阅读它的价值,但那是你在switch
陈述中所做的。
具有足够高的警告级别,您可以使编译器检测到此类错误。此类警告的示例:
warning: 'Entscheidung2' is used uninitialized in this function
warning C4700: uninitialized local variable 'Entscheidung2' used
显然,目的是在使用之前将值读入Entscheidung2
:
int Entscheidung2;
cin >> Entscheidung2;
switch (Entscheidung2) {
这将删除未定义的行为并匹配假定的意图。
按任意键继续显示
这与您的计划无关。它是来自运行程序的环境的消息。
我使用Code :: Blocks作为IDE和编译器
没有。 &#34;代码::块&#34;不是编译器。
请不要使用非英语标识符。对于不会说德语的人,&#34; Entscheidung&#34;读起来就像一个完全随机的一系列字符,并且发布带有无法识别标识符的代码并不友好。
答案 2 :(得分:0)
首先,你甚至不需要if功能。使用案例进行比较就足够了。否则你会将变量与1和2进行两次比较,这没有任何意义。然后你也应该通过 cin 从控制台获得输入,这在下面的答案中已经提到了。
#include <iostream>
using namespace std;
int main()
{
cout << "Du befindest dich in einem dunklem Wald,um dich herum ises dunkel.\n Vor dir liegt eine Fakel.\n Gebe 1 und Enter ein um die Fakel an dich zu nehmen \n oder 2 und Enter um sie in Ruhe zu lassen \n" ;
int Entscheidung;
cin>> Entscheidung;
switch (Entscheidung) {
case 1:
cout <<"Du zündest die Fakel an,deine Umgeben ist nun sichtbar \n";
cout << "Vor dir steht ein Elf,er scheint friedlich \n Gebe 1 ein um ihn anzusprechen oder 2 um ihn Anzugreifen \n";
break;
case 2:
cout <<"Du lässt die Fakel liegen,um dich herum bleibt es Dunkel \n";
cout<< "Du hörst Schritte im dunkeln. \n Gebe 1 ein um die Fakel zu nehmen und den Geräuschen auf den Grund zu gehen \n oder 2 um dich von den Geräuschen weg zu bewegen \n";
break;
}
int Entscheidung2;
cin>>Entscheidung2;
switch (Entscheidung2) {
case 1:
cout <<"Du redest mit dem Elfen.Er versucht dich anzugreifen \n";
break;
}
return 0;
}