7-1 2018final世界杯也疯狂之球队积分计算(20 分)

这篇博客介绍了一个世界杯球队积分系统的实现,包括球队类的设计,其中包含队名、比赛记录和积分等属性。文章重点讲解了如何根据比赛比分计算积分和净胜球,并提醒读者注意输入数据的处理方式,特别是连续输入直到遇到停止标志的情况。通过实例展示了正确的输入输出格式和处理错误的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是一个世界杯赛场,有球队类,其中,队名、记录每场比分的数组、累计积分 是其三个私有数据成员;有两个成员函数,分别是根据各场比分计算累计积分、以及计算净胜球总和。请添加适当的构造函数。 积分计算规则是:胜者得三分,负者不得分,打平双方各得一分。

输入格式:

输入仅一行,表示这个球队信息,分别是 1或2(1表示该队是主队,2表示该队是客队)、若干场比分(主队进球数:客队进球数,场数小于20)。每项信息间以空格隔开。

输出格式:

输出一行,分别是该队的累计积分和净胜球数,两项信息间以空格隔开。

输入样例:

在这里给出一组输入。例如:

1 3:5 5:0 2:2 3:7

输出样例:

在这里给出相应的输出。例如:

4 -1


本题是我们的期末考试题,唯一的难点是输入数据的提取。

错误示例:
int main() 
{
	int ty;cin>>ty;int score = 0,win = 0;
    int x,y;string s;
    getline(cin,s);
    int num = s.size()/4;
	switch (ty)
	{
		case 1:
		{
			for(int i=1;i<s.size();i += 4)
			{
				x = s[i] - '0';
				y = s[i+2] - '0';
				if(x>y){score+=3;win++;}
				if(x==y){score++;}
				if(x<y){win--;}
			}
			cout<<score<<" "<<win;
			break;
		}
		case 2:
		{
			for(int i=1;i<s.size();i += 4)
			{
				x = s[i] - '0';
				y = s[i+2] - '0';
				if(y>x){score+=3;win++;}
				if(x==y){score++;}
				if(y<x){win--;}
			}
			cout<<score<<" "<<win;
			break;
		}
	}
	
	return 0;
}
错因:误以为按回车结束输入,然而题目的意思是持续(文件)输入,读到停止标志才结束。


正确示例:
#include <iostream>
#include <string>
using namespace std;

int main()
{
	int ty;cin>>ty;
	int score = 0,win = 0;
	char x,y,b;
    while(cin>>x>>b>>y)//用while(scanf("%d:%d",&x,&y)!=EOF)可能更妥当一点
    {
    	//cout<<"x="<<x<<" b="<<b<<" y="<<y<<endl;
        if(ty==1)
        {
            if(x>y){score+=3;win++;}
            else if(x==y){score++;}
            else if(x<y){win--;}
        }
        if(ty==2)
        {
            if(y>x){score+=3;win++;}
            else if(x==y){score++;}
            else if(y<x){win--;}
        }
        //cout<<score<<" "<<win<<endl;
    }
    cout<<score<<" "<<win;

	return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值