Question
You have collected a file of movie ratings where each movie is rated from 1 (bad) to 5 (excellent). The first line of the file
You have collected a file of movie ratings where each movie is rated from 1 (bad) to 5 (excellent). The first line of the file is a number that identifies how many ratings are in the file. Each rating then consists of two lines: the name of the movie followed by the numeric rating from 1 to 5. Here is a sample rating file with four unique movies and seven ratings:
7 Happy Feet
4
Happy Feet
5
Pirates of the Caribbean
3
Happy Feet
4
Pirates of the Caribbean
4
Flags of Our Fathers
5
Gigli
1
Write a program that reads in a file in this format, calculates the average rating for each movie, and outputs the average along with the number of reviews. Here is the desired output for the sample data:
Happy Feet: 3 reviews, average of 4.3 / 5
Pirates of the Caribbean: 2 reviews, average of 3.5 / 5
Flags of Our Father: 1 review, average of 5 / 5
Gigli: 1 review, average of 1 / 5
Use a map or multiple maps to generate the output. Your map should index from a string representing each movies name to integers that store the number of reviews for the movie and the sum of the ratings for the movie.
You will need to use the fstream library to read in file data. It may be helpful to discard the newline character as you read the file data. You can do this using the following line: fin.ignore(2,' '); . Use it after reading any movie ratings. You will also need to clean up the title as it will contain a linefeed character at the end of it, just remove it after reading the movie name.
Assume a file named movies.txt is used as the input file and it contains the list of movies above. This will be the test file data for your program, make sure the output matches the output above. You can use the code below to get started.
#include
#include
#include
#include
#include
using std::ifstream;
using std::cout;
using std::endl;
using std::string;
using std::cin;
using std::map;
int main()
{
ifstream fin; // Input file
fin.open("movies.txt"); // Name of the text file with ratings, has to be within the same directory as this code
if (fin.fail())
{
cout << "Input file opening failed. ";
exit(1);
}
//YOUR CODE FOR READING THE TEXT FILE GOES HERE
fin.close( );
//YOUR CODE FOR CALCULATING/OUTPUTTING THE RATINGS GOES HERE
return 0;
}
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started