Mihai Sprinceana
Un forum de programare cu de toate. Va astept sa va inscrieti si sa deveniti moderatori. Oricine este binevenit aici sa se inscrie si sa aiba acces la informatie free! Fiecare este liber sa adauge proiecte programe free etc. Ajutati acest forum sa devina o comunitate puternica unde fiecare invata de la fiecare! Tot ce trebuie sa faceti este sa va inregistrati si fiecare contributie se poate dovedi utila in timp! Forumul este free informatia free dk aveti timp liber ajutati si pe ceilalti si invatati si voi in acelasi timp! Haideti sa facem ceva pt.a ne ajuta intre noi! Cititi regulament postare forum inainte de a posta!
Lista Forumurilor Pe Tematici
Mihai Sprinceana | Inregistrare | Login

POZE MIHAI SPRINCEANA

Nu sunteti logat.
Nou pe simpatie:
Mada_m99
Femeie
23 ani
Bacau
cauta Barbat
24 - 53 ani
Mihai Sprinceana / C++ / POO- Clasa corpuri Moderat de Alric2rei, Conan, cosmy, fireratbat, profu.info, sade5000
Autor
Mesaj Pagini: 1
Conan
Moderator

Inregistrat: acum 17 ani
Postari: 198
/*Implementati clasa corpuri care contine 2 functii virtuale pt.volum si
arie.Din clasa corpuri se vor deriva clasele cilindru,con,trunchi de con si
sfera.Pentru fiecare clasa derivata se vor redefini functiile arie si volum.
Se cere sa se calculeze cu ajutorul formulelor matematice aria laterala,totala
,volumul pt. fiecare caz in parte*/

#include<conio.h>
#include<iostream.h>

class corpuri //clasa abstracta datorita fctiei virt.pure
{public:
//functie virtuala
//double x,y,z; //raza cercului
//int x,y;//coordonatele centrului cercului
virtual double aria()=0;//functie virtuala pura
virtual double volum()=0;//functie virtual pura
};

//definim clasa derivata cilindru a clasei de baza corpuri
class cilindru:public corpuri
{double raza;//raza
double generatoare; //generatoarea cilindrului
   public:
   cilindru(double,double);
  void setraza(double);
  double getraza();
  double aria_bazei();
  double aria_laterala();
  double aria_totala();
  virtual double volum();
  virtual double aria(){cout<<"\n aria totala a cilindrului\n:";
  return cilindru::aria_totala();}
  virtual void afisare();
};

// functie care seteaza raza
void cilindru::setraza(double R)
{raza=R;
}

//functie care returneaza raza cilindrului
double cilindru::getraza()
{return raza;
}

//definirea constructorului cu parametru pentru clasa derivata cilindru
cilindru::cilindru(double r,double g)
{
generatoare=g;
setraza(r);//sau raza=r
}

//functia calculeaza aria bazei pentru un cilindru
double cilindru::aria_bazei()
{return 3.14*raza*raza;
}

//functia calculeaza aria laterala a unui cilindru
double cilindru::aria_laterala()
{return 2*3.14*raza*generatoare;
}

//functia calculeaza aria totala a unui cilindru
double cilindru::aria_totala()
{return 2*3.14*(raza+generatoare);
}

//functia calculeaza volumul unui cilindru
double cilindru::volum()
{return 3.14*raza*raza*generatoare;
}

//functia de afisare
void cilindru::afisare()
{cout<<"\nForma figurii este-cilindru:";
}

//definim clasa derivata con a clasei de baza corpuri
class con:public corpuri
{double raza; //raza cercului
double generatoare; //generatoarea cilindrului
double inaltimea;//inaltimea conului
  public:
  con(double,double,double);
  double aria_bazei();
  double aria_laterala();
  double aria_totala();
  virtual double volum();
  virtual double aria()
  {cout<<"\naria totala a conului\n";return con::aria_totala();}
  virtual void afisare();
};

//definirea constructorului cu parametru pentru clasa derivata con
con::con(double r,double g,double i)
{
raza=r;
generatoare=g;
inaltimea=i;
}

//functia calculeaza aria bazei unui con
double con::aria_bazei()
{return 3.14*raza*raza;
}

//functia calculeaza aria laterala a unui con
double con::aria_laterala()
{return 3.14*raza*generatoare;
}

//functia calculeaza aria totala a unui con
double con::aria_totala()
{return 3.14*raza*(raza+generatoare);
}

//functia calculeaza volumul unui con
double con::volum()
{return (3.14*raza*raza*inaltimea)/3;
}

//functia de afisare
void con::afisare()
{cout<<"\nForma figurii este-con";
}

//definim clasa derivata trunchi de con a clasei de baza corpuri
class trunchi_de_con:public corpuri
{double raza_mare; //raza mare
double raza_mica;//raza mica
double generatoare; //generatoarea cilindrului
double inaltimea;//inaltimea conului
  public:
  trunchi_de_con(double,double,double,double);
  double aria_bazei_mari();
  double aria_bazei_mici();
  double aria_laterala();
  double aria_totala();
  virtual double volum();
  virtual double aria()
  {cout<<"\naria totala a trunchiului de con:\n";
  return trunchi_de_con::aria_totala();}
  virtual void afisare();
};

//definirea constructorului cu parametru pentru clasa derivata trunchi_de_con
trunchi_de_con::trunchi_de_con(double rmare,double rmica,double gen,double in)
{raza_mare=rmare;
raza_mica=rmica;
generatoare=gen;
inaltimea=in;
}

//functia calculeaza aria bazei mici a unui trunchi de con
double trunchi_de_con::aria_bazei_mici()
{return 3.14*raza_mica*raza_mica;
}

//functia calculeaza aria bazei mari a unui trunchi de con
double trunchi_de_con::aria_bazei_mari()
{return 3.14*raza_mare*raza_mare;
}

//functia calculeaza aria laterala a unui trunchi de con
double trunchi_de_con::aria_laterala()
{return 3.14*generatoare*(raza_mare+raza_mica);
}

//functia calculeaza aria totala a unui trunchi de con
double trunchi_de_con::aria_totala()
{return (3.14*generatoare*(raza_mare+raza_mica))+(3.14*raza_mica*raza_mica)+(3.14*raza_mare*raza_mare);
}

//functia calculeaza volumul unui trunchi de con
double trunchi_de_con::volum()
{return (3.14*inaltimea/3)*(raza_mare*raza_mare+raza_mica*raza_mica+raza_mare*raza_mica);
}

//functia de afisare
void trunchi_de_con::afisare()
{cout<<"\nForma figurii este-trunchi de con";
}

//definim clasa derivata sfera a clasei de baza corpuri
class sfera:public corpuri
{double raza;
  public:
  sfera(double);
  //double aria();
  virtual double volum();
  virtual double aria();
  virtual void afisare();
};

//definirea constructorului cu parametru pentru clasa derivata sfera
sfera::sfera(double r)
{
raza=r;
}

//functia de calcul a ariei sferei
double sfera::aria()
{return 4*3.14*raza*raza;
}

//functia de calcul a volumului sferei
double sfera::volum()
{return (4*3.14*raza*raza*raza)/3;
}

//functia de afisare
void sfera::afisare()
{cout<<"\nForma figurii este-sfera";
}

//Programul principal
void main()
{clrscr();
corpuri *ptr; //Obs.Clasa abstracta nu are obiecte instantiate
cilindru ob1(2,3);
con ob2(1,2,3);
trunchi_de_con ob3(3,4,5,6);
sfera ob4(3);
ob1.afisare();
ptr=&ob1;
cout<<"\nAria este "<<ptr->aria()<<"\n";
cout<<"\nVolumul este "<<ptr->volum()<<"\n";
ob2.afisare();
ptr=&ob2;
cout<<"\nAria este "<<ptr->aria()<<"\n";
cout<<"\nVolumul este "<<ptr->volum()<<"\n";
ob3.afisare();
ptr=&ob3;
cout<<"\nAria este "<<ptr->aria()<<"\n";
cout<<"\nVolumul este "<<ptr->volum()<<"\n";
ob4.afisare();
ptr=&ob4;
cout<<"\nAria este "<<ptr->aria()<<"\n";
cout<<"\nVolumul este "<<ptr->volum()<<"\n";
getch();
}

/*observatie:daca in clasa de baza (clasa corpuri) am definit 2 functii virtuale (volum si aria),
devenind astfel o clasa abstracta, in celelalte clase derivate va trebui sa redefinesti acele functii
(atat functia arie cat si functia volum)
*/


pus acum 16 ani
   
Pagini: 1  

Mergi la