Question: The program that was written below to be used for keeping track of textbooks required and recommended for classes and the cost of those textbooks(

The program that was written below to be used for keeping track of textbooks required and recommended for classes and the cost of those textbooks( Heres the link in Chegg for the formats the instruction wanted: "https://www.chegg.com/homework-help/questions-and-answers/write-program-c-used-keeping-track-textbooks-required-recommended-classes-cost-textbooks-p-q21146933" ) , the code keeps throwing out of range error for "case: C" when trying to run input test.txt file. Which when it parsing the C it errors out. Can anyone take a look at the code and see what can be causing such error for "case: C" in the code when giving this whole test inputs below:

C CSCE 315 Programming Studio C CSCE 629 Algorithms C CSCE 633 Machine Learning C CSCE 641 Computer Graphics C CSCE 649 Physically based Modelling C MATH 601 Introduction to Diff. Equation C MATH 602 Introduction to Partial Diff. Equation C STAT 601 Introduction to Stats. C STAT 613 Introduction to Stat. Machine Learning B 1234567890123 Programming for Programmers M 1234567890123 12.34 N D 1234567890123 D 01/2017 B 9780128006450 Physically Based Rendering, Third Edition: From Theory to Implementation M 9780128006450 104.45 N M 9780128006450 87.48 E D 9780128006450 D 11/2016 D 9780128006450 A Matt Pharr, Greg Humphreys B 9781568814247 Real-Time Rendering, Third Edition M 9781568814247 84.93 N M 9781568814247 76.78 U M 9781568814247 82.39 E M 9781568814247 49.95 R D 9781568814247 D 07/2008 D 9781568814247 A Tomas Akenine-Moller, Eric Haines D 9781568814247 E 3 A 1234567890123 CSCE 315 501 R A 1234567890123 CSCE 315 502 R A 1234567890123 CSCE 315 503 R PM CSCE PM MATH PM STAT A 9780128006450 CSCE 641 501 R A 9781568814247 CSCE 649 502 O PM CSCE PM MATH PM STAT A 9780128006450 MATH 601 501 R A 9781568814247 MATH 601 502 O PM CSCE PM MATH PM STAT A 9780128006450 STAT 613 501 R PM CSCE PM MATH PM STAT Q q quit

[Code]

#include #include #include #include

using namespace std;

int BookCounter = 0, CourseCounter = 0, ClassCounter = 0;

struct Book { long isbn; string title; string author; int edition; string publicationDate; double newRate = -1; double usedRate = -1; double rentedRate = -1; double eRate = -1;

}*books[100];

struct Course { int deptCode; int courseNumber; string name;

}* course[100];

struct Class { struct Book* book; struct Course* course; int sectionNumber; bool required;

}*classes[100];

int GetBook(long newISBN) { for (int i = 0; i < BookCounter; i++) { if (books[i]->isbn == newISBN) { return i; } } return -1; }

int GetCourse(int courseNum, int dept) { for (int i = 0; i < CourseCounter; i++) { if (course[i]->courseNumber == courseNum && course[i] -> deptCode == dept) { return i; } } return -1; }

void PrintBooks(string code, istringstream &iss) { int deptCode, sectionNum, courseNum; long isbn; if (code == "GC") iss >> deptCode >> courseNum; else if (code == "GS") iss >> deptCode >> courseNum >> sectionNum; else if (code == "GB") iss >> isbn; for (int i = 0; i < ClassCounter; i++) { if (code == "GB" && classes[i]->book->isbn == isbn) { cout << classes[i]->book->isbn << " " << classes[i]->book->title << " "; if (classes[i]->required) cout << " Required "; else cout << " Optional "; } else if (classes[i]->course->courseNumber == courseNum && classes[i]->course->deptCode == deptCode) { if (code == "GS" && classes[i]->sectionNumber == sectionNum) { cout << classes[i]->book->isbn << " " << classes[i]->book->title << " "; if (classes[i]->required) cout << " Required "; else cout << " Optional "; } if (code == "GC") { cout << classes[i]->book->isbn << " " << classes[i]->book->title << " "; if (classes[i]->required) cout << " Required "; else cout << " Optional "; } } } } void PrintAllInfo(string code, istringstream &iss) { if (code == "PB") { for (int i = 0; i < BookCounter; i++) { cout << books[i]->isbn << " " << books[i]-> title << " " << books[i]->author << " Ed: " << books[i]->edition << " " << books[i]->publicationDate; cout << " Rent Rate: " << books[i]->rentedRate << " New Rate: " << books[i]->newRate << " Used Rate: " << books[i]->usedRate; cout << " Electronic Rate: " << books[i]->eRate << " "; } } else if (code == "PC") { for (int i = 0; i < CourseCounter; i++) { cout << "Course Num: " << course[i]-> courseNumber << " Dept Code: " << course[i]->deptCode << " Name: " << course[i]->name; cout << " "; } } else if (code == "PD") { int deptCode; iss >> deptCode; for (int i = 0; i < ClassCounter; i++) { if (classes[i]->course->deptCode == deptCode) { cout << classes[i]->book->isbn << " " << classes[i]->book->title << " "; } } } else if (code == "PY") { int pmonth, pyear, checkMonth, checkYear; int ch; iss >> checkMonth >> ch >> checkYear; /* int ch; iss >> checkMonth >> ch >> checkYear; */ for (int i = 0; i < BookCounter; i++) { istringstream isstreamer(books[i]->publicationDate); isstreamer >> pmonth >> ch >> pyear; if ((pyear == checkYear && pmonth > checkMonth) ||(pyear > checkYear)) { cout << books[i]->isbn << " " << books[i]-> title << " "; } } } else if (code == "PM") { double average = 0, max = 0, min = 100000; int count = 0; int deptCode; iss >> deptCode; for (int i = 0; i < ClassCounter; i++) { if (classes[i]->course->deptCode == deptCode) { average += classes[i]->book->usedRate == -1 ? 0 : classes[i]->book->usedRate; average += classes[i]->book->newRate == -1 ? 0 : classes[i]->book->newRate; average += classes[i]->book->rentedRate == -1 ? 0 : classes[i]->book->rentedRate; average += classes[i]->book->eRate == -1 ? 0 : classes[i]->book->eRate; if (classes[i]->book->usedRate != -1) { if (classes[i]->book->usedRate > max) max = classes[i]->book->usedRate; if (classes[i]->book->usedRate < min && classes[i]->required) min = classes[i]->book->usedRate; count++; } if (classes[i]->book->newRate != -1) { if (classes[i]->book->newRate > max) max = classes[i]->book->newRate; if (classes[i]->book->newRate < min && classes[i]->required) min = classes[i]->book->newRate; count++; } if (classes[i]->book->rentedRate != -1) { if (classes[i]->book->rentedRate > max) max = classes[i]->book->rentedRate; if (classes[i]->book->rentedRate < min && classes[i]->required) min = classes[i]->book->rentedRate; count++; } if (classes[i]->book->eRate != -1) { if (classes[i]->book->eRate > max) max = classes[i]->book->eRate; if (classes[i]->book->eRate < min && classes[i]->required) min = classes[i]->book->eRate; count++; } } } cout << "Average: " << average / count << " Min Cost: " << min << " Max Cost: " << max << endl; } }

int main() { cout << "Enter 'quit' To quit The Program "; for (string line; getline(std::cin, line);) { if (line == "quit") exit(0); else { string Code; istringstream Iss(line); Iss >> Code; long NewISBN = 0; int BookIndex = 0; char UpdateCode; switch (Code.at(0)) { case 'B': books[BookCounter] = new Book; Iss >> books[BookCounter]->isbn; books[BookCounter]->title = Iss.str().substr(Iss.tellg()); BookCounter++; break; case 'D': Iss >> NewISBN; BookIndex = GetBook(NewISBN); Iss >> UpdateCode; if (UpdateCode == 'A') books[BookIndex]->author = Iss.str().substr(Iss.tellg()); else if (UpdateCode == 'E') Iss >> books[BookIndex]->edition; else Iss >> books[BookIndex]->publicationDate; break; case 'M': Iss >> NewISBN; double cost; BookIndex = GetBook(NewISBN); Iss >> cost >> UpdateCode; if (UpdateCode == 'N') books[BookIndex]->newRate = cost; else if(UpdateCode == 'U') books[BookIndex]->usedRate = cost; else if (UpdateCode == 'R') books[BookIndex]->rentedRate = cost; else if (UpdateCode == 'E') books[BookIndex]->eRate = cost; break; case 'C': course[CourseCounter] = new Course; Iss >> course[CourseCounter]->deptCode >> course[CourseCounter]->courseNumber; course[CourseCounter]->name = Iss.str().substr(Iss.tellg()); CourseCounter++; break; case 'A' : Iss >> NewISBN; int deptCode, courseNum, courseIndex; Iss >> deptCode >> courseNum; courseIndex = GetCourse(courseNum, deptCode); BookIndex = GetBook(NewISBN); classes[ClassCounter] = new Class; classes[ClassCounter]->book = books[BookIndex]; classes[ClassCounter]->course = course[courseIndex]; Iss >> classes[ClassCounter]->sectionNumber; Iss >> classes[ClassCounter]->required; ClassCounter++; break; case 'G': PrintBooks(Code, Iss); break; case 'P': PrintAllInfo(Code, Iss); break; } } } }

[/EndCode]

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!