我知道有多种方法可以为“岩石,纸张,剪刀”游戏编写代码。但是我尝试根据我的C ++基本知识编写以下代码。
using std::cin;
using std::cout;
using std::endl;
int main(int argc, char** argv) {
enum object {rock, paper, scissors}
object player1, player2;
cout <<"Enter two objetcs (objects include rock, paper or scissors):";
cin >>player1 >> player2;
if (player1==player2) cout <<"objects are equal";
else if (player1==rock && player2=paper cout << "player 2 is the winner";
else if (player1==rock && player2=scissors cout<<"player 1 is the winner";
else if (player1==paper && player2=rock) cout << "player 1 is the winner";
else if (player1==paper && player2=scissors) cout <<"Palyer 2 is the winnder";
else if (player1==scissors && player2=paper) cout << "Player 1 is winner";
else cout <<"Player 2 is the winner";
}
编译器(Dev-C++)
在cin >>player1 >> player2;
行发现错误,并解释了"In Function 'int main(int, char**): [error] expected initializer before 'player1'"
。我没有得到这个警告的意思。我如何在不对其结构进行太多更改的情况下改进此代码?
答案 0 :(得分:3)
enum object {rock, paper, scissors}
缺少分号(;)
答案 1 :(得分:0)
由于输入和枚举类型之间没有映射,因此实际上只能确定直接相等,否则将触发最后的else语句。下面,我用一种解决方案修改了您的代码,该解决方案接受def mangle(s):
return s.strip()[1:-1]
input_filenames = ["test.json", "test1.json"]
with file("result.json", "w") as outfile:
first = True
for infile_name in input_filenames:
with file(infile_name) as infile:
if first:
outfile.write('[')
first = False
else:
outfile.write(',')
outfile.write(mangle(infile.read()))
outfile.write(']')
给出的char
值,然后使用枚举值设置对象。您还会遇到一些错字,其中缺少括号,分号和等号,因此请通读并注意差异。这不仅可以解决编译器错误,而且可以使您的代码按预期运行。
cin
理解类型以及在原始代码中如何确定输入对应于对象枚举的方式非常重要。