Napisałem program z dziedziczeniem funkcji, mam problem, gdy dodaje obiekty do kolejki, chce je wyświetlić posortowane, na podstawie spalania pojazdów, wykomentowane jest wyświetlanie, mógłby ktoś zajrzeć w ten kod?
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <list>
using namespace std;
class pojazd{
protected:
double spal;
public:
virtual void spalanie (){}
virtual ~pojazd(){}
virtual void przypisz(const double &p1, const double &p2){}
virtual void nazwa1(){}
friend bool operator < (const pojazd & P1, const pojazd & P2)
{
return (P1.spal < P2.spal);
}
};
class motor: public pojazd{
double pojemnosc;
double waga;
public:
motor(){}
motor(const double &poj, const double &wag){pojemnosc = poj; waga = wag;}
~motor(){}
void spalanie()
{
spal = (waga + pojemnosc)/60;
}
void nazwa()
{
cout<<" - MOTOR ->"<<spal<<endl;
}
virtual void przypisz(const double &p1, const double &p2)
{
pojemnosc = p1;
waga = p2;
}
};
class samochod: public pojazd{
double cena;
double v_max;
public:
samochod(){}
samochod(const double &V, const double &C){cena = C; v_max = V;}
~samochod(){}
void spalanie()
{
spal = cena/v_max/30;
}
void nazwa()
{
cout<<" - SAMOCHOD ->"<<spal<<endl;
}
virtual void przypisz(const double &p1, const double &p2)
{
cena = p1;
v_max = p2;
}
};
class samolot: public pojazd{
double ladownosc;
double przyspieszenie;
public:
samolot(){}
samolot(const double &lad, const double &przysp){ladownosc = lad; przyspieszenie = przysp;}
~samolot(){}
void spalanie()
{
spal = (ladownosc * 500)/przyspieszenie;
}
void nazwa()
{
cout<<" - SAMOLOT ->"<<spal<<endl;
}
virtual void przypisz(const double &p1, const double &p2)
{
ladownosc = p1;
przyspieszenie = p2;
}
};
void MENU()
{
cout <<"..::MENU::.."<<endl;
cout <<"1 - Dodaj obiekt"<<endl;
cout <<"2 - Posortuj obiekty"<<endl;
cout <<"3 - Pokaz wyniki sortowania"<<endl;
cout <<"(opcja)-> ";
}
int main (void)
{
int ktory,i;
double param1, param2;
list<pojazd*> cos;
motor *moto;
samochod *car;
samolot *plane;
int opcja;
MENU();
cin >>opcja;
while(opcja!=0)
{
switch(opcja)
{
case 1 :
cout <<"Ktory obiekt :\n 1 - motor \n 2 - samochod \n 3 - samolot "<<endl;
cin >>ktory;
if (ktory == 1)
{
moto = new motor;
cout <<"Podaj pojemnosc -> ";
cin >>param1;
cout <<"Podaj mase -> ";
cin >>param2;
moto->przypisz(param1,param2);
moto->spalanie();
cos.push_back(moto);
}
else if (ktory == 2)
{
car = new samochod;
cout <<"Podaj cene -> ";
cin >>param1;
cout <<"Podaj predkosc max -> ";
cin >>param2;
car->przypisz(param1,param2);
car->spalanie();
cos.push_back(car);
}
else if (ktory == 3)
{
plane = new samolot;
cout <<"Podaj ladownosc -> ";
cin >>param1;
cout <<"Podaj przyspieszenie -> ";
cin >>param2;
plane->przypisz(param1,param2);
plane->spalanie();
cos.push_back(plane);
}
break;
case 2 :
cos.sort();
break;
case 3 :
cout <<"Kazdy pojazd pali odpowiednio (od najmniejszego do najwiekszego): "<<endl;
//list<pojazd*>::iterator Iter = cos.begin();
// for(;Iter != cos.end(); Iter++)
// Iter->spalanie();
break;
case 0 :
break;
default :
cout <<"Nie ma takiej opcji!!!"<<endl;
break;
}
MENU();
cin >>opcja;
}
getchar();
return 0;
}