Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

HighestGPAData.txt: 3.4 Randy 3.2 Kathy 2.5 Colt 3.4 Tom 3.8 Ron 3.8 Mickey 3.6 Peter 3.5 Donald 3.8 Cindy 3.7 Dome 3.9 Andy 3.8 Fox

image text in transcribed

HighestGPAData.txt:

3.4 Randy 3.2 Kathy 2.5 Colt 3.4 Tom 3.8 Ron 3.8 Mickey 3.6 Peter 3.5 Donald 3.8 Cindy 3.7 Dome 3.9 Andy 3.8 Fox 3.9 Minnie 2.7 Gilda 3.9 Vinay 3.4 Danny

main.cpp:

///*********************************************************

///

/// This program uses the class myStack to determine the

/// highest GPA from a list of students with their GPA.

/// The program also outputs the names of the students

/// who received the highest GPA.

///*********************************************************

#include

#include

#include

#include

#include "myStack.h"

using namespace std;

int main()

{

///Step 1

double GPA;

double highestGPA;

string name;

stackType stack(100);

ifstream infile;

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

if (!infile) //Step 3

{

cout

return 1;

}

cout

cout

infile >> GPA >> name; //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(name);

highestGPA = GPA; //Step 7.1.3

}

else if (GPA == highestGPA) //Step 7.2

if (!stack.isFullStack())

stack.push(name);

else

{

cout

return 1; //exit program

}

infile >> GPA >> name; //Step 7.3

}

cout

cout

while (!stack.isEmptyStack()) //Step 9

{

cout

stack.pop();

}

cout

return 0;

}

myStack.h:

///Header file: myStack.h

#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

}///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

}///end pop

template

stackType::stackType(int stackSize)

{

if (stackSize

{

/// note that cin and cout are not giof candidates to be ghere----done for the sake of simplicity.......

cout

cout

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

list[j] = otherStack.list[j];

} ///end copyStack

template

stackType::stackType(const stackType& otherStack)

{

list = nullptr;

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

To complete this assignment: Please study the code Stack as Array example for assignment 5N' posted in module 6 under assignment header. You need to implement the same class, but this time implement the stack as a single linked list. The test of the class should be done with the same main function as in the example. Please do not change the main function to avoid loosing points. Please place head comments AND comments to each function just like in the example for full credit

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

Recommended Textbook for

Database Reliability Engineering Designing And Operating Resilient Database Systems

Authors: Laine Campbell, Charity Majors

1st Edition

978-1491925942

More Books

Students also viewed these Databases questions