Ok guys I got my code done using a dynamic stack..all thats left is to fix my errors! Can someone please assist me??
Header File
Code:
#include <iostream>
#include <fstream>
#include <iomanip>
#include <functional>
#include <algorithm>
#include <string>
#include <cstdlib>
#include <sstream>
using namespace std;
//Car Class
class Car
{
private:
class StackNode
{
friend class Car;
string word;
string wordTwo;
string wordThree;
int value;
int valueTwo;
StackNode *next;
//Constructor
StackNode(string word1, string word2, string word3, int value1, int value2, StackNode *next1 = NULL)
{
word = word1;
wordTwo = word2;
wordThree = word3;
value = value1;
value = value2;
next = next1;
}
};
StackNode *top;
//Car Class information
string make; //make
string model; // model
string color; // color
int year; // year
int mileage; // miles on car
public:
Car() { top = NULL; }
void push(string, string, string, int, int);
void pop(string &, string &, string &, int &, int &);
bool isEmpty();
//Constructor that will set information for a new car
void New_vehicle (string a, string b, string c, int d, int e)
{make = a; model = b; color = c; year = d; mileage = e;}
Car(string, string, string, int, int);
//Stack Information
//mutator and accessor functions
void setMake(string);
void setModel(string);
void setColor(string);
void setYear(int);
void setMileage(int);
string getMake();
string getModel();
string getColor();
int getYear();
int getMileage();
//Check mileage to see if valid
void valid_mileage(int);
void car_details();
string string_car_details();
};
//Sets to default values
Car::Car() {
make = " ";
model = " ";
color = " ";
year = 0;
mileage = 0;
}
// My Vehicle set up(Make, model, color, year, mileage)
Car::Car(string make, string model, string color, int year, int mileage) {
this->make = make;
this->model = model;
this->color = color;
this->year = year;
valid_mileage(mileage);
}
void Car::setMake(string make) {
Car::make = make;
}
void Car::setModel(string model) {
Car::model = model;
}
void Car::setColor(string color) {
Car::color = color;
}
void Car::setYear(int year) {
Car::year = year;
}
void Car::setMileage(int mileage) {
valid_mileage(mileage);
}
string Car::getMake() {
return make;
}
string Car::getModel() {
return model;
}
string Car::getColor() {
return color;
}
int Car::getYear() {
return year;
}
int Car::getMileage() {
return mileage;
}
void Car::valid_mileage(int mileage) {
if (mileage>=0)
Car::mileage=mileage;
else {
Car::mileage=0;
cout << "WARNING! You have entered invalid mileage!\n";
}
}
void Car::car_details() {
cout << "The current car is a " << year << ' ' << color << ' '
<< make << ' ' << model << " with " << mileage << " miles.\n\n";
}
string Car::string_car_details() {
stringstream buf;
buf << "The current car is a " << year << ' ' << color << ' '
<< make << ' ' << model << " with " << mileage << " miles.\n\n";
return buf.str();
}
CPP File
Code:
#include "CarClass.h"
using namespace std;
//Push arguments onto stack
void Car::push(string make, string model, string color, int year, int mileage)
{
top = new StackNode(make, model, color, year, mileage, top);
}
//Pop removed value at top of stack and copies it to variable
void Car::pop(string &make, string &model, string &color, int &year, int &mileage)
{
StackNode *temp;
if (isEmpty())
{
cout << "The stack is empty.\n";
exit(1);
}
else //Pop value off top of stack
{
make = top->word;
model = top->wordTwo;
color = top->wordThree;
year = top->value;
mileage = top->valueTwo;
temp = top;
top = top->next;
delete temp;
}
}
//Returns true if stack is empty or false otherwise
bool Car::isEmpty()
{
if(!top)
return true;
else
return false;
}
int main() {
Car stack;
string catchWord;
string catchWord2;
string catchWord3;
int catchVal;
int catchVal2;
//Push information
cout << "Pushing first car \n";
stack.push("Porsche", "911", "Silver", 2005, 45000);
cout << "Pushing second car \n";
stack.push("Ford", "Mustang", "Red", 2007, 12600);
cout << "Pushing third car \n";
stack.push("Voltzwagon", "Jetta", "Black", 2006, 20218);
cout << "Pushing fourth car \n";
stack.push("Jeep", "Cherokee", "White", 2000, 98322);
cout << "Pushing fifth car \n";
stack.push("Nissan", "Sentra", "Red", 2002, 76046);
cout << "Pushing sixth car \n";
stack.push("Voltzwagon", "Beetle", "Black", 2005, 28031);
cout << "Popping...\n";
stack.pop(catchWord, catchWord2, catchWord3, catchVal, catchVal2);
cout << "The current car is a " << catchVal << " " << catchWord3<< " " << catchWord << " " << catchWord2 << " with " << catchVal2 <<" miles. \n";
stack.pop(catchWord, catchWord2, catchWord3, catchVal, catchVal2);
cout << "The current car is a " << catchVal << " " << catchWord3<< " " << catchWord << " " << catchWord2 << " with " << catchVal2 <<" miles. \n";
stack.pop(catchWord, catchWord2, catchWord3, catchVal, catchVal2);
cout << "The current car is a " << catchVal << " " << catchWord3<< " " << catchWord << " " << catchWord2 << " with " << catchVal2 <<" miles. \n";
stack.pop(catchWord, catchWord2, catchWord3, catchVal, catchVal2);
cout << "The current car is a " << catchVal << " " << catchWord3<< " " << catchWord << " " << catchWord2 << " with " << catchVal2 <<" miles. \n";
stack.pop(catchWord, catchWord2, catchWord3, catchVal, catchVal2);
cout << "The current car is a " << catchVal << " " << catchWord3<< " " << catchWord << " " << catchWord2 << " with " << catchVal2 <<" miles. \n";
stack.pop(catchWord, catchWord2, catchWord3, catchVal, catchVal2);
cout << "The current car is a " << catchVal << " " << catchWord3<< " " << catchWord << " " << catchWord2 << " with " << catchVal2 <<" miles. \n";
cout << "\n Attempting to pop again... ";
stack.pop(catchWord, catchWord2, catchWord3, catchVal, catchVal2);
return 0;
}
ERRORS:
1>------ Build started: Project: Week13, Configuration: Debug Win32 ------
1> Car.cpp
1>\carclass.h(81): error C2084: function 'Car::Car(void)' already has a body
1> \carclass.h(46) : see previous definition of '{ctor}'
1>\car.cpp(44): error C2264: 'Car::Car' : error in function definition or declaration; function not called
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========