网球记分员

Tennis Score Keeper

本文关键字:      更新时间:2023-10-16

我愿意在C++中编写一个网球比分管理员的代码来跟踪比分,但当我运行程序时会出现两个问题:

  1. 我不能用while(cin!="q")退出循环
  2. 函数不会初始化变量

    #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)

最后,你打开了一个整数,所以你的案例应该检查整数。

相关文章:
  • 没有找到相关文章