Создать абстрактный класс Transport с функциями, позволяющими вывести на экран информацию о транспортном средстве, а также определить грузоподъемность транспортного средства.
Создать производные классы: Car(марка, номер, скорость, грузоподъемность), Motorbike(марка, номер, скорость, грузоподъемность, наличие коляски(если коляска отсутствует, то грузоподъемность равно 0)), Truck(марка, номер, скорость, грузоподъемность, наличие прицепа(если есть прицеп, то грузоподъемность увеличить в два раза)).
Создать базу (массив) из n машин, вывести полную информацию из базы на экран, а также организовать поиск машин, удовлетворяющих требованиям грузоподъемности.
Хотелось бы узнать всего ли тут хватает , а если нет то что можно добавить?
#include<iostream>
#include<string>
#include<Windows.h>
using namespace std;
class Transport// Абстрактный класс
{
public:
/*virtual void cars()=0;// Сам
virtual void moto()=0;// не понял
virtual void trucks()=0;// для чего это
*/
char Stamp[50];// Марка
char N[30];// Номер
int s;// Скорость
int m;// Грузоподъемность
int k;// Наличие коляски
int p;// Наличие прицепа
};
class Car: public Transport
{
public:
/*
char Stamp[50];// Марка
char N[40]; // Номер
int s;// Скорость
int m;// Грузоподъемность
*/
void cars()
{
cout<<"Введите марку автомобиля:";
cin>>Stamp;
cout<<"Введите номер автомобиля:";
cin>>N;
cout<<"Введите скорость автомобиля:";
cin>>s;
cout<<"Введите грузоподъемность автомобиля:";
cin>>m;
}
};
class Motobike: public Transport
{
public:
/*
char Stamp[50];// Марка
char N[30];// Номер
int s;// Скорость
int m;// Грузоподъемность
int k;// Наличие коляски
*/
void moto()
{
cout<<"Введите марку Мотоцикла:";
cin>>Stamp;
cout<<"Введите номер Мотоцикла:";
cin>>N;
cout<<"Введите скорость Мотоцикла:";
cin>>s;
cout<<"Введите грузоподъемность Мотоцикла:";
cin>>m;
cout<<"Имеется ли коляска:"<<endl;
cout<<"1.Да"<<endl;
cout<<"2.Нет"<<endl;
cout<<"Введите вариант ответа:";cin>>k;
if(k=1)
cout<<"Коляска имеется"<<endl;
else
cout<<"Коляска отсутствует"<<endl;
}
};
class Truck: public Transport
{
public:
/*
char Stamp[50];// Марка
char N[30];// Номер
int s;// Скорость
int m;// Грузоподъемность
int p;// Наличие прицепа
*/
void trucks()
{
cout<<"Введите марку Грузовика:";
cin>>Stamp;
cout<<"Введите номер Грузовика:";
cin>>N;
cout<<"Введите скорость Грузовика:";
cin>>s;
cout<<"Введите грузоподъемность Грузовика:";
cin>>m;
cout<<"Имеется ли Прицеп:"<<endl;
cout<<"1.Да"<<endl;
cout<<"2.Нет"<<endl;
cout<<"Введите вариант ответа:";
cin>>p;
if(p=1)
{
cout<<"Прицеп имеется"<<endl;
m=m*2;
cout<<"Грузоподъемность ="<<m<<endl;
}
else
cout<<"Прицеп отсутствует"<<endl;
}
};
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int n;
cout <<"Введите сколько есть автомобилей: "<<endl;
cin >> n;
Car *tran=new Car[n];
for(int i=0; i<n; i++){
tran[i].cars();
}
cout <<"Введите сколько есть мотоциклов: "<<endl;
cin >>n;
Motobike *moto=new Motobike[n];
for(int i=0; i<n; i++){
moto[i].moto();
}
cout <<"Введите сколько есть грузовиков: "<<endl;
cin >> n;
Truck *tr= new Truck[n];
for(int i=0; i<n; i++){
tr[i].trucks();
}
delete[] tran;
delete[] moto;
delete[] tr;
/*
cout<<"Введите грузоподъемность автомобиля:"<<endl;
cin>>n;
mas*mass=new mas[n];
for(int i=0;i<n;i++)
{
if(n>=m)
{
cout<<Stamp<<endl;
}
else
{
cout<<"Такого автомобиля нет"<<endl;
}
}
*/
system("pause");
return 0;
}
Transport* transports = new Transport[n];
transports[0] = new Car();
transports[1] = new Truck();
...
for (int i = 0; i < n; i++) {
cout << transports[i]->model();
}
а не отдельный массив на каждый тип.
Смотрите про полиморфизм.
(функциям/классам можно не быть абстрактными, главное, чтоб функции были в базовом классе, объявление их абстрактными через = 0 просто может дать некоторое удобство для программистов, когда в базовом классе невозможно их реализовать, чтоб точно не забыть реализовать их в классах-наследниках и т.д.)
Создать абстрактный класс Transport с функциями, позволяющими вывести на экран информацию о транспортном средстве, а также определить грузоподъемность транспортного средства.
Создать производные классы: Car(марка, номер, скорость, грузоподъемность), Motorbike(марка, номер, скорость, грузоподъемность, наличие коляски(если коляска отсутствует, то грузоподъемность равно 0)), Truck(марка, номер, скорость, грузоподъемность, наличие прицепа(если есть прицеп, то грузоподъемность увеличить в два раза)).
Создать базу (массив) из n машин, вывести полную информацию из базы на экран,
Как сделать следующею часть алгоритма?
( а также организовать поиск машин, удовлетворяющих требованиям грузоподъемности.)
#include<iostream>
#include<string>
#include<Windows.h>
using namespace std;
class Transport// Абстрактный класс
{
public:
char Stamp[50];// Марка
char N[30];// Номер
int s;// Скорость
int m;// Грузоподъемность
int k;// Наличие коляски
int p;// Наличие прицепа
};
class Car: public Transport
{
public:
/*
char Stamp[50];// Марка
char N[40]; // Номер
int s;// Скорость
int m;// Грузоподъемность
*/
void cars()
{
cout<<"Введите марку автомобиля:";
cin>>Stamp;
cout<<"Введите номер автомобиля:";
cin>>N;
cout<<"Введите скорость автомобиля:";
cin>>s;
cout<<"Введите грузоподъемность автомобиля:";
cin>>m;
}
};
class Motobike: public Transport
{
public:
/*
char Stamp[50];// Марка
char N[30];// Номер
int s;// Скорость
int m;// Грузоподъемность
int k;// Наличие коляски
*/
void moto()
{
cout<<"Введите марку Мотоцикла:";
cin>>Stamp;
cout<<"Введите номер Мотоцикла:";
cin>>N;
cout<<"Введите скорость Мотоцикла:";
cin>>s;
cout<<"Введите грузоподъемность Мотоцикла:";
cin>>m;
cout<<"Имеется ли коляска:"<<endl;
cout<<"1.Да"<<endl;
cout<<"2.Нет"<<endl;
cout<<"Введите вариант ответа:";cin>>k;
if(k=1)
cout<<"Коляска имеется"<<endl;
else
cout<<"Коляска отсутствует"<<endl;
}
};
class Truck: public Transport
{
public:
/*
char Stamp[50];// Марка
char N[30];// Номер
int s;// Скорость
int m;// Грузоподъемность
int p;// Наличие прицепа
*/
void trucks()
{
cout<<"Введите марку Грузовика:";
cin>>Stamp;
cout<<"Введите номер Грузовика:";
cin>>N;
cout<<"Введите скорость Грузовика:";
cin>>s;
cout<<"Введите грузоподъемность Грузовика:";
cin>>m;
cout<<"Имеется ли Прицеп:"<<endl;
cout<<"1.Да"<<endl;
cout<<"2.Нет"<<endl;
cout<<"Введите вариант ответа:";
cin>>p;
if(p=1)
{
cout<<"Прицеп имеется"<<endl;
m=m*2;
cout<<"Грузоподъемность ="<<m<<endl;
}
else
cout<<"Прицеп отсутствует"<<endl;
}
};
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int mass;
int n;
cout <<"Введите сколько есть автомобилей: "<<endl;
cin >> n;
Car *tran=new Car[n];
for(int i=0; i<n; i++){
tran[i].cars();
}
cout <<"Введите сколько есть мотоциклов: "<<endl;
cin >>n;
Motobike *moto=new Motobike[n];
for(int i=0; i<n; i++){
moto[i].moto();
}
cout <<"Введите сколько есть грузовиков: "<<endl;
cin >> n;
Truck *tr= new Truck[n];
for(int i=0; i<n; i++){
tr[i].trucks();
}
delete[] tran;
delete[] moto;
delete[] tr;
cout<<"Введите грузоподъемность:"<<endl;
cin>>mass;
for(int i=0;i<n;i++)
{
if(mass==m)
{
cout<<<<endl;
}
else
{
cout<<"Такого автомобиля нет"<<endl;
}
}
system("pause");
return 0;
}
#include<iostream>
#include<string>
#include<Windows.h>
using namespace std;
class Transport// Абстрактный класс
{
virtual void cars()=0;
virtual void moto()=0;
virtual void trucks()=0;
public:
char Stamp[50];// Марка
char N[30];// Номер
int s;// Скорость
int m;// Грузоподъемность
int k;// Наличие коляски
int p;// Наличие прицепа
};
class Car: public Transport
{
public:
/*
char Stamp[50];// Марка
char N[40]; // Номер
int s;// Скорость
int m;// Грузоподъемность
*/
void cars()
{
cout<<"Введите марку автомобиля:";
cin>>Stamp;
cout<<"Введите номер автомобиля:";
cin>>N;
cout<<"Введите скорость автомобиля:";
cin>>s;
cout<<"Введите грузоподъемность автомобиля:";
cin>>m;
}
};
class Motobike: public Transport
{
public:
/*
char Stamp[50];// Марка
char N[30];// Номер
int s;// Скорость
int m;// Грузоподъемность
int k;// Наличие коляски
*/
void moto()
{
cout<<"Введите марку Мотоцикла:";
cin>>Stamp;
cout<<"Введите номер Мотоцикла:";
cin>>N;
cout<<"Введите скорость Мотоцикла:";
cin>>s;
cout<<"Введите грузоподъемность Мотоцикла:";
cin>>m;
cout<<"Имеется ли коляска:"<<endl;
cout<<"1.Да"<<endl;
cout<<"2.Нет"<<endl;
cout<<"Введите вариант ответа:";cin>>k;
if(k=1)
cout<<"Коляска имеется"<<endl;
else
cout<<"Коляска отсутствует"<<endl;
}
};
class Truck: public Transport
{
public:
/*
char Stamp[50];// Марка
char N[30];// Номер
int s;// Скорость
int m;// Грузоподъемность
int p;// Наличие прицепа
*/
void trucks()
{
cout<<"Введите марку Грузовика:";
cin>>Stamp;
cout<<"Введите номер Грузовика:";
cin>>N;
cout<<"Введите скорость Грузовика:";
cin>>s;
cout<<"Введите грузоподъемность Грузовика:";
cin>>m;
cout<<"Имеется ли Прицеп:"<<endl;
cout<<"1.Да"<<endl;
cout<<"2.Нет"<<endl;
cout<<"Введите вариант ответа:";
cin>>p;
if(p=1)
{
cout<<"Прицеп имеется"<<endl;
m=m*2;
cout<<"Грузоподъемность ="<<m<<endl;
}
else
cout<<"Прицеп отсутствует"<<endl;
}
};
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int mass;
int n;
cout <<"Введите сколько есть автомобилей: "<<endl;
cin >> n;
Car *tran=new Car[n];
for(int i=0; i<n; i++){
tran[i].cars();
}
cout <<"Введите сколько есть мотоциклов: "<<endl;
cin >>n;
Motobike *moto=new Motobike[n];
for(int i=0; i<n; i++){
moto[i].moto();
}
cout <<"Введите сколько есть грузовиков: "<<endl;
cin >> n;
Truck *tr= new Truck[n];
for(int i=0; i<n; i++){
tr[i].trucks();
}
delete[] tran;
delete[] moto;
delete[] tr;
/*
cout<<"Введите грузоподъемность:"<<endl;
cin>>mass;
for(int i=0;i<n;i++)
{
if(mass==m)
{
cout<<<<endl;
}
else
{
cout<<"Такого автомобиля нет"<<endl;
}
}
*/
Transport* transports = new Transport[n];
transports[0] = new Car();
transports[1] = new Truck();
transports[2] = new Motobike();
for (int i = 0; i < n; i++) {
cout << transports[i]->model();
}
system("pause");
return 0;
}
Для ввода данных например можно сделать ввод общих данных в базовом классе, а в грузовике, мотоцикле переопределить эту функцию, вызвать родительскую и добавить ввод прицепа/коляски.
И для вывода инфы аналогично.
Хотя может не только прицепа/коляски, тут вроде хотят, чтоб в базовом только грузоподъемность была. В целом странноватое задание, можно было бы что-нибудь получше придумать про полиморфизм )