daily pastebin goal
8%
SHARE
TWEET

Untitled

a guest Oct 12th, 2017 53 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include<cstdio>
  2. #include<cmath>
  3.  
  4. #define PI 3.141592653589793238462643383279
  5.  
  6. using namespace std;
  7.  
  8. class FigureGeo{
  9. public:
  10.     virtual void printValues() = 0;
  11.     virtual void printProperties() = 0;
  12.  
  13. };
  14.  
  15. class Figure2D : public FigureGeo{
  16. protected:
  17.     double aire;
  18.  
  19. };
  20.  
  21. class Figure3D : public FigureGeo{
  22. protected:
  23.     double volume;
  24.  
  25. public:
  26.     void printValues(){                     // Puisque toutes les figures 3D output seulement le volume, on peut définir cette méthode ici et ne plus en reparler.
  27.         printf("Volume = %.3f\n", volume);
  28.     }
  29.  
  30. };
  31.  
  32. class Carre : public Figure2D{
  33. private:
  34.     double longueur, perimetre, diagonale;
  35.  
  36. public:
  37.     Carre(){}
  38.  
  39.     Carre(double l){
  40.         setVal(l);
  41.     }
  42.  
  43.     void setVal(double l){
  44.         longueur = l;
  45.         perimetre = 4 * longueur;
  46.         aire = pow(longueur, 2);
  47.         diagonale = longueur * sqrt(2);
  48.  
  49.     }
  50.  
  51.     void printValues(){
  52.         printf("Périmètre = %.3f\tAire = %.3f\tDiagonale = %.3f\n", perimetre, aire, diagonale);
  53.     }
  54.     void printProperties(){
  55.         printf("Carré de longueur %.3f\n", longueur);
  56.     }
  57.  
  58. };
  59.  
  60. class Rectangle : public Figure2D{
  61. private:
  62.     double longueur, perimetre, largeur;
  63.  
  64. public:
  65.     Rectangle(){}
  66.  
  67.     Rectangle(double l, double L){
  68.         setVal(l, L);
  69.     }
  70.  
  71.     void setVal(double l, double L){
  72.         longueur = l;
  73.         largeur = L;
  74.         perimetre = 2 * (longueur + largeur);
  75.         aire = largeur * longueur;
  76.     }
  77.  
  78.     void printValues(){
  79.         printf("Périmètre = %.3f\tAire = %.3f\n", perimetre, aire);
  80.     }
  81.     void printProperties(){
  82.         printf("Rectangle de longueur %.3f et de largeur %.3f\n", longueur, largeur);
  83.     }
  84.  
  85. };
  86.  
  87. class Parallelogramme : public Figure2D{
  88. private:
  89.     double base, hauteur;
  90.  
  91. public:
  92.     Parallelogramme(){}
  93.  
  94.     Parallelogramme(double b, double h){
  95.         setVal(b, h);
  96.     }
  97.  
  98.     void setVal(double b, double h){
  99.         base = b;
  100.         hauteur = h;
  101.         aire = base * hauteur;
  102.     }
  103.  
  104.     void printValues(){
  105.         printf("Aire = %.3f\n", aire);
  106.     }
  107.     void printProperties(){
  108.         printf("Parallélogramme de base %.3f et de hauteur %.3f\n", base, hauteur);
  109.     }
  110.  
  111. };
  112.  
  113. class Trapeze : public Figure2D{
  114. private:
  115.     double base, Base, hauteur;
  116.  
  117. public:
  118.     Trapeze(){}
  119.  
  120.     Trapeze(double b, double B, double h){
  121.         setVal(b, B, h);
  122.     }
  123.  
  124.     void setVal(double b, double B, double h){
  125.         base = b;
  126.         Base = B;
  127.         hauteur = h;
  128.         aire = (Base + base) * hauteur / 2;
  129.     }
  130.  
  131.     void printValues(){
  132.         printf("Aire = %.3f\n", aire);
  133.     }
  134.     void printProperties(){
  135.         printf("Trapèze de petite base %.3f, de grande base %.3f et de hauteur %.3f\n", base, Base, hauteur);
  136.     }
  137.  
  138. };
  139.  
  140. class Triangle : public Figure2D{
  141. private:
  142.     double base, hauteur;
  143.  
  144. public:
  145.     Triangle(){}
  146.  
  147.     Triangle(double b, double h){
  148.         setVal(b, h);
  149.     }
  150.  
  151.     void setVal(double b, double h){
  152.         base = b;
  153.         hauteur = h;
  154.         aire = base * hauteur / 2;
  155.     }
  156.  
  157.     void printValues(){
  158.         printf("Aire = %.3f\n", aire);
  159.     }
  160.     void printProperties(){
  161.         printf("Triangle de base %.3f et de hauteur %.3f\n", base, hauteur);
  162.     }
  163.  
  164. };
  165.  
  166. class TriangleEqui : public Figure2D{
  167. private:
  168.     double base, hauteur, perimetre;
  169.  
  170. public:
  171.     TriangleEqui(){}
  172.  
  173.     TriangleEqui(double b){
  174.         setVal(b);
  175.     }
  176.  
  177.     void setVal(double b){
  178.         base = b;
  179.         perimetre = 3 * base;
  180.         hauteur = base * sqrt(3) / 2;
  181.         aire = pow(base, 2) * sqrt(3) / 4;
  182.     }
  183.  
  184.     void printValues(){
  185.         printf("Périmètre = %.3f\tHauteur = %.3f\tAire = %.3f\n", perimetre, hauteur, aire);
  186.     }
  187.     void printProperties(){
  188.         printf("Triangle équilatéral de base %.3f\n", base);
  189.     }
  190.  
  191. };
  192.  
  193. class TriangleRecIso : public Figure2D{
  194. private:
  195.     double base, hauteur, hypotenuse;
  196.  
  197. public:
  198.     TriangleRecIso(){}
  199.  
  200.     TriangleRecIso(double b){
  201.         setVal(b);
  202.     }
  203.  
  204.     void setVal(double b){
  205.         base = b;
  206.         hauteur = base / sqrt(2);
  207.         hypotenuse = base * sqrt(2);
  208.         aire = pow(base, 2) / 2;
  209.     }
  210.  
  211.     void printValues(){
  212.         printf("Hypoténuse = %.3f\tHauteur = %.3f\tAire = %.3f\n", hypotenuse, hauteur, aire);
  213.     }
  214.     void printProperties(){
  215.         printf("Triangle rectangle isocèle de base %.3f\n", base);
  216.     }
  217.  
  218. };
  219.  
  220. class Cercle : public Figure2D{
  221. private:
  222.     double rayon, perimetre;
  223.  
  224. public:
  225.     Cercle(){}
  226.  
  227.     Cercle(double r){
  228.         setVal(r);
  229.     }
  230.  
  231.     void setVal(double r){
  232.         rayon = r;
  233.         perimetre = 2 * PI * rayon;
  234.         aire = PI * pow(rayon, 2);
  235.     }
  236.  
  237.     void printValues(){
  238.         printf("Périmètre = %.3f\tAire = %.3f\n", perimetre, aire);
  239.     }
  240.     void printProperties(){
  241.         printf("Cercle de rayon %.3f\n", rayon);
  242.     }
  243.  
  244. };
  245.  
  246. class SectAngulaire : public Figure2D{
  247. private:
  248.     double rayon, angle, longueur;
  249.  
  250. public:
  251.     SectAngulaire(){}
  252.  
  253.     SectAngulaire(double r, double a){
  254.         setVal(r, a);
  255.     }
  256.  
  257.     void setVal(double r, double a){
  258.         rayon = r;
  259.         angle = a;
  260.         longueur = rayon * angle;
  261.         aire = angle * pow(rayon, 2) / 2;
  262.     }
  263.  
  264.     void printValues(){
  265.         printf("Longueur = %.3f\tAire = %.3f\n", longueur, aire);
  266.     }
  267.     void printProperties(){
  268.         printf("Secteur angulaire de rayon %.3f et d'angle %.3f radians\n", rayon, angle);
  269.     }
  270.  
  271. };
  272.  
  273. class ParalleRec : public Figure3D{
  274. private:
  275.     double longueur, largeur, hauteur;
  276.  
  277. public:
  278.     ParalleRec(){}
  279.  
  280.     ParalleRec(double l, double L, double h){
  281.         setVal(l, L, h);
  282.     }
  283.  
  284.     void setVal(double l, double L, double h){
  285.         longueur = l;
  286.         largeur = L;
  287.         hauteur = h;
  288.         volume = longueur * largeur * hauteur;
  289.     }
  290.  
  291.     void printProperties(){
  292.         printf("Parallélépipède rectangle de longueur %.3f, de largeur %.3f et de hauteur %.3f\n", longueur, largeur, hauteur);
  293.     }
  294.  
  295. };
  296.  
  297. class Sphere : public Figure3D{
  298. private:
  299.     double rayon;
  300.  
  301. public:
  302.     Sphere(){}
  303.  
  304.     Sphere(double r){
  305.         setVal(r);
  306.     }
  307.  
  308.     void setVal(double r){
  309.         rayon = r;
  310.         volume = 4 * PI * pow(rayon, 3) / 3;
  311.     }
  312.  
  313.     void printProperties(){
  314.         printf("Sphere de rayon %.3f\n", rayon);
  315.     }
  316.  
  317. };
  318.  
  319. class ConeRev : public Figure3D{
  320. private:
  321.     double surface, hauteur;
  322.  
  323. public:
  324.     ConeRev(){}
  325.  
  326.     ConeRev(double s, double h){
  327.         setVal(s, h);
  328.     }
  329.  
  330.     void setVal(double s, double h){
  331.         surface = s;
  332.         hauteur = h;
  333.         volume = surface * hauteur / 3;
  334.     }
  335.  
  336.     void printProperties(){
  337.         printf("Cône de révolution de surface %.3f et de hauteur %.3f\n", surface, hauteur);
  338.     }
  339.  
  340. };
  341.  
  342. class Pyramide : public Figure3D{
  343. private:
  344.     double surface, hauteur;
  345.  
  346. public:
  347.     Pyramide(){}
  348.  
  349.     Pyramide(double s, double h){
  350.         setVal(s, h);
  351.     }
  352.  
  353.     void setVal(double s, double h){
  354.         surface = s;
  355.         hauteur = h;
  356.         volume = surface * hauteur / 3;
  357.     }
  358.  
  359.     void printProperties(){
  360.         printf("Pyramide de surface %.3f et de hauteur %.3f\n", surface, hauteur);
  361.     }
  362.  
  363. };
  364.  
  365.  
  366. int main(){
  367.  
  368.         Carre a(7);
  369.         Rectangle b(3, 4);
  370.         Parallelogramme c(5, 9);
  371.         Trapeze d(3, 4, 5);
  372.         Triangle e(3, 4);
  373.         TriangleEqui f(6);
  374.         TriangleRecIso g(7);
  375.         Cercle h(4);
  376.         SectAngulaire i(3, 6);
  377.         ParalleRec j(2, 4, 9);
  378.         Sphere k(2);
  379.         ConeRev l(15, 8);
  380.         Pyramide m(13, 6);
  381.        
  382.         // J'ai placé tous les pointeurs dans un tableau pour être capable de for looper le cout
  383.         FigureGeo * figures[13] = {&a, &b, &c, &d, &e, &f, &g, &h, &i, &j, &k, &l, &m};
  384.  
  385.         FigureGeo * fig;
  386.        
  387.         for(int z = 0; z < 13; z++){
  388.             fig = figures[z];
  389.             fig->printProperties();
  390.             fig->printValues();
  391.             printf("\n");
  392.         }
  393.  
  394.     return 0;
  395. }
RAW Paste Data
Top