C ++:一个加载函数,用于加载来自给定文本文件的竞争结果,通过修改两个团队的信息来分析每个竞争结果,如下所示:
o如果Team数组中不存在团队,请在Team数组中添加团队。
o如果团队已经存在,
通过
修改团队的数据
如果球队赢得比赛,将总胜利增加1;
如果球队失败,则将总损失增加1;
将团队得分与总分相加;
将对手队伍得分与总得分相加。
•排序功能,根据总胜利按降序对球队进行排序。如果总获胜时间相同,则比较总损失时间越少越好。如果总赢和总损失时间相同,则比较总得分与总得分的差异,越大越好。排序算法取决于你。
•打印功能打印出团队记录以进行筛选。
###############输出必须是这样的Input a basketball competition results' file name: results.txt
Shellharbour 10 0 471 100
Raptors 6 5 227 257
Bobcats 6 5 178 225
Spurs 6 6 275 270
MTSO Warriors 5 7 234 273
Mavericks 1 11 159 419
**和文本文件中的数据是: - **
Shellharbour:MTSO Warriors
50:21
Spurs:Bobcats
23:28
Raptors:Mavericks
37:12
Spurs:MTSO Warriors
20:12
Mavericks:Bobcats
20:26
Raptors:MTSO Warriors
16:26
Raptors:Shellharbour
9:50
Spurs:Mavericks
24:15
Bobcats:MTSO Warriors
21:12
Spurs:MTSO Warriors
17:26
Mavericks:Shellharbour
10:64
Raptors:Mavericks
32:14
Bobcats:Spurs
2:20
Mavericks:MTSO Warriors
8:48
Shellharbour:Bobcats
44:6
Raptors:Spurs
27:17
Mavericks:Bobcats
8:26
MTSO Warriors:Raptors
16:26
Spurs:Shellharbour
14:39
Mavericks:Spurs
20:53
Raptors:Shellharbour
9:30
MTSO Warriors:Bobcats
18:13
Raptors:Bobcats
16:13
Shellharbour:Mavericks
58:5
MTSO Warriors:Spurs
11:18
Mavericks:Raptors
18:22
Bobcats:Spurs
22:18
MTSO Warriors:Shellharbour
5:61
Spurs:Raptors
34:26
Mavericks:MTSO Warriors
16:12
Shellharbour:Bobcats
33:4
Bobcats:Mavericks
17:13
MTSO Warriors:Raptors
27:7
Shellharbour:Spurs
42:17
答案 0 :(得分:0)
解决方案取决于您允许使用的内容。既然您说可以使用std
,以下是一些可能对您有帮助的观察结果:
定义result
结构以保存两个团队的名称和分数。添加read
方法:
struct result_type
{
std::string n1, n2;
int s1, s2;
std::istream& read( std::istream& is )
{
// use getline...
return is;
}
};
我在输出示例中看到了五列。每列必须是结构中的字段。定义一个类来存储这些列。添加update
方法和write
方法:
struct team_type
{
std::string name;
int total_win;
// more fields...
void update( result_type& r )
{
// ...
}
std::ostream& write( std::ostream& os )
{
os << name;
// ...
return os;
}
};
团队必须存储在Team Name to Team Info map
中(您应该阅读std::map
,否则您将无法理解正在发生的事情。)
typedef std::map< std::string, team_type > team_name_to_team_type;
阅读结果并更新上面地图中存储的团队:
ifstream is( "input.txt" );
if ( !is )
return -1;
team_name_to_team_type teams;
result_type r;
while ( r.read( is ) )
{
teams[r.n1].update( r );
teams[r.n2].update( r );
}
完成阅读后,您应该将结果存储在Total Win to Team Info multimap
中(标准地图和多地图是自我排序的):
typedef std::multimap< int, team_type > total_win_to_team_type;
total_win_to_team_type sorted_teams;
for ( team_name_to_team_type::const_iterator i = teams.begin(); i != teams.end(); ++i )
sorted_teams[i->second.total_win] = *i;
并显示它:
for ( total_win_to_team_type::const_iterator i = sorted_teams.begin(); i != sorted_teams.end(); ++i )
i->second.write( std::cout );