源程序:
#include <iostream>
#include <string>
struct free_throws
{
std::string name;
int made;
int attempts;
float percent;
};
void display(const free_throws &ft);
void set_pc(free_throws &ft);
free_throws & accumulate(free_throws
&target,const free_throws &source);
//void initialStruct();
int main()
{
free_throws one = {"no.1",13,14,0};
free_throws two = {"no.2",13,14,0};
free_throws three = {"no.3",13,14,0};
free_throws four = {"no.4",13,14,0};
free_throws five = {"no.5",13,14,0};
free_throws team = {"team",13,14,0};
free_throws dup;
set_pc(one);
display(one);
accumulate(team,one);
display(team);
display(accumulate(team,two));
accumulate(accumulate(team,three),four);
dup = accumulate(team,five);
std::cout <<"Display team : \n";
display(team);
std::cout << "Displaying dup
after assignment \n";
display(dup);
set_pc(four);
accumulate(dup,five) = four;
std::cout << "Displaying dup
after ill-advised assignment \n";
display(dup);
return 0;
}
void display(const free_throws &ft)
{
using std::cout;
cout << "Name : " << ft.name;
cout << "Made : " << ft.made;
cout << "Attempts : " << ft.attempts;
cout << "Percent : " << ft.percent;
}
void set_pc(free_throws &ft)
{
if(ft.attempts != 0)
{
ft.percent = 100.0f *
float(ft.made) / (ft.attempts);
}
else
ft.percent = 0;
}
free_throws & accumulate(free_throws
&target, const free_throws &source)
{
target.attempts += source.attempts;
target.made += source.made;
set_pc(target);
return target;
}