12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- //strc_ref.cpp -- using structure references
- #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);
- int main()
- {
- free_throws one = {"Ifelsa Branch", 13, 14};
- free_throws two = {"Andor Knott", 10, 16};
- free_throws three = {"Minnie Max", 7, 9};
- free_throws four = {"Whily Looper", 5, 9};
- free_throws five = {"Long Long", 6, 14};
- free_throws team = {"Throwgoods", 0, 0};
- free_throws dup;
- set_pc(one);
- display(one);
- accumulate(team, one);
- display(team);
- // use return value as argument
- display(accumulate(team, two));
- accumulate(accumulate(team, three), four);
- display(team);
- // use return value in assignment
- dup = accumulate(team,five);
- std::cout << "Displaying team:\n";
- display(team);
- std::cout << "Displaying dup after assignment:\n";
- display(dup);
- set_pc(four);
- // ill-advised assignment
- accumulate(dup,five) = four;
- std::cout << "Displaying dup after ill-advised assignment:\n";
- display(dup);
- // std::cin.get();
- return 0;
- }
- void display(const free_throws & ft)
- {
- using std::cout;
- cout << "Name: " << ft.name << '\n';
- cout << " Made: " << ft.made << '\t';
- cout << "Attempts: " << ft.attempts << '\t';
- cout << "Percent: " << ft.percent << '\n';
- }
- void set_pc(free_throws & ft)
- {
- if (ft.attempts != 0)
- ft.percent = 100.0f *float(ft.made)/float(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;
- }
|