#include <string>
#include <vector>
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
class player
{
private:
string last_name;
string first_name;
vector <int> score;
public:
string get_last_name();
void set_last_name( string n_l_name);
string get_first_name();
void set_first_name ( string n_f_name);
vector <int> get_score();
void set_score ( vector <int> n_score);
};
string player::get_last_name()
{
return last_name;
}
void player::set_last_name( string n_l_name)
{
last_name = n_l_name;
}
string player::get_first_name()
{
return first_name;
}
void player::set_first_name( string n_f_name)
{
first_name = n_f_name;
}
vector <int> player::get_score()
{
return score;
}
void player::set_score( vector< int > n_score)
{
for ( int i=0; i< n_score.size() ;i++)
{
score.push_back( n_score[i]);
}
}
///////////////////////////////////////////////////////////
// BOOL FUNCTION THAT HELPS SORTING VECTOR OF PLAYERS./////
// RETURNS TRUE IF THE FIRST PLAYER'S ALPHABET IS EARLIER./
///////////////////////////////////////////////////////////
bool Isbigger_last_name( player p1, player p2 )
{
if ( p1.get_last_name() < p2.get_last_name())
{
return true;
}
else if ( p1.get_last_name() == p2.get_last_name())
{
if ( p1.get_first_name() < p2.get_first_name())
{
return true;
}
else
{
return false;
}
}
else {
return false;
}
}
//////////////////////////////////////////
// OUTPUT FUNCTION THAT OUTPUTS STUFF.////
//////////////////////////////////////////
void out_put_function( ofstream &out_file, vector<player> v1 )
{
int biggest_name = 0;
int temp_biggest_name;
// FIGURING OUT THE LONGEST NAME SO THAT I CAN ORGANIZE IT.
for ( int i=0; i < v1.size(); i++)
{
temp_biggest_name = v1[i].get_last_name().size() + v1[i].get_first_name().size();
if ( biggest_name <= temp_biggest_name)
{
biggest_name = temp_biggest_name;
}
}
for ( int i=0; i< biggest_name + 68; i++)
{
out_file << "-";
}
cout << v1[0].get_last_name() << " " << v1[0].get_score().size() << endl;
int apply_space;
out_file << endl;
out_file << "| ";
for (int i=0; i<v1.size();i++)
{
out_file << " " << v1[i].get_first_name() << " " << v1[i].get_last_name();
apply_space = biggest_name - v1[i].get_first_name().size() - v1[i].get_last_name().size();
for ( int i=0; i< apply_space; i++)
{
out_file << " ";
}
out_file << " | ";
for ( int j=0; j < v1[i].get_score().size(); j++)
{
for ( int k =0; k < 2; k++)
{
out_file << v1[i].get_score()[j] << " ";
j++;
}
j--;
}
}
}
int main( int argc, char* argv[])
{
//Intput the file using command line argv[1].
ifstream read_file(argv[1]);
if ( !read_file )
{
cerr << "Can't open " << argv[1] << " to read \n";
exit(1);
}
string temp_last_name;
string temp_first_name;
int temp_score;
vector < int > vec_temp_score;
vector < player > vec_players;
player temp_player;
while ( read_file >> temp_first_name >> temp_last_name )
{
for ( int i=0; i< 20;i++) // loop through the integers(scores) and read into the vector.
{
read_file >> temp_score;
vec_temp_score.push_back(temp_score);
}
temp_player.set_last_name( temp_last_name);
temp_player.set_first_name( temp_first_name);
temp_player.set_score( vec_temp_score);
vec_players.push_back(temp_player);
}
cout << vec_players[2].get_last_name() << vec_players[0].get_score().size() << endl;
sort( vec_players.begin(), vec_players.end(), Isbigger_last_name);
cout << vec_players[0].get_last_name() << vec_players[0].get_score().size() << endl;
//Out file the output using command line argv[2].
ofstream out_file(argv[2]);
if ( !out_file )
{
cerr << "Can't open " << argv[2] << " to read \n";
exit(1);
}
out_put_function ( out_file, vec_players );
}