Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<cstdio>
- #include<cmath>
- #define PI 3.141592653589793238462643383279
- using namespace std;
- class FigureGeo{
- public:
- virtual void printValues() = 0;
- virtual void printProperties() = 0;
- };
- class Figure2D : public FigureGeo{
- protected:
- double aire;
- };
- class Figure3D : public FigureGeo{
- protected:
- double volume;
- public:
- void printValues(){ // Puisque toutes les figures 3D output seulement le volume, on peut définir cette méthode ici et ne plus en reparler.
- printf("Volume = %.3f\n", volume);
- }
- };
- class Carre : public Figure2D{
- private:
- double longueur, perimetre, diagonale;
- public:
- Carre(){}
- Carre(double l){
- setVal(l);
- }
- void setVal(double l){
- longueur = l;
- perimetre = 4 * longueur;
- aire = pow(longueur, 2);
- diagonale = longueur * sqrt(2);
- }
- void printValues(){
- printf("Périmètre = %.3f\tAire = %.3f\tDiagonale = %.3f\n", perimetre, aire, diagonale);
- }
- void printProperties(){
- printf("Carré de longueur %.3f\n", longueur);
- }
- };
- class Rectangle : public Figure2D{
- private:
- double longueur, perimetre, largeur;
- public:
- Rectangle(){}
- Rectangle(double l, double L){
- setVal(l, L);
- }
- void setVal(double l, double L){
- longueur = l;
- largeur = L;
- perimetre = 2 * (longueur + largeur);
- aire = largeur * longueur;
- }
- void printValues(){
- printf("Périmètre = %.3f\tAire = %.3f\n", perimetre, aire);
- }
- void printProperties(){
- printf("Rectangle de longueur %.3f et de largeur %.3f\n", longueur, largeur);
- }
- };
- class Parallelogramme : public Figure2D{
- private:
- double base, hauteur;
- public:
- Parallelogramme(){}
- Parallelogramme(double b, double h){
- setVal(b, h);
- }
- void setVal(double b, double h){
- base = b;
- hauteur = h;
- aire = base * hauteur;
- }
- void printValues(){
- printf("Aire = %.3f\n", aire);
- }
- void printProperties(){
- printf("Parallélogramme de base %.3f et de hauteur %.3f\n", base, hauteur);
- }
- };
- class Trapeze : public Figure2D{
- private:
- double base, Base, hauteur;
- public:
- Trapeze(){}
- Trapeze(double b, double B, double h){
- setVal(b, B, h);
- }
- void setVal(double b, double B, double h){
- base = b;
- Base = B;
- hauteur = h;
- aire = (Base + base) * hauteur / 2;
- }
- void printValues(){
- printf("Aire = %.3f\n", aire);
- }
- void printProperties(){
- printf("Trapèze de petite base %.3f, de grande base %.3f et de hauteur %.3f\n", base, Base, hauteur);
- }
- };
- class Triangle : public Figure2D{
- private:
- double base, hauteur;
- public:
- Triangle(){}
- Triangle(double b, double h){
- setVal(b, h);
- }
- void setVal(double b, double h){
- base = b;
- hauteur = h;
- aire = base * hauteur / 2;
- }
- void printValues(){
- printf("Aire = %.3f\n", aire);
- }
- void printProperties(){
- printf("Triangle de base %.3f et de hauteur %.3f\n", base, hauteur);
- }
- };
- class TriangleEqui : public Figure2D{
- private:
- double base, hauteur, perimetre;
- public:
- TriangleEqui(){}
- TriangleEqui(double b){
- setVal(b);
- }
- void setVal(double b){
- base = b;
- perimetre = 3 * base;
- hauteur = base * sqrt(3) / 2;
- aire = pow(base, 2) * sqrt(3) / 4;
- }
- void printValues(){
- printf("Périmètre = %.3f\tHauteur = %.3f\tAire = %.3f\n", perimetre, hauteur, aire);
- }
- void printProperties(){
- printf("Triangle équilatéral de base %.3f\n", base);
- }
- };
- class TriangleRecIso : public Figure2D{
- private:
- double base, hauteur, hypotenuse;
- public:
- TriangleRecIso(){}
- TriangleRecIso(double b){
- setVal(b);
- }
- void setVal(double b){
- base = b;
- hauteur = base / sqrt(2);
- hypotenuse = base * sqrt(2);
- aire = pow(base, 2) / 2;
- }
- void printValues(){
- printf("Hypoténuse = %.3f\tHauteur = %.3f\tAire = %.3f\n", hypotenuse, hauteur, aire);
- }
- void printProperties(){
- printf("Triangle rectangle isocèle de base %.3f\n", base);
- }
- };
- class Cercle : public Figure2D{
- private:
- double rayon, perimetre;
- public:
- Cercle(){}
- Cercle(double r){
- setVal(r);
- }
- void setVal(double r){
- rayon = r;
- perimetre = 2 * PI * rayon;
- aire = PI * pow(rayon, 2);
- }
- void printValues(){
- printf("Périmètre = %.3f\tAire = %.3f\n", perimetre, aire);
- }
- void printProperties(){
- printf("Cercle de rayon %.3f\n", rayon);
- }
- };
- class SectAngulaire : public Figure2D{
- private:
- double rayon, angle, longueur;
- public:
- SectAngulaire(){}
- SectAngulaire(double r, double a){
- setVal(r, a);
- }
- void setVal(double r, double a){
- rayon = r;
- angle = a;
- longueur = rayon * angle;
- aire = angle * pow(rayon, 2) / 2;
- }
- void printValues(){
- printf("Longueur = %.3f\tAire = %.3f\n", longueur, aire);
- }
- void printProperties(){
- printf("Secteur angulaire de rayon %.3f et d'angle %.3f radians\n", rayon, angle);
- }
- };
- class ParalleRec : public Figure3D{
- private:
- double longueur, largeur, hauteur;
- public:
- ParalleRec(){}
- ParalleRec(double l, double L, double h){
- setVal(l, L, h);
- }
- void setVal(double l, double L, double h){
- longueur = l;
- largeur = L;
- hauteur = h;
- volume = longueur * largeur * hauteur;
- }
- void printProperties(){
- printf("Parallélépipède rectangle de longueur %.3f, de largeur %.3f et de hauteur %.3f\n", longueur, largeur, hauteur);
- }
- };
- class Sphere : public Figure3D{
- private:
- double rayon;
- public:
- Sphere(){}
- Sphere(double r){
- setVal(r);
- }
- void setVal(double r){
- rayon = r;
- volume = 4 * PI * pow(rayon, 3) / 3;
- }
- void printProperties(){
- printf("Sphere de rayon %.3f\n", rayon);
- }
- };
- class ConeRev : public Figure3D{
- private:
- double surface, hauteur;
- public:
- ConeRev(){}
- ConeRev(double s, double h){
- setVal(s, h);
- }
- void setVal(double s, double h){
- surface = s;
- hauteur = h;
- volume = surface * hauteur / 3;
- }
- void printProperties(){
- printf("Cône de révolution de surface %.3f et de hauteur %.3f\n", surface, hauteur);
- }
- };
- class Pyramide : public Figure3D{
- private:
- double surface, hauteur;
- public:
- Pyramide(){}
- Pyramide(double s, double h){
- setVal(s, h);
- }
- void setVal(double s, double h){
- surface = s;
- hauteur = h;
- volume = surface * hauteur / 3;
- }
- void printProperties(){
- printf("Pyramide de surface %.3f et de hauteur %.3f\n", surface, hauteur);
- }
- };
- int main(){
- Carre a(7);
- Rectangle b(3, 4);
- Parallelogramme c(5, 9);
- Trapeze d(3, 4, 5);
- Triangle e(3, 4);
- TriangleEqui f(6);
- TriangleRecIso g(7);
- Cercle h(4);
- SectAngulaire i(3, 6);
- ParalleRec j(2, 4, 9);
- Sphere k(2);
- ConeRev l(15, 8);
- Pyramide m(13, 6);
- // J'ai placé tous les pointeurs dans un tableau pour être capable de for looper le cout
- FigureGeo * figures[13] = {&a, &b, &c, &d, &e, &f, &g, &h, &i, &j, &k, &l, &m};
- FigureGeo * fig;
- for(int z = 0; z < 13; z++){
- fig = figures[z];
- fig->printProperties();
- fig->printValues();
- printf("\n");
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement