Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Here is my code and input file information. I must print out the highest GPA. Then print to screen the first name, last name, and

Here is my code and input file information. I must print out the highest GPA. Then print to screen the first name, last name, and classification of the students with the highes GPA.

#ifndef H_StackADT #define H_StackADT template

class stackADT { public: virtual void initializeStack() = 0; //Method to initialize the stack to an empty state. //Postcondition: Stack is empty.

virtual bool isEmptyStack() const = 0; //Function to determine whether the stack is empty. //Postcondition: Returns true if the stack is empty, // otherwise returns false.

virtual bool isFullStack() const = 0; //Function to determine whether the stack is full. //Postcondition: Returns true if the stack is full, // otherwise returns false.

virtual void push(const Type& newItem) = 0; //Function to add newItem to the stack. //Precondition: The stack exists and is not full. //Postcondition: The stack is changed and newItem is added // to the top of the stack.

virtual Type top() const = 0; //Function to return the top element of the stack. //Precondition: The stack exists and is not empty. //Postcondition: If the stack is empty, the program // terminates; otherwise, the top element of the stack // is returned.

virtual void pop() = 0; //Function to remove the top element of the stack. //Precondition: The stack exists and is not empty. //Postcondition: The stack is changed and the top element // is removed from the stack. }; #endif

****************************************************************************************

#ifndef H_StackType #define H_StackType #include #include

#include "stackADT.h"

using namespace std;

template

class stackType: public stackADT { public: const stackType& operator=(const stackType&); //Overload the assignment operator.

void initializeStack(); //Function to initialize the stack to an empty state. //Postcondition: stackTop = 0;

bool isEmptyStack() const; //Function to determine whether the stack is empty. //Postcondition: Returns true if the stack is empty, // otherwise returns false.

bool isFullStack() const; //Function to determine whether the stack is full. //Postcondition: Returns true if the stack is full, // otherwise returns false.

void push(const Type& newItem); //Function to add newItem to the stack. //Precondition: The stack exists and is not full. //Postcondition: The stack is changed and newItem is // added to the top of the stack.

Type top() const; //Function to return the top element of the stack. //Precondition: The stack exists and is not empty. //Postcondition: If the stack is empty, the program // terminates; otherwise, the top element of the stack // is returned.

void pop(); //Function to remove the top element of the stack. //Precondition: The stack exists and is not empty. //Postcondition: The stack is changed and the top element is // removed from the stack.

stackType(int stackSize = 100); //Constructor //Create an array of the size stackSize to hold //the stack elements. The default stack size is 100. //Postcondition: The variable list contains the base address // of the array, stackTop = 0, and maxStackSize = stackSize

stackType(const stackType& otherStack); //Copy constructor

~stackType(); //Destructor //Remove all the elements from the stack. //Postcondition: The array (list) holding the stack // elements is deleted.

private: int maxStackSize; //variable to store the maximum stack size int stackTop; //variable to point to the top of the stack Type *list; //pointer to the array that holds the stack elements

void copyStack(const stackType& otherStack); //Function to make a copy of otherStack. //Postcondition: A copy of otherStack is created and assigned // to this stack. };

template void stackType::initializeStack() { stackTop = 0; }//end initializeStack

template bool stackType::isEmptyStack() const { return(stackTop == 0); }//end isEmptyStack

template bool stackType::isFullStack() const { return(stackTop == maxStackSize); } //end isFullStack

template void stackType::push(const Type& newItem) { if (!isFullStack()) { list[stackTop] = newItem; //add newItem to the //top of the stack stackTop++; //increment stackTop } else cout << "Cannot add to a full stack." << endl; }//end push

template Type stackType::top() const { assert(stackTop != 0); //if stack is empty, //terminate the program return list[stackTop - 1]; //return the element of the //stack indicated by //stackTop - 1 }//end top

template void stackType::pop() { if (!isEmptyStack()) stackTop--; //decrement stackTop else cout << "Cannot remove from an empty stack." << endl; }//end pop

template stackType::stackType(int stackSize) { if (stackSize <= 0) { cout << "Size of the array to hold the stack must " << "be positive." << endl; cout << "Creating an array of size 100." << endl;

maxStackSize = 100; } else maxStackSize = stackSize; //set the stack size to //the value specified by //the parameter stackSize

stackTop = 0; //set stackTop to 0 list = new Type[maxStackSize]; //create the array to //hold the stack elements }//end constructor

template stackType::~stackType() //destructor { delete [] list; //deallocate the memory occupied //by the array }//end destructor

template void stackType::copyStack(const stackType& otherStack) { delete [] list; maxStackSize = otherStack.maxStackSize; stackTop = otherStack.stackTop; list = new Type[maxStackSize];

//copy otherStack into this stack for (int j = 0; j < stackTop; j++) list[j] = otherStack.list[j]; } //end copyStack

template stackType::stackType(const stackType& otherStack) { list = NULL;

copyStack(otherStack); }//end copy constructor

template const stackType& stackType::operator= (const stackType& otherStack) { if (this != &otherStack) //avoid self-copy copyStack(otherStack);

return *this; } //end operator=

#endif

****************************************************************************************

#include #include #include #include

#include "myStack.h"

using namespace std;

int main() { //Step 1 double GPA; double highestGPA; string fname;

string lname;

string classification;

stackType stack(100);

ifstream infile;

infile.open("HighestGPAData.txt"); //Step 2

if (!infile) //Step 3 { cout << "The input file does not " << "exist. Program terminates!" << endl; return 1; }

cout << fixed << showpoint; //Step 4 cout << setprecision(2); //Step 4

infile >> GPA >> fname >> lname >> classification; //Step 5

highestGPA = GPA; //Step 6

while (infile) //Step 7 { if (GPA > highestGPA) //Step 7.1 { stack.initializeStack(); //Step 7.1.1

if (!stack.isFullStack()) //Step 7.1.2 stack.push(fname);

highestGPA = GPA; //Step 7.1.3 } else if (GPA == highestGPA) //Step 7.2 if (!stack.isFullStack()) stack.push(fname); else { cout << "Stack overflows. " << "Program terminates!" << endl; return 1; //exit program }

infile >> GPA >> fname >> lname >> classification; //Step 7.3 }

cout << "Highest GPA = " << highestGPA << endl;//Step 8 cout << "The students holding the " << "highest GPA are:" << endl;

while (!stack.isEmptyStack()) //Step 9 { cout << stack.top() << endl; stack.pop(); }

cout << endl;

return 0; }

**************************************************************************************************************************************************

//input text file (HighestGPAData.txt)

3.4 Randy Travis Senior 3.2 Kathy Bates Freshman 2.5 Colt James Freshman 3.4 Tom Hannks senior 3.8 Ron Johnson sophmore 3.8 Mickey Mouse Junior 3.6 Peter Pan Sophmore 3.5 Donald Duck Junior 3.8 Cindy Crawford Senior 3.7 Dome Ron Junior 3.9 Andy Simmons Sophmore 3.8 Fox Brown freshman 3.9 Minnie Mouse senior 2.7 Gilda Frank Junior 3.9 Vinay low Junior 3.4 Danny Ward Senior

**********************************************************************************************************************************************************************

problem : I can only print out the highest GPA and the students first name with the highest GPA.

output should look like this:

Highest GPA = 3.90

The students holding the highest GPA are:

Vinay Low Junior

Minnie Mouse senior

Andy Simmons Sophmore

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started