网球记分员
Tennis Score Keeper
我愿意在C++中编写一个网球比分管理员的代码来跟踪比分,但当我运行程序时会出现两个问题:
- 我不能用while(cin!="q")退出循环
-
函数不会初始化变量
#include<iostream> #include<string> using namespace std; int points1=0, points2=0; int set1=0, set2=0; int games1=0, games2=0; string in=""; void score(int point,int set,int game); int main() { do { cout<<"POINTS: "<<points1<<":"<<points2<<endl<<"SETS: "<<set1<<":"<<set2<<endl<<"GAMES: "<<games1<<":"<<games2<<endl; cout<<"Who scored - player 1 or player 2? (p1/p2) : "; cin>>in; if(in=="p1") { void score(int points1,int set1,int games1); } else if(in=="p2") { void score(int points2,int set2,int games2); } else {cout<<endl<<"Error!"<<endl<<endl;} } while(cin!="q"); system("pause"); return 0; } void score(int& point,int& set,int& game){ if(set<5) { switch(point) { case '30': point=point+10; case '40': set++; point=0; default: point=point+15; } } else game++; }
while(cin!="q");
应该是
while(in!="q");
在你的函数中,你的开关是一个整数值,所以你的情况也应该使用一个整值:
case '30':
应该是
case 30:
其他人也一样。
这是一个功能原型:
void score(int points1,int set1,int games1);
这是一个函数调用:
score(points1,set1,games1);
确保在要执行函数的位置有函数调用。你有很多不属于它们的原型。
一些网球技巧:你需要领先两分才能赢得一盘,领先两盘才能赢得一场比赛。你可能想在你的职能中考虑到这一点。单个玩家的点数和盘数不足以决定谁赢得了一盘或一场比赛。
编辑:
此外,如果希望传递给函数的变量在该函数之外发生更改,则需要通过引用传递。
void score(int& points1, int& set1, int& games1);
记下与号。
将参数传递给函数将生成参数的[b]副本[/b]。这被称为传递值,因为该值是传递的。您可以通过引用传递,这意味着您不创建副本,而是传递实际变量的位置。对它的更改将反映回您的主程序中。
您想要一个带有break
的无限while
循环,也可以在函数调用中去掉类型defs,比如:
while (true) {
cin >> in;
if (in == "p1") {
score(points1, set1, games1);
}
else if (in == "p2") {
score(points2, set2, games2);
}
else if (in == "q") {
break;
} else {
cout << endl << "Error!" << endl << endl;
}
}
以下行错误:while(cin!="q");
您需要使用in!="q"
而不是cin
第二个问题是因为调用函数的方式不对。当你调用一个函数时,你只需要写它的名称并传递指定的参数,在调用它时不需要写函数的返回类型。此外,你也不需要指定传递的参数的类型。您的函数调用应该是:
score(points2, set2, games2)
最后,你打开了一个整数,所以你的案例应该检查整数。
相关文章:
- 没有找到相关文章