Массив машин, абстрактный класс Transport, грузоподъемность

Создать абстрактный класс 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;
}

Было ж уже.
Абстрактный класс - #2 от пользователя AlexP
Думаю лучше начать с этого )

так ну это сделал. А что дальше то?

Где?)
Тут нет этого.

И поэтому невозможно например

Не уверен что тут что-то правильно

#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;
}

Так и в чем смысл если для каждого типа свои функции сделали?

Смотрите пример выше и например Виртуальные функции и Полиморфизм в С++ | Уроки С++ - Ravesli

Для ввода данных например можно сделать ввод общих данных в базовом классе, а в грузовике, мотоцикле переопределить эту функцию, вызвать родительскую и добавить ввод прицепа/коляски.
И для вывода инфы аналогично.

Хотя может не только прицепа/коляски, тут вроде хотят, чтоб в базовом только грузоподъемность была. В целом странноватое задание, можно было бы что-нибудь получше придумать про полиморфизм )

В общем видимо нужны такие функции в нем:

int getCapacity();

void input();
void print();