I make a simple program in c++ about car class in three files i did it according
ID: 3634731 • Letter: I
Question
I make a simple program in c++ about car class in three files i did it according to the main that teacher give it to us but i have errors while compiling itfile1:car.h
//--------------- CAR.H ---------------
class Car
{
public:
Car(string &make,string &model,int y=2001); //constructor with three prameters
//constructor with two parameter
string GetMake();
string GetMode();
int GetYear();
int GetSpeed();
bool SetValue(string &make,string &model,int y); // set the fraction's value through parameters
void Display(); // display output
bool Accelerate(char c); //
bool Brake(char c);
private:
string carmake;
string carmodel ;
int carspeed;
int year;
};
file2:car.cpp
//--------------- CAR.CPP ---------------
// The class definition for CAR.
#include <iostream>
#include "car.h"
using namespace std;
#include<string>
//--------constructors definitions------------------
Car::Car(string &make,string &model,int y)
//constructor with three prameters
{
carmake=make;
carmodel=model;
carspeed=0;
if ( y<0)
year=2010;
else
year=y;
}
string Car::GetMake()
{
return carmake;
}
string Car::GetMode()
{
return carmodel;
}
int Car::GetYear()
{
return year;
}
int Car::GetSpeed()
{
return carspeed;
}
bool Car::SetValue(string &make,string &model,int y)
{
if(y<0)
{
carmake=make;
carmodel=model;
year=y;
return true;
}
else
return false;
}
void Car::Display()
{
//cout<<"Your car is a "<<year <<carmodel <<carmake<<endl;
//cout<< "And it is currently going:"<<carspeed<<"MPH";
}
bool Car::Accelerate(char c)
{
if((c=='h')||(c='H')||(c=='m')||(c=='M')||(c=='l')||(c=='L'))
{
if(c=='h'||c=='H')
carspeed+=10;
if(c=='m'||c=='M')
carspeed+=5;
if(c=='l'||c=='L')
carspeed+=1;
return true;
}
else
return false;
}
bool Car::Brake(char c)
{
if((c=='h')||(c='H')||(c=='m')||(c=='M')||(c=='l')||(c=='L'))
{
if(c=='h'||c=='H'&& carspeed>10)
carspeed-=10;
if((c=='m')||(c=='M') && (carspeed>5))
carspeed-=5;
if((c=='l')||(c=='L')&&(carspeed>1))
carspeed-=1;
return true;
}
else
return false;
}
file3:main.cpp
#include <iostream>
#include <string>
#include "car.h"
using namespace std;
int main()
{
Car car1("Ford", "Crown Victoria", 1997);
Car car2("Chevrolet", "Camaro");
Car car3("Hyundai", "Sonata", -15);
cout << " *** Displaying each car's stats ";
cout << "Car1: ";
car1.Display();
cout << " Car2: ";
car2.Display();
cout << " Car3: ";
car3.Display();
cout << " *** Accelerating car 3 several times: ";
car3.Accelerate('h'); // accelerate hard
cout << "Car3 speed: " << car3.GetSpeed() << ' ';
car3.Accelerate('M'); // accelerate medium
cout << "Car3 speed: " << car3.GetSpeed() << ' ';
car3.Accelerate('L'); // accelerate low
cout << "Car3 speed: " << car3.GetSpeed() << ' ';
car3.Accelerate('L'); // accelerate low
cout << "Car3 speed: " << car3.GetSpeed() << ' ';
car3.Accelerate('Z'); // accelerate with invalid level
cout << "Car3 speed: " << car3.GetSpeed() << ' ';
cout << " *** Resetting car make/models ";
car1.SetValue("Flinstones", "Rock Car", -2100);
car3.SetValue("Toyota", "Camry", 2005);
cout << "Car1: ";
car1.Display();
cout << " Car3: ";
car3.Display();
cout << " *** Decelerating car3 ";
car3.Brake('m');
cout << "Car3 speed: " << car3.GetSpeed() << ' ';
car3.Brake('L');
cout << "Car3 speed: " << car3.GetSpeed() << ' ';
car3.Brake('l');
cout << "Car3 speed: " << car3.GetSpeed() << ' ';
car3.Brake('M');
cout << "Car3 speed: " << car3.GetSpeed() << ' ';
car3.Brake('A');
cout << "Car3 speed: " << car3.GetSpeed() << ' ';
car3.Brake('H');
cout << "Car3 speed: " << car3.GetSpeed() << ' ';
cout << " *** Calling accessors ";
cout << "Car1: ";
cout << " Make: " << car1.GetMake() << ' '
<< " Model: " << car1.GetMode() << ' '
<< " Year: " << car1.GetYear() << ' ';
cout << "Car2: ";
cout << " Make: " << car2.GetMake() << ' '
<< " Model: " << car2.GetMode() << ' '
<< " Year: " << car2.GetYear() << ' ';
cout << "Car1: ";
cout << " Make: " << car3.GetMake() << ' '
<< " Model: " << car3.GetMode() << ' '
<< " Year: " << car3.GetYear() << ' ';
}
Explanation / Answer
please rate - thanks
your problem is all parameters should be call by value, not call by reference. (get rid of the &)
I fixed your accelerate and decelerate
but sorry, I don't know how to use multiple files, so this is all 1 file--it runs fine
// The class definition for CAR.
#include <iostream>
#include<string>
using namespace std;
class Car
{
public:
Car(string make,string model,int y=2001); //constructor with three prameters
//constructor with two parameter
string GetMake();
string GetMode();
int GetYear();
int GetSpeed();
bool SetValue(string make,string model,int y); // set the fraction's value through parameters
void Display(); // display output
bool Accelerate(char c); //
bool Brake(char c);
private:
string carmake;
string carmodel ;
int carspeed;
int year;
};
Car::Car(string make,string model,int y)
//constructor with three prameters
{
carmake=make;
carmodel=model;
carspeed=0;
if ( y<0)
year=2010;
else
year=y;
}
string Car::GetMake()
{
return carmake;
}
string Car::GetMode()
{
return carmodel;
}
int Car::GetYear()
{
return year;
}
int Car::GetSpeed()
{
return carspeed;
}
bool Car::SetValue(string make,string model,int y)
{
if(y<0)
{
carmake=make;
carmodel=model;
year=y;
return true;
}
else
return false;
}
void Car::Display()
{
//cout<<"Your car is a "<<year <<carmodel <<carmake<<endl;
//cout<< "And it is currently going:"<<carspeed<<"MPH";
}
bool Car::Accelerate(char c)
{
if(c=='h'||c=='H')
carspeed+=10;
else if(c=='m'||c=='M')
carspeed+=5;
else if(c=='l'||c=='L')
carspeed+=1;
else
return false;
return true;
}
bool Car::Brake(char c)
{
if(c=='h'||c=='H'&& carspeed>10)
carspeed-=10;
else if((c=='m')||(c=='M') && (carspeed>5))
carspeed-=5;
else if((c=='l')||(c=='L')&&(carspeed>1))
carspeed-=1;
else
return false;
return true;
}
int main()
{
Car car1("Ford", "Crown Victoria", 1997);
Car car2("Chevrolet", "Camaro");
Car car3("Hyundai", "Sonata", -15);
cout << " *** Displaying each car's stats ";
cout << "Car1: ";
car1.Display();
cout << " Car2: ";
car2.Display();
cout << " Car3: ";
car3.Display();
cout << " *** Accelerating car 3 several times: ";
car3.Accelerate('h'); // accelerate hard
cout << "Car3 speed: " << car3.GetSpeed() << ' ';
car3.Accelerate('M'); // accelerate medium
cout << "Car3 speed: " << car3.GetSpeed() << ' ';
car3.Accelerate('L'); // accelerate low
cout << "Car3 speed: " << car3.GetSpeed() << ' ';
car3.Accelerate('L'); // accelerate low
cout << "Car3 speed: " << car3.GetSpeed() << ' ';
car3.Accelerate('Z'); // accelerate with invalid level
cout << "Car3 speed: " << car3.GetSpeed() << ' ';
cout << " *** Resetting car make/models ";
car1.SetValue("Flinstones", "Rock Car", -2100);
car3.SetValue("Toyota", "Camry", 2005);
cout << "Car1: ";
car1.Display();
cout << " Car3: ";
car3.Display();
cout << " *** Decelerating car3 ";
car3.Brake('m');
cout << "Car3 speed: " << car3.GetSpeed() << ' ';
car3.Brake('L');
cout << "Car3 speed: " << car3.GetSpeed() << ' ';
car3.Brake('l');
cout << "Car3 speed: " << car3.GetSpeed() << ' ';
car3.Brake('M');
cout << "Car3 speed: " << car3.GetSpeed() << ' ';
car3.Brake('A');
cout << "Car3 speed: " << car3.GetSpeed() << ' ';
car3.Brake('H');
cout << "Car3 speed: " << car3.GetSpeed() << ' ';
cout << " *** Calling accessors ";
cout << "Car1: ";
cout << " Make: " << car1.GetMake() << ' '
<< " Model: " << car1.GetMode() << ' '
<< " Year: " << car1.GetYear() << ' ';
cout << "Car2: ";
cout << " Make: " << car2.GetMake() << ' '
<< " Model: " << car2.GetMode() << ' '
<< " Year: " << car2.GetYear() << ' ';
cout << "Car1: ";
cout << " Make: " << car3.GetMake() << ' '
<< " Model: " << car3.GetMode() << ' '
<< " Year: " << car3.GetYear() << ' ';
system("pause");
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.