					// Kapitel 8 - Programm 1 - VERERB1.CPP
#include <iostream.h>

class Vehikel
{
protected:
   int Raeder;
   double Gewicht;
public:
   void Initialisiere(int EinRaeder, double EinGewicht);
   int HoleRaeder(void)       {return Raeder;}
   double HoleGewicht(void)	{return Gewicht;}
   double Radlast(void)       {return Gewicht/Raeder;}
};



class Auto : public Vehikel
{
   int Passagieranzahl;
public:
   void Initialisiere(int EinRaeder, double EinGewicht, int Leute = 4);
   int Passagiere(void)        {return Passagieranzahl;}
};



class Laster : public Vehikel
{
   int Passagieranzahl;
   double Ladung;
public:
   void InitLaster(int WieViele = 2, double MaxLadung = 10000.0);
   double Effizienz(void);
   int Passagiere(void)        {return Passagieranzahl;}
};



int main()
{
Vehikel Hochrad;

   Hochrad.Initialisiere(1, 5.7);
   cout << "Das Hochrad hat " <<
					  Hochrad.HoleRaeder() << " Rad.\n";
   cout << "Die Radlast des Hochrades betraegt " <<
	   Hochrad.Radlast() << " kg auf dem einzigen Rad.\n";
   cout << "Das Hochrad wiegt " <<
				     Hochrad.HoleGewicht() << " kg.\n\n";

Auto Sedan;

   Sedan.Initialisiere(4, 1600.0, 5);
   cout << "Der Sedan fuehrt " << Sedan.Passagiere() <<
							" Passagiere mit sich.\n";
   cout << "Der Sedan wiegt " << Sedan.HoleGewicht() << " kg.\n";
   cout << "Die Radlast des Sedan ist " <<
			  Sedan.Radlast() << " kg pro Rad.\n\n";

Laster Sattelschlepper;

   Sattelschlepper.Initialisiere(18, 5700.0);
   Sattelschlepper.InitLaster(1, 15300.0);
   cout << "Der Sattelschlepper wiegt " << Sattelschlepper.HoleGewicht() << " kg.\n";
   cout << "Die Effizienz des Sattelschleppers ist " <<
			  100.0 * Sattelschlepper.Effizienz() << " Prozent.\n";

   return 0;
}



		  // Initialisiere mit den Paramtern
void Vehikel::Initialisiere(int EinRaeder, double EinGewicht)
{
   Raeder = EinRaeder;
   Gewicht = EinGewicht;
}



void Auto::Initialisiere(int EinRaeder, double EinGewicht, int Leute)
{
   Passagieranzahl = Leute;
   Raeder = EinRaeder;
   Gewicht = EinGewicht;
}



void Laster::InitLaster(int WieViele, double MaxLadung)
{
   Passagieranzahl = WieViele;
   Ladung = MaxLadung;
}



double Laster::Effizienz(void)
{
   return Ladung / (Ladung + Gewicht);
}


// Ergebnis beim Ausführen
//
// Das Hochrad hat 1 Rad.
// Die Radlast des Hochrades betraegt 5.7 kg auf den einzigen Rad.
// Das Hochrad wiegt 6.7 kg.
//
// Der Sedan fuehrt 5 Passagiere mit sich.
// Der Sedan wiegt 1600 kg.
// Die Radlast des Sedan ist 400 kg pro Rad.
//
// Der Sattelschlepper wiegt 5700 kg.
// Die Effizienz des Sattelschleppers ist 72.8571 Prozent.
