Advertisement
Guest User

Untitled

a guest
Oct 12th, 2017
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.59 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement