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 |
|
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 |
|