Hello, I\'m trying to read this data into an array linked with astruct: How can
ID: 3618632 • Letter: H
Question
Hello,I'm trying to read this data into an array linked with astruct:
How can read the entire name of the movie into anarray[i].movie?
my struct looks like this:
struct Data { string movie; float rating; long double profit; }
Avatar8.42717292481.98The Blind Side7.7200000000.75District 937000000.208.3An Education7.512574715.98Inglourious Basterds8.4120540719.35The Hurt Locker7.940016144.10Precious: based on the novel Push by Sapphire7.547566524.78A Serious Man7.3Up8.4731338164.50Up in the Air7.983823381.78
Here's my code:
#include <iostream>#include <fstream>#include <cstdlib>#include <string>#include <iomanip>using namespace std;struct Movie{string movie;float score;long double profit;};Movie * CreateList(int&);void Menu(int&);void FindParticularRating(Movie *, int, string);void FindHighestRating(Movie *, int);void FindHighestBoxOffice(Movie*, int);void PrintAll(Movie*, int);int main(){int SIZE, userChoice;Movie *Data;string MovieName;Data = CreateList(SIZE);Menu(userChoice);switch(userChoice){case 1:cout << "Enter Movie Name: ";cin >> MovieName;FindParticularRating(Data,SIZE, MovieName);break;case 2:FindHighestRating(Data,SIZE);break;case 3:FindHighestBoxOffice(Data,SIZE);break;case 4:PrintAll(Data,SIZE);break;default:cout << "Invalid Choice" << endl;break;};return 0;}//****************************//* CreateList *//****************************Movie * CreateList(int& SIZE){Movie *Data;ifstream myFile;myFile.open("boxoffice.txt");if(!myFile)cout << "File Error" << endl;myFile >> SIZE;Data = new Movie[SIZE];for(int i = 1; i <= SIZE; i++){myFile >> Data[i].movie;myFile.ignore();myFile >> Data[i].score;myFile >> Data[i].profit;}myFile.close();return Data;}//****************************//* Menu *//****************************void Menu(int &userChoice){cout << "*********************" << endl;cout << "* MOVIE DATABASE *" << endl;cout << "*********************" << endl;cout << endl;cout << endl;cout << "(1) Find Particular Rating" << endl;cout << "(2) Find Highest Rating" << endl;cout << "(3) Find Highest Box Office Rating" << endl;cout << "(4) Print All" << endl;cout << endl;cout << "Choice : " << endl;cin >> userChoice;}//****************************//* FindParticularRating *//****************************void FindParticularRating(Movie *Data, int SIZE, string MovieName){int position = -1;for(int i=0; i < SIZE; i++){if(MovieName == Data[i].movie){position = i;}}if(position == -1){cout << endl;cout << "Invalid Movie Title" << endl;cout << endl;}else{cout << endl;cout << "The rating for " << Data[position].movie << " is " << Data[position].score << endl;cout << endl;}}//****************************//* FindParticularRating *//****************************void FindHighestRating(Movie *Data, int SIZE){int highest = Data[0].score;int position = -1;for(int i=0; i < SIZE; i++){if(highest < Data[i].score){position = i;}}cout << endl;cout << "The Movie with the HIGHEST RATING is " << Data[position].movie << endl;cout << endl;}//****************************//* FindHighestBoxOffice *//****************************void FindHighestBoxOffice(Movie *Data, int SIZE){long double highest = Data[0].profit;int position = -1;for(int i=0; i < SIZE; i++){if(highest < Data[i].profit){position = i;}}cout << endl;cout << "The Movie with the HIGHEST PROFIT is " << Data[position].movie << endl;cout << endl;}//****************************//* Print *//****************************void PrintAll(Movie *Data, int SIZE){cout << fixed << setprecision(2);for(int i=1; i < SIZE; i++){cout << "Movie Title: " << right << Data[i].movie << endl;cout << "Rating: " << right << Data[i].score << endl;cout << "Profit: " << right << Data[i].profit << endl;cout << endl;}} I'm trying to read this data into an array linked with astruct:
How can read the entire name of the movie into anarray[i].movie?
my struct looks like this:
struct Data { string movie; float rating; long double profit; }
Avatar8.42717292481.98The Blind Side7.7200000000.75District 937000000.208.3An Education7.512574715.98Inglourious Basterds8.4120540719.35The Hurt Locker7.940016144.10Precious: based on the novel Push by Sapphire7.547566524.78A Serious Man7.3Up8.4731338164.50Up in the Air7.983823381.78
Here's my code:
#include <iostream>#include <fstream>#include <cstdlib>#include <string>#include <iomanip>using namespace std;struct Movie{string movie;float score;long double profit;};Movie * CreateList(int&);void Menu(int&);void FindParticularRating(Movie *, int, string);void FindHighestRating(Movie *, int);void FindHighestBoxOffice(Movie*, int);void PrintAll(Movie*, int);int main(){int SIZE, userChoice;Movie *Data;string MovieName;Data = CreateList(SIZE);Menu(userChoice);switch(userChoice){case 1:cout << "Enter Movie Name: ";cin >> MovieName;FindParticularRating(Data,SIZE, MovieName);break;case 2:FindHighestRating(Data,SIZE);break;case 3:FindHighestBoxOffice(Data,SIZE);break;case 4:PrintAll(Data,SIZE);break;default:cout << "Invalid Choice" << endl;break;};return 0;}//****************************//* CreateList *//****************************Movie * CreateList(int& SIZE){Movie *Data;ifstream myFile;myFile.open("boxoffice.txt");if(!myFile)cout << "File Error" << endl;myFile >> SIZE;Data = new Movie[SIZE];for(int i = 1; i <= SIZE; i++){myFile >> Data[i].movie;myFile.ignore();myFile >> Data[i].score;myFile >> Data[i].profit;}myFile.close();return Data;}//****************************//* Menu *//****************************void Menu(int &userChoice){cout << "*********************" << endl;cout << "* MOVIE DATABASE *" << endl;cout << "*********************" << endl;cout << endl;cout << endl;cout << "(1) Find Particular Rating" << endl;cout << "(2) Find Highest Rating" << endl;cout << "(3) Find Highest Box Office Rating" << endl;cout << "(4) Print All" << endl;cout << endl;cout << "Choice : " << endl;cin >> userChoice;}//****************************//* FindParticularRating *//****************************void FindParticularRating(Movie *Data, int SIZE, string MovieName){int position = -1;for(int i=0; i < SIZE; i++){if(MovieName == Data[i].movie){position = i;}}if(position == -1){cout << endl;cout << "Invalid Movie Title" << endl;cout << endl;}else{cout << endl;cout << "The rating for " << Data[position].movie << " is " << Data[position].score << endl;cout << endl;}}//****************************//* FindParticularRating *//****************************void FindHighestRating(Movie *Data, int SIZE){int highest = Data[0].score;int position = -1;for(int i=0; i < SIZE; i++){if(highest < Data[i].score){position = i;}}cout << endl;cout << "The Movie with the HIGHEST RATING is " << Data[position].movie << endl;cout << endl;}//****************************//* FindHighestBoxOffice *//****************************void FindHighestBoxOffice(Movie *Data, int SIZE){long double highest = Data[0].profit;int position = -1;for(int i=0; i < SIZE; i++){if(highest < Data[i].profit){position = i;}}cout << endl;cout << "The Movie with the HIGHEST PROFIT is " << Data[position].movie << endl;cout << endl;}//****************************//* Print *//****************************void PrintAll(Movie *Data, int SIZE){cout << fixed << setprecision(2);for(int i=1; i < SIZE; i++){cout << "Movie Title: " << right << Data[i].movie << endl;cout << "Rating: " << right << Data[i].score << endl;cout << "Profit: " << right << Data[i].profit << endl;cout << endl;}}
Explanation / Answer
//Hope this will help you. #include #include #include using namespace std; struct Data { string movie; float rating; long double profit; }; int main() { FILE *fp; int i; char filename[100]; Data d[1000]; int count=0; char str[1000]; coutfilename; fp = fopen(filename,"rb"); if(fp == NULL) { coutRelated Questions
Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.