CSCI-1200 Data Structures — Fall 2020 Homework 2 — Tennis Classes In this assignment you will practice using C++ classes as you parse and compute statistics from the results of Grand Slam tennis...

1 answer below »
DS HW2


CSCI-1200 Data Structures — Fall 2020 Homework 2 — Tennis Classes In this assignment you will practice using C++ classes as you parse and compute statistics from the results of Grand Slam tennis championships (the Australian Open, the French Open, Wimbledon, and the U.S. Open). Please carefully read the entire assignment before beginning your implementation. Here’s a crash course in tennis scoring: A match between two players consists of a number of sets. For men’s Grand Slam events, the first player to win three sets is the winner of the match (a.k.a., the best of five). Each set in the match consists of a number of games. The first player to win six games is the winner of the set, but the player must win by two games. If the set score gets to 6-5 (or 5-6), the players play a twelfth game. If the set score is 7-5 (or 5-7), the set is over. If the players are tied at 6-6 they play a special game called a tiebreak and the winner of the tiebreak wins the set, 7-6 (or 6-7). At the Australian Open, French Open, and Wimbledon, there is a special exception and in the fifth set they do not play a tiebreak. They just keep playing regular games until one player is ahead by two games (resulting in some fantastic 5 hour matches!) More details on the tennis scoring system are available here: http: //en.wikipedia.org/wiki/Tennis_scoring_system. As an example of the input format, here is the result of the men’s final at the 2015 Australian Open: Novak Djokovic d. Andy Murray 7-6 6-7 6-3 6-0 In this match, player Novak Djokovic defeated player Andy Murray in a four set match. Djokovic won the first set (which went to a tiebreak). Murray won the second set (also a tiebreak). In the third set Murray only won three games, and in the last set Murray did not with any games. File I/O and Command Line Arguments Your program will run with three command-line arguments. The first is the input file containing the match information. The second is the output file where you will write the computed statistics. The third argument will indicate which data table should be printed. Valid options for the third argument are: --match_stats, --game_stats, or --custom_stats. For example, here is a valid command line to your program: ./tennis_statistics.out sample_scores.txt sample_scores_out.txt --match_stats We provide a variety of small and large input files, and sample output for some of these input files. The input data was originally downloaded from http://stevegtennis.com/, but the format has been modified to simplify your work to parse the input. Each match is listed on a separate line. The winner is always listed first. Each player has a first name and a last name (two strings). The special string “d.” is placed between the two names. Each set is a string concatenating the number of games the first player won with the number of games the second player won, with the character “-” between. Statistics Collected and Output When --match_stats is specified, your program should create a table with the players ordered by the percentage of matches they won. Alphabetize players by last name, then first name if they are tied. Each row of the table should include the player, the number of matches won, the number of matches lost and the percentage of matches won. You should do a little bit of nice formatting to this output (see the example code from lecture and look at STL iomanip library references). http://en.wikipedia.org/wiki/Tennis_scoring_system http://en.wikipedia.org/wiki/Tennis_scoring_system http://stevegtennis.com/ For example, given an input file with these matches: Marcos Baghdatis d. Radek Stepanek 6-4 6-3 3-6 0-6 7-5 David Nalbandian d. Danai Udomchoke 6-2 6-2 1-6 6-7 6-1 Marcos Baghdatis d. Ivan Ljubicic 6-4 6-2 4-6 3-6 6-3 Marcos Baghdatis d. David Nalbandian 3-6 5-7 6-3 6-4 6-4 Your program will produce this table: MATCH STATISTICS Player W L percentage Marcos Baghdatis 3 0 1.000 David Nalbandian 1 1 0.500 Ivan Ljubicic 0 1 0.000 Radek Stepanek 0 1 0.000 Danai Udomchoke 0 1 0.000 When --game_stats is specified, your program should create a table with the players ordered by the percentage of games they won. Again alphabetize players by last name, then first name if they are tied. As in the first part, each row lists the player, the number of games won, the number of games lost and the percentage of games won. Here’s the output for the data above: GAME STATISTICS Player W L percentage David Nalbandian 49 44 0.527 Radek Stepanek 24 22 0.522 Marcos Baghdatis 73 69 0.514 Ivan Ljubicic 21 25 0.457 Danai Udomchoke 18 25 0.419 Finally when the --custom_stats option is specified, it is a chance for you to be creative. You will collect and output some other statistic from the matches. For example, you could identify which sets went to a tiebreak, and sort the players by performance in these tiebreak sets. Another example would be to find all the matches where the ultimate winner lost the first set and output the players who most often “come from behind to win”. Extra credit will be awarded to particularly interesting statistics that require clever programming. An important task for this part of the assignment is to write a concise description (∼ 100-200 words) of your new statistic. Put this description in your README.txt along with any other notes for the grader. Be sure to tell the grader which dataset best demonstrates your new statistic. You may create your own dataset and include it and your program’s output for that test case with your submission. Include interesting sample output from your custom statistic with your submission. Useful Code To control the formatting of your tables, you’ll want to read up on the various iomanipulators: std::setw(int), std::setprecision(int), and std::fixed. And don’t forget about the sort function that can be used to order the contents of a vector. To help you parse a string from the input file that represents a set, we provide the following code to get you started: 2 // Parses a string that represents a set (i.e., "6-3") by breaking the // string into two substrings and converting those strings to // integers, which are returned via call-by-reference parameters void parse_set(std::string &set, int &games_won, int &games_lost) { int i = set.find('-'); games_won = std::stoi(set.substr(0,i).c_str()); games_lost = std::stoi(set.substr(i+1,set.size()-i-1).c_str()); } With the code above and the >> input stream function for strings used in lecture you can implement all of the parsing necessary for this assignment. Hint: By looking at the results of the first 3 sets, you can determine whether a 4th set was played and you should read in another set or whether the match was over after 3 sets and next string contained in the file is part of the next match. In fact, your code should not care or depend on the presence or location of newlines (or extra newlines or other whitespace) within the input file. Program Requirements & Submission Details Your program should involve the definition of at least one class that has its own .h and .cpp files, named appropriately. Initially, you should focus on the dataset of matches that required 5 sets. Once that is working you can extend your solution to handle all matches. Be sure to read “Good Programming Practices” as you put the finishing touches on your solution. Use the provided template README.txt file for notes you want the grader to read. You must do this assignment on your own, as described in the “Collaboration Policy & Academic Integrity” statement. If you did discuss this assignment, problem solving techniques, or error messages, etc. with anyone, please list their names in your README.txt file. 3 http://www.cs.rpi.edu/academics/courses/fall20/csci1200/good_programming.php http://www.cs.rpi.edu/academics/courses/fall20/csci1200/academic_integrity.php CSCI-1200 Data Structures — Fall 2020 Lecture 3 — Classes II: More Examples, More Syntax Review of Lecture 2 • C++ classes, member variables and member functions, class scope, public and private • Nuances to remember – Within class scope (within the code of a member function) member variables and member functions of that class may be accessed without providing the name of the class object. – Within a member function, when an object of the same class type has been passed as an argument, direct access to the private member variables of that object is allowed (using the ’.’ notation). – Classes vs. structs, Designing classes – Custom sorting of class instances, non-member operators Today’s Lecture • Review: Custom sorting of class instances, non-member operators • More Misc C++ / C++ Class Syntax – default function parameter values – constructor member variable initializer list – include guards – return w/ const and reference – writing our own output stream operator • Extended example w/ multiple classes: student grading program – more complex types as class variables – member function implementation in the header file – default constructor, copy constructor Announcements / Reminders • Lab Study Group – Camera and microphone are required for lab study group. – After identifying yourself to the TA/mentor (for every checkpoint), you can disable your camera if bandwidth/connectivity is a problem. – Participation is strongly encouraged during your lab study group. Some groups are already bonding and making friends with each other! Check in with your group-mates during the 1 hour 50 minute lab period. Don’t just wait for the TA/mentor to show up. – Future labs will include checkpoints that require interaction with each other. • Office Hours https://www.cs.rpi.edu/academics/courses/fall20/csci1200/schedule.php – In addition to DS TAs and mentors, ALAC tutors will be helping students from the office hours queue. – Wait times were low and personalized attention was high during Homework 1 Thursday night office hours. • Discussion Forum https://submitty.cs.rpi.edu/courses/f20/csci1200/forum – Please search the prior threads before making a new thread. Filter by category, and also use the text search feature. We will merge duplicate questions into the earlier thread when appropriate. – Please write a good title for your new thread, so other students can find your question and benefit from our answers. – Teaching staff (instructor, ta, mentor) posts on the forum are outlined in yellow – this helps you identify verified answers. Students are encouraged to answer questions too! (Some of our top student forum participants become mentors in future semesters!) Teaching staff monitor all posts and will jump in with clarifications/corrections to answers if necessary. https://www.cs.rpi.edu/academics/courses/fall20/csci1200/schedule.php https://submitty.cs.rpi.edu/courses/f20/csci1200/forum • Emailing the Professor – please use [email protected] – There are over 300 students in the course – my inbox gets overrun and replies are massively delayed. Please limit email to personal and confidential communications. – Try to ask your questions on the Discussion Forum first – other students may have the same question! You can post anonymously –
Answered Same DaySep 14, 2021

Answer To: CSCI-1200 Data Structures — Fall 2020 Homework 2 — Tennis Classes In this assignment you will...

Arun Shankar answered on Sep 17 2021
161 Votes
README.txt
HOMEWORK 2: TENNIS CLASSES
NAME:< insert name >
COLLABORATORS AND OTHER RESOURCES:
List the names of everyone you talked to about this assignment
(classmates, TAs, ALAC tutors, upperclassmen, students/instructor via
the forum, etc.), and all of the resources (books, online reference
material, etc.) you consulted in completing this assignment.
< insert collaborators / resources >
Remember: Your implementation for this assignment must be done on your
own, as described in "Collaboration Policy and Academic Integrity".
ESTIMATE OF # OF HOURS SPENT ON THIS ASSIGNMENT:< insert # hours >
DESCRIPTION OF CUSTOM STATISTIC:
Well-written 100-200 word description.
RESULTS FROM CUSTOM STATISTIC:
Paste in a small amount of sample output into this file, or list the
file names of sample input & output included with your submisssion.
Describe what is interesting about your statistic on this data.
Please be concise!
MISC. COMMENTS TO GRADER:
Optional, please be concise!
main.cpp
#include
#include
#include
#include
using namespace std;
#include "player.h"
/* A useful function that returns the array index
if a player's name exists in the database, -1
otherwise. */
int exists(player arr[], string name, int size)
{
for(int i=0;i if(arr[i].getName()==name)
return i;

return -1;
}
int main(int argc, char* argv[])
{
if(argc!=4){
cout << "ERROR: correct usage is ./a.out <--match_stats|--game_stats|--custom_stats>" << endl;
return 0;
}

ifstream infile(argv[1]);
ofstream outfile(argv[2]);
if(!infile){
cout << "Unable to open the input file" << endl;
return 0;
}
if(!outfile){
cout << "Unable to open the output file" << endl;
return 0;
}
// Take appropriate action based on the 3rd
// argument
if(strcmp(argv[3],"--match_stats")==0){
outfile << "MATCH STATISTICS" << endl;
outfile << "Player\t\tW\tL\tpercentage" << endl;
}
else if(strcmp(argv[3],"--game_
stats")==0){
outfile << "GAME STATISTICS" << endl;
outfile << "Player\t\tW\tL\tpercentage" << endl;
}
else if(strcmp(argv[3],"--custom_stats")==0){
outfile << "CUSTOM STATISTICS" << endl;
outfile << "Player\t\tW\tL\tpercentage" << endl;
}
else{
cout << "ERROR: Unrecognized argument" << endl;
return 0;
}
// Declare variables
int playerCount = 0; // number of players.
player arr[1000]; // create array of players
// Both input and output files opened.
string line;
while(getline(infile, line)){
cout << line << endl;
size_t found = line.find("d.");
if (found != string::npos)
{
string winner = line.substr(0,found-1);
cout << "Winner = " << winner << endl;
int i = 0,count = 0;
for(;!((line[i]<='9') && (line[i]>='0'));i++);
int index = exists(arr, winner, playerCount);
if(index==-1)
{
// Add the player to the array
arr[playerCount++] = player(winner);
arr[playerCount++].addWins();
}
else
arr[index].addWins();
string loser = line.substr(found+3,i-(found+3));
cout << "Loser = " << loser << endl;
outfile << winner << endl;
outfile << loser << endl;
index = exists(arr, loser, playerCount);
if(index==-1)
{
// Add the player to the array
arr[playerCount++] = player(loser);
arr[playerCount++].addLosses();
}
else
arr[index].addLosses();
}
// Output the statistics to the file
for(int i=0;i {
outfile << arr[i].getName() << "\t";
outfile << arr[i].getWins() << "\t";
outfile << arr[i].getLosses() << "\t";
float pc = (float)(arr[i].getWins()) / (float)(arr[i].getWins() + arr[i].getLosses());
outfile << pc << endl;
}
}
return 0;
}
mens_2014.txt
Stanislas Wawrinka d. Rafael Nadal 6-3 6-2 3-6 6-3
Rafael Nadal d. Roger Federer 7-6 6-3 6-3
Stanislas Wawrinka d. Tomas Berdych 6-3 6-7 7-6 7-6
Rafael Nadal d. Grigor Dimitrov 3-6 7-6 7-6 6-2
Roger Federer d. Andy Murray 6-3 6-4 6-7 6-3
Tomas Berdych d. David Ferrer 6-1 6-4 2-6 6-4
Stanislas Wawrinka d. Novak Djokovic 2-6 6-4 6-2 3-6 9-7
Rafael Nadal d. Kei Nishikori 7-6 7-5 7-6
Grigor Dimitrov d. Roberto Bautista-Agut 6-3 3-6 6-2 6-4
Andy Murray d. Stephane Robert 6-1 6-2 6-7 6-2
Roger Federer d. Jo-Wilfried Tsonga 6-3 7-5 6-4
Tomas Berdych d. Kevin Anderson 6-2 6-2 6-3
David Ferrer d. Florian Mayer 6-7 7-5 6-2 6-1
Stanislas Wawrinka d. Tommy Robredo 6-3 7-6 7-6
Novak Djokovic d. Fabio Fognini 6-3 6-0 6-2
Rafael Nadal d. Gael Monfils 6-1 6-2 6-3
Kei Nishikori d. Donald Young 7-5 6-1 6-0
Grigor Dimitrov d. Milos Raonic 6-3 3-6 6-4 7-6
Roberto Bautista-Agut d. Benoit Paire 6-2 6-1 6-4
Andy Murray d. Feliciano Lopez 7-6 6-4 6-2
Stephane Robert d. Martin Klizan 6-0 7-6 6-4
Jo-Wilfried Tsonga d. Gilles Simon 7-6 6-4 6-2
Roger Federer d. Teymuraz Gabashvili 6-2 6-2 6-3
Tomas Berdych d. Damir Dzumhur 6-4 6-2 6-2
Kevin Anderson d. Edouard Roger-Vasselin 3-6 4-6 6-3 7-6 7-5
Florian Mayer d. Jerzy Janowicz 7-5 6-2 6-2
David Ferrer d. Jeremy Chardy 6-2 7-6 6-2
Stanislas Wawrinka d. Vasek Pospisil 6-0 6-0 6-0
Tommy Robredo d. Richard Gasquet 2-6 7-5 6-4 7-6
Fabio Fognini d. Sam Querrey 7-5 6-4 6-4
Novak Djokovic d. Denis Istomin 6-3 6-3 7-5
Rafael Nadal d. Thanasi Kokkinakis 6-2 6-4 6-2
Gael Monfils d. Jack Sock 7-6 7-5 6-2
Donald Young d. Andreas Seppi 6-4 2-6 6-3 4-6 7-5
Kei Nishikori d. Dusan Lajovic 6-1 6-1 7-6
Milos Raonic d. Victor Hanescu 7-6 6-4 6-4
Grigor Dimitrov d. Yen-Hsun Lu 6-3 6-3 7-6
Benoit Paire d. Nick Kyrgios 6-7 6-7 6-4 6-2 6-2
Roberto Bautista-Agut d. Juan-Martin Del-Potro 4-6 6-3 5-7 6-4 7-5
Andy Murray d. Vincent Millot 6-2 6-2 7-5
Feliciano Lopez d. Michael Berrer 6-4 7-6 6-4
Stephane Robert d. Michal Przysiezny 7-6 6-1 6-7 6-1
Martin Klizan d. Blaz Rola 6-4 6-3 5-7 7-6
Jo-Wilfried Tsonga d. Thomaz Bellucci 7-6 6-4 6-4
Gilles Simon d. Marin Cilic 4-6 7-6 6-7 6-1 6-2
Teymuraz Gabashvili d. Fernando Verdasco 7-6 3-6 2-6 6-4 6-4
Roger Federer d. Blaz Kavcic 6-2 6-1 7-6
Tomas Berdych d. Kenny De-Schepper 6-4 6-1 6-3
Damir Dzumhur d. Ivan Dodig 4-6 4-6 6-3 6-1 6-0
Kevin Anderson d. Dominic Thiem 6-4 6-3 6-4
Edouard Roger-Vasselin d. Guillermo Garcia-Lopez 7-6 6-4 4-6 6-1
Florian Mayer d. Mikhail Youzhny 6-4 3-6 6-3 3-6 6-3
Jerzy Janowicz d. Pablo Andujar 4-6 7-6 7-6 6-3
Jeremy Chardy d. Alexandr Dolgopolov 7-5 7-6 6-7 7-6
David Ferrer d. Adrian Mannarino 7-6 5-7 6-0 6-3
Stanislas Wawrinka d. Alejandro Falla 6-3 6-3 6-7 6-4
Vasek Pospisil d. Matthew Ebden 3-6 7-6 7-6 6-1
Tommy Robredo d. Julien Benneteau 6-3 6-7 6-1 7-6
Richard Gasquet d. Nikolay Davydenko 7-6 6-4 6-4
Fabio Fognini d. Jarkko Nieminen 7-5 6-4 3-6 6-2
Sam Querrey d. Ernests Gulbis 6-2 6-3 6-4
Denis Istomin d. Dmitry Tursunov 7-6 4-6 6-1 6-4
Novak Djokovic d. Leonardo Mayer 6-0 6-4 6-4
Rafael Nadal d. Bernard Tomic 6-4 6-0 6-0
Thanasi Kokkinakis d. Igor Sijsling 7-6 0-6 7-6 6-2
Jack Sock d. Tobias Kamke 7-6 5-7 6-2 6-4
Gael Monfils d. Ryan Harrison 6-4 6-4 6-4
Andreas Seppi d. Lleyton Hewitt 7-6 6-3 5-7 5-7 7-5
Donald Young d. Robin Haase 6-7 7-6 6-2 1-0
Dusan Lajovic d. Lucas Pouille 6-4 7-6 4-6 6-3
Kei Nishikori d. Marinko Matosevic 6-3 5-7 6-2 4-6 6-2
Milos Raonic d. Daniel Gimeno-Traver 7-6 6-1 4-6 6-2
Victor Hanescu d. Peter Gojowczyk 7-6 7-6 6-3
Yen-Hsun Lu d. Jimmy Wang 6-3 6-2 6-1
Grigor Dimitrov d. Bradley Klahn 6-7 6-4 6-4 6-3
Benoit Paire d. Frank Dancevic 7-6 6-3 6-4
Nick Kyrgios d. Benjamin Becker 6-3 6-7 6-2 7-6
Roberto Bautista-Agut d. Tim Smyczek 6-2 6-1 6-1
Juan-Martin Del-Potro d. Rhyne Williams 6-7 6-3 6-4 6-4
Andy Murray d. Go Soeda 6-1 6-1 6-3
Vincent Millot d. Wayne Odesnik 7-5 4-6 6-7 6-1 6-3
Michael Berrer d. Michael Llodra 6-4 7-5 6-1
Feliciano Lopez d. Somdev Devvarman 6-4 6-4 7-6
Stephane Robert d. Aljaz Bedene 7-6 6-3 6-0
Michal Przysiezny d. Horacio Zeballos 6-3 7-6 7-5
Blaz Rola d. Federico Delbonis 6-4 6-2 7-5
Martin Klizan d. John Isner 6-2 7-6 6-0
Jo-Wilfried Tsonga d. Filippo Volandri 7-5 6-3 6-3
Thomaz Bellucci d. Julian Reister 4-6 6-3 7-6 6-0
Marin Cilic d. Marcel Granollers 4-6 4-6 6-3 6-3 6-2
Gilles Simon d. Daniel Brands 6-7 6-4 3-6 6-3 16-14
Fernando Verdasco d. Ze Zhang 5-7 6-3 6-2 6-3
Teymuraz Gabashvili d. Sergiy Stakhovsky 6-7 6-4 6-2 6-0
Blaz Kavcic d. Radek Stepanek 6-7 4-6 6-1 6-0 6-0
Roger Federer d. James Duckworth 6-4 6-4 6-2
Tomas Berdych d. Aleksandr Nedovyesov 6-3 6-4 6-3
Kenny De-Schepper d. Di Wu 7-5 7-5 7-6
Damir Dzumhur d. Jan Hajek 6-4 6-2 6-1
Ivan Dodig d. Ivo Karlovic 7-6 6-3 7-6
Kevin Anderson d. Jiri Vesely 2-6 6-7 6-4 6-4 6-4
Dominic Thiem d. Joao Sousa 5-7 6-4 6-3 7-6
Edouard Roger-Vasselin d. Carlos Berlocq 6-4 7-6 6-7 6-2
Guillermo Garcia-Lopez d. Tommy Haas 7-5 6-2 6-0
Mikhail Youzhny d. Jan-Lennard Struff 6-1 6-4 6-2
Florian Mayer d. Denis Kudla 6-4 6-2 6-4
Pablo Andujar d. Albert Ramos-Vinolas 6-4 6-2 6-4
Jerzy Janowicz d. Jordan Thompson 1-6 4-6 6-4 6-2 6-1
Jeremy Chardy d. Jesse Huta-Galung 6-2 6-4 6-4
Alexandr Dolgopolov d. Ricardas Berankis 7-5 7-5 6-2
Adrian Mannarino d. Steve Johnson 3-6 6-3 6-0 5-7 6-4
David Ferrer d. Alejandro Gonzalez 6-3 6-4 6-4
Stanislas Wawrinka d. Andrey Golubev 6-4 6-1 6-0
Alejandro Falla d. Mikhail Kukushkin 6-7 6-2 6-2 6-3
Matthew Ebden d. Nicolas Mahut 6-3 7-5 4-6 0-6 6-3
Vasek Pospisil d. Samuel Groth 6-4 6-3 6-4
Tommy Robredo d. Lukas Rosol 6-1 6-7 3-6 7-6 8-6
Julien Benneteau d. Pablo Carreno-Busta 6-3 3-6 4-6 6-1 6-2
Nikolay Davydenko d. Lukasz Kubot 3-6 6-3 3-6 6-3 6-4
Richard Gasquet d. David Guez 7-5 6-4 6-1
Fabio Fognini d. Alex Bogomolov-Jr. 6-3 6-2 6-0
Jarkko Nieminen d. Dudi Sela 3-6 7-6 6-7 6-3 6-3
Sam Querrey d. Santiago Giraldo 6-3 6-2 3-6 7-6
Ernests Gulbis d. Juan Monaco 1-6 6-4 7-6 6-2
Dmitry Tursunov d. Michael Russell 6-2 6-2 6-3
Denis Istomin d. Marcos Baghdatis 6-4 7-5 6-4
Leonardo Mayer d. Albert Montanes 6-1 6-3 6-1
Novak Djokovic d. Lukas Lacko 6-3 7-6 6-1
Rafael Nadal d. Novak Djokovic 3-6 7-5 6-2 6-4
Rafael Nadal d. Andy Murray 6-3 6-2 6-1
Novak Djokovic d. Ernests Gulbis 6-3 6-3 3-6 6-3
Rafael Nadal d. David Ferrer 4-6 6-4 6-0 6-1
Andy Murray d. Gael Monfils 6-4 6-1 4-6 1-6 6-0
Ernests Gulbis d. Tomas Berdych 6-3 6-2 6-4
Novak Djokovic d. Milos Raonic 7-5 7-6 6-4
Rafael Nadal d. Dusan Lajovic 6-1 6-2 6-1
David Ferrer d. Kevin Anderson 6-3 6-3 6-7 6-1
Gael Monfils d. Guillermo Garcia-Lopez 6-0 6-2 7-5
Andy Murray d. Fernando Verdasco 6-4 7-5 7-6
Tomas Berdych d. John Isner 6-4 6-4 6-4
Ernests Gulbis d. Roger Federer 6-7 7-6 6-2 4-6 6-3
Milos Raonic d. Marcel Granollers 6-3 6-3 6-3
Novak Djokovic d. Jo-Wilfried Tsonga 6-1 6-4 6-1
Rafael Nadal d. Leonardo Mayer 6-2 7-5 6-2
Dusan Lajovic d. Jack Sock 6-4 7-5 6-3
Kevin Anderson d. Ivo Karlovic 6-3 6-0 6-0
David Ferrer d. Andreas Seppi 6-2 7-6 6-3
Guillermo Garcia-Lopez d. Donald Young 6-2 6-4 2-6 6-7 6-4
Gael Monfils d. Fabio Fognini 5-7 6-2 6-4 0-6 6-2
Fernando Verdasco d. Richard Gasquet 6-3 6-2 6-3
Andy Murray d. Philipp Kohlschreiber 3-6 6-3 6-3 4-6 12-10
Tomas Berdych d. Roberto Bautista-Agut 6-1 6-2 6-7 6-4
John Isner d. Tommy Robredo 7-6 7-6 6-7 7-5
Ernests Gulbis d. Radek Stepanek 6-3 6-2 7-5
Roger Federer d. Dmitry Tursunov 7-5 6-7 6-2 6-4
Milos Raonic d. Gilles Simon 4-6 6-3 2-6 6-2 7-5
Marcel Granollers d. Martin Klizan 6-7 6-2 7-6 7-5
Jo-Wilfried Tsonga d. Jerzy Janowicz 6-4 6-4 6-3
Novak Djokovic d. Marin Cilic 6-3 6-2 6-7 6-4
Rafael Nadal d. Dominic Thiem 6-2 6-2 6-3
Leonardo Mayer d. Teymuraz Gabashvili 6-2 4-6 6-4 6-4
Jack Sock d. Steve Johnson 7-5 6-4 6-2
Dusan Lajovic d. Jurgen Zopp 6-2 6-4 6-4
Ivo Karlovic d. Andreas Haider-Maurer 7-5 6-3 6-4
Kevin Anderson d. Axel Michon 6-2 6-3 6-2
Andreas Seppi d. Juan Monaco 6-2 6-4 6-4
David Ferrer d. Simone Bolelli 6-2 6-3 6-2
Guillermo Garcia-Lopez d. Adrian Mannarino 6-4 6-3 4-6 6-0
Donald Young d. Feliciano Lopez 6-3 7-6 6-3
Gael Monfils d. Jan-Lennard Struff 7-6 6-4 6-1
Fabio Fognini d. Thomaz Bellucci 6-3 6-4 7-6
Richard Gasquet d. Carlos Berlocq 7-6 6-4 6-4
Fernando Verdasco d. Pablo Cuevas 4-6 6-7 7-5 6-4 6-3
Philipp Kohlschreiber d. Denis Istomin 6-3 7-6 6-2
Andy Murray d. Marinko Matosevic 6-3 6-1 6-3
Tomas Berdych d. Aleksandr Nedovyesov 6-7 6-4 7-5 6-3
Roberto Bautista-Agut d. Benoit Paire 6-4 7-6 6-2
Tommy Robredo d. Kenny De-Schepper 6-2 6-3 6-3
John Isner d. Mikhail Kukushkin 6-7 7-6 6-3 7-6
Radek Stepanek d. Mikhail Youzhny 6-0 6-3 3-6 6-4
Ernests Gulbis d. Facundo Bagnis 6-2 7-5 6-0
Dmitry Tursunov d. Sam Querrey 6-4 7-5 6-1
Roger Federer d. Diego Schwartzman 6-3 6-4 6-4
Milos Raonic d. Jiri Vesely 7-6 6-4 6-1
Gilles Simon d. Alejandro Gonzalez 6-4 6-0 6-2
Marcel Granollers d. Alexandr Dolgopolov 1-6 3-6 6-3 6-0 6-2
Martin Klizan d. Robin Haase 6-1 3-6 6-1 1-6 7-5
Jo-Wilfried Tsonga d. Jurgen Melzer 6-2 6-3 6-4
Jerzy Janowicz d. Jarkko Nieminen 7-6 7-6 6-4
Marin Cilic d. Tobias Kamke 6-3 3-6 6-3 6-0
Novak Djokovic d. Jeremy Chardy 6-1 6-4 6-2
Rafael Nadal d. Robby Ginepri 6-0 6-3 6-0
Dominic Thiem d. Paul-Henri Mathieu 6-4 7-6 6-2
Leonardo Mayer d. James Duckworth 5-7 6-2 6-4 7-6
Teymuraz Gabashvili d. Vasek Pospisil 6-4 6-2 6-3
Jack Sock d. Nicolas Almagro 6-0 6-0 6-0
Steve Johnson d. Laurent Lokoli 4-6 6-7 7-6 6-3 6-3
Dusan Lajovic d. Federico Delbonis 6-3 6-2 6-3
Jurgen Zopp d. Tommy Haas 7-5 6-0 6-0
Ivo Karlovic d. Grigor Dimitrov 6-4 7-5 7-6
Andreas Haider-Maurer d. Daniel Brands 4-6 4-6 6-2 6-3 6-4
Axel Michon d. Bradley Klahn 6-1 6-7 5-7 6-1 6-4
Kevin Anderson d. Stephane Robert 7-5 6-3 6-4
Andreas Seppi d. Santiago Giraldo 6-3 7-5 6-3
Juan Monaco d. Lucas Pouille 6-3 6-1 6-4
Simone Bolelli d. Andrea Arnaboldi 6-4 6-4 6-2
David Ferrer d. Igor Sijsling 6-4 6-3 6-1
Guillermo Garcia-Lopez d. Stanislas Wawrinka 6-4 5-7 6-2 6-0
Adrian Mannarino d. Yen-Hsun Lu 6-2 6-1 6-1
Donald Young d. Dudi Sela 6-1 2-6 6-1 6-0
Feliciano Lopez d. Damir Dzumhur 6-3 7-6 6-3
Gael Monfils d. Victor Hanescu 6-2 4-6 6-4 6-2
Jan-Lennard Struff d. Albano Olivetti 6-1 6-4 6-4
Thomaz Bellucci d. Benjamin Becker 6-2 6-4 3-6 4-6 6-2
Fabio Fognini d. Andreas Beck 6-4 6-4 6-1
Richard Gasquet d. Bernard Tomic 6-2 6-1 7-5
Carlos Berlocq d. Lleyton Hewitt 3-6 6-2 6-1 6-4
Pablo Cuevas d. Matthew Ebden 6-1 6-2 6-3
Fernando Verdasco d. Michael Llodra 6-2 7-6 7-6
Philipp Kohlschreiber d. Pere Riba 7-5 6-4 6-1
Denis Istomin d. Sergiy Stakhovsky 6-3 6-4 2-6 6-3
Marinko Matosevic d. Dustin Brown 7-6 6-4 6-7 7-5
Andy Murray d. Andrey Golubev 6-1 6-4 3-6 6-3
Tomas Berdych d. Peter Polansky 6-3 6-4 6-4
Aleksandr Nedovyesov d. Somdev Devvarman 5-7 6-3 7-6 6-3
Benoit Paire d. Alejandro Falla 6-3 6-4 7-6
Roberto Bautista-Agut d. Paolo Lorenzi 6-3 7-5 6-2
Tommy Robredo d. James Ward 4-6 6-4 6-2 6-4
Kenny De-Schepper d. Albert Montanes 6-1 6-0 6-0
Mikhail Kukushkin d. Nicolas Mahut 6-3 6-7 6-3 6-4
John Isner d. Pierre-Hugues Herbert 7-6 7-6 7-5
Mikhail Youzhny d. Pablo Carreno-Busta 3-6 1-6 6-3 6-4 6-0
Radek Stepanek d. Facundo Arguello 6-7 3-6 6-4 6-3 6-2
Facundo Bagnis d. Julien Benneteau 6-1 6-2 1-6 3-6 18-16
Ernests Gulbis d. Lukasz Kubot 4-6 6-4 7-5 6-1
Dmitry Tursunov d. Potito Starace 6-1 7-5 6-2
Sam Querrey d. Filippo Volandri 7-6 6-4 6-3
Diego Schwartzman d. Gastao Elias 6-4 6-2 7-5
Roger Federer d. Lukas Lacko 6-2 6-4 6-2
Milos Raonic d. Nick Kyrgios 6-3 7-6 6-3
Jiri Vesely d. Lukas Rosol 6-2 7-6 7-5
Alejandro Gonzalez d. Michael Russell 6-2 6-4 6-7 6-1
Gilles Simon d. Ante Pavic 6-1 6-1 6-3
Alexandr Dolgopolov d. Albert Ramos-Vinolas 7-6 6-4 6-1
Marcel Granollers d. Ivan Dodig 6-2 6-0 6-0
Robin Haase d. Nikolay Davydenko 7-5 6-4 6-2
Martin Klizan d. Kei Nishikori 7-6 6-1 6-2
Jo-Wilfried Tsonga d. Edouard Roger-Vasselin 7-6 7-5 6-2
Jurgen Melzer d. David Goffin 6-4 5-7 7-5 6-4
Jarkko Nieminen d. Michal Przysiezny 6-7 6-4 6-7 6-3 6-4
Jerzy Janowicz d. Victor Estrella-Burgos 6-1 6-4 6-7 6-4
Marin Cilic d. Pablo Andujar 6-0 6-3 7-6
Tobias Kamke d. Miloslav Mecir 7-5 7-6 7-6
Jeremy Chardy d. Daniel Gimeno-Traver 7-5 6-2 6-2
Novak Djokovic d. Joao Sousa 6-1 6-2 6-4
Novak Djokovic d. Roger Federer 6-7 6-4 7-6 5-7 6-4
Novak Djokovic d. Grigor Dimitrov 6-4 3-6 7-6 7-6
Roger Federer d. Milos Raonic 6-4 6-4 6-4
Novak Djokovic d. Marin Cilic 6-1 3-6 6-7 6-2 6-2
Grigor Dimitrov d. Andy Murray 6-1 7-6 6-2
Roger Federer d. Stanislas Wawrinka 3-6 7-6 6-4 6-4
Milos Raonic d. Nick Kyrgios 6-7 6-2 6-4 7-6
Novak Djokovic d. Jo-Wilfried Tsonga 6-3 6-4 7-6
Marin Cilic d. Jeremy Chardy 7-6 6-4 6-4
Andy Murray d. Kevin Anderson 6-4 6-3 7-6
Grigor Dimitrov d. Leonardo Mayer 6-4 7-6 6-2
Stanislas Wawrinka d. Feliciano Lopez 7-6 7-6 6-3
Roger Federer d. Tommy Robredo 6-1 6-4 6-4
Milos Raonic d. Kei Nishikori 4-6 6-1 7-6 6-3
Nick Kyrgios d. Rafael Nadal 7-6 5-7 7-6 6-3
Novak Djokovic d. Gilles Simon 6-4 6-2 6-4
Jo-Wilfried Tsonga d. Jimmy Wang 6-2 6-2 7-5
Jeremy Chardy d. Sergiy Stakhovsky 6-3 6-7 6-3 6-0
Marin Cilic d. Tomas Berdych 7-6 6-4 7-6
Andy Murray d. Roberto Bautista-Agut 6-2 6-3 6-2
Kevin Anderson d. Fabio Fognini 4-6 6-4 2-6 6-2 6-1
Grigor Dimitrov d. Alexandr Dolgopolov 6-7 6-4 2-6 6-4 6-1
Leonardo Mayer d. Andrey Kuznetsov 6-4 7-6 6-3
Stanislas Wawrinka d. Denis Istomin 6-3 6-3 6-4
Feliciano Lopez d. John Isner 6-7 7-6 7-6 7-5
Tommy Robredo d. Jerzy Janowicz 6-2 6-4 6-7 4-6 6-3
Roger Federer d. Santiago Giraldo 6-3 6-1 6-3
Milos Raonic d. Lukasz Kubot 7-6 7-6 6-2
Kei Nishikori d. Simone Bolelli 3-6 6-3 4-6 7-6 6-4
Nick Kyrgios d. Jiri Vesely 3-6 6-3 7-5 6-2
Rafael Nadal d. Mikhail Kukushkin 6-7 6-1 6-1 6-1
Novak Djokovic d. Radek Stepanek 6-4 6-3 6-7 7-6
Gilles Simon d. Robin Haase 7-6 6-4 6-4
Jimmy Wang d. Mikhail Youzhny 7-6 6-2 6-7 6-3
Jo-Wilfried Tsonga d. Sam Querrey 4-6 7-6 6-7 6-3 14-12
Sergiy Stakhovsky d. Ernests Gulbis 6-4 6-3 7-6
Jeremy Chardy d. Marinko Matosevic 6-7 7-6 7-6 4-6 7-5
Marin Cilic d. Andreas Haider-Maurer 3-6 6-1 6-4 6-4
Tomas Berdych d. Bernard Tomic 4-6 7-6 7-6 6-1
Andy Murray d. Blaz Rola 6-1 6-1 6-0
Roberto Bautista-Agut d. Jan Hernych 7-5 4-6 6-2 6-2
Kevin Anderson d. Edouard Roger-Vasselin 7-6 1-6 6-3 6-4
Fabio Fognini d. Tim Puetz 2-6 6-4 7-6 6-3
Grigor Dimitrov d. Luke Saville 6-3 6-2 6-4
Alexandr Dolgopolov d. Benjamin Becker 6-7 7-6 6-3 6-4
Leonardo Mayer d. Marcos Baghdatis 7-6 4-6 6-1 6-4
Andrey Kuznetsov d. David Ferrer 6-7 6-0 3-6 6-3 6-2
Stanislas Wawrinka d. Yen-Hsun Lu 7-6 6-3 3-6 7-5
Denis Istomin d. Julian Reister 7-6 6-4 6-4
Feliciano Lopez d. Ante Pavic 6-4 7-6 7-5
John Isner d. Jarkko Nieminen 7-6 7-6 7-5
Jerzy Janowicz d. Lleyton Hewitt 7-5 6-4 6-7 4-6 6-3
Tommy Robredo d. Adrian Mannarino 6-4 6-1 7-6
Santiago Giraldo d. Marcel Granollers 4-6 7-6 1-6 6-1 7-5
Roger Federer d. Gilles Muller 6-3 7-5 6-3
Milos Raonic d. Jack Sock 6-3 6-4 6-4
Lukasz Kubot d. Dusan Lajovic 6-7 7-6 6-3 7-6
Simone Bolelli d. Philipp Kohlschreiber 4-6 6-4 6-3 2-6 7-5
Kei Nishikori d. Denis Kudla 6-3 6-2 6-1
Nick Kyrgios d. Richard Gasquet 3-6 6-7 6-4 7-5 10-8
Jiri Vesely d. Gael Monfils 7-6 6-3 6-7 6-7 6-4
Mikhail Kukushkin d. Frank Dancevic 6-3 6-3 6-2
Rafael Nadal d. Lukas Rosol 4-6 7-6 6-4 6-4
Novak Djokovic d. Andrey Golubev 6-0 6-1 6-4
Radek Stepanek d. Pablo Cuevas 6-2 6-4 6-4
Gilles Simon d. Konstantin Kravchuk 6-2 7-6 7-5
Robin Haase d. Vasek Pospisil 7-6 4-6 7-5 6-3
Mikhail Youzhny d. James Ward 6-2 6-2 6-1
Jimmy Wang d. Alejandro Gonzalez 6-3 6-3 6-2
Sam Querrey d. Bradley Klahn 6-7 6-4 6-1 7-5
Jo-Wilfried Tsonga d. Jurgen Melzer 6-1 3-6 3-6 6-2 6-4
Ernests Gulbis d. Jurgen Zopp 7-6 7-5 7-6
Sergiy Stakhovsky d. Carlos Berlocq 6-3 6-3 6-3
Jeremy Chardy d. Daniel Cox 6-2 7-6 6-7 6-3
Marinko Matosevic d. Fernando Verdasco 6-4 4-6 6-4 6-2
Marin Cilic d. Paul-Henri Mathieu 6-4 6-7 6-2 6-1
Andreas Haider-Maurer d. Kyle Edmund 6-3 7-6 6-2
Bernard Tomic d. Evgeny Donskoy 6-4 6-3 6-2
Tomas Berdych d. Victor Hanescu 6-7 6-1 6-4 6-3
Andy Murray d. David Goffin 6-1 6-4 7-5
Blaz Rola d. Pablo Andujar 6-3 6-1 6-4
Jan Hernych d. Tobias Kamke 6-3 6-7 6-3 5-7 6-4
Roberto Bautista-Agut d. Steve Johnson 6-3 6-7 6-4 7-5
Kevin Anderson d. Aljaz Bedene 6-3 7-5 6-2
Edouard Roger-Vasselin d. Filippo Volandri 7-6 6-2 6-4
Tim Puetz d. Teymuraz Gabashvili 2-6 6-4 6-2 6-2
Fabio Fognini d. Alex Kuznetsov 2-6 1-6 6-4 6-1 9-7
Grigor Dimitrov d. Ryan Harrison 7-6 6-3 6-2
Luke Saville d. Dominic Thiem 7-5 6-4 3-6 6-4
Benjamin Becker d. Donald Young 6-4 6-3 6-4
Alexandr Dolgopolov d. Samuel Groth 7-5 7-6 7-6
Leonardo Mayer d. Andreas Seppi 6-3 2-6 4-6 7-6 6-4
Marcos Baghdatis d. Dustin Brown 6-4 7-5 2-6 7-6
Andrey Kuznetsov d. Daniel Evans 6-1...
SOLUTION.PDF

Answer To This Question Is Available To Download

Related Questions & Answers

More Questions »

Submit New Assignment

Copy and Paste Your Assignment Here