Advertisement
Guest User

Untitled

a guest
Apr 10th, 2020
285
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.03 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include "Figure.h"
  4. #include "Rectangle.h"
  5. #include "Parallelogram.h"
  6.  
  7.  
  8. void printCommands() {
  9.     printf("1: Add\n2: Print all\n3: Summ squares\n4: Sum perimeters\n5: Centre of mass\n6: Memory\n7: Sort figures\n0: Exit\n");
  10. }
  11.  
  12. int main() {
  13.     std::vector<CFigure *> gFigs;
  14.     int command = 0;
  15.     while (true) {
  16.         printCommands();
  17.         std::cin >> command;
  18.         switch (command) {
  19.             case 1:
  20.                 printf("What figure are you want to add?\n1: Rectangle 2:Parallelogram\n");
  21.                 int x;
  22.                 std::cin >> x;
  23.                 if (x == 1) {
  24.                     CRectangle *tmp = new CRectangle();
  25.                     tmp->initFromDialog();
  26.                     gFigs.push_back(tmp);
  27.                 } else {
  28.                     CParallelogram *tmp = new CParallelogram();
  29.                     tmp->initFromDialog();
  30.                     gFigs.push_back(tmp);
  31.                 }
  32.                 break;
  33.             case 2: {
  34.                 printf("-----------------------\n");
  35.                 for (int i = 0; i < gFigs.size(); i++) {
  36.                     printf("%d: ", i);
  37.                     gFigs[i]->draw();
  38.                 }
  39.                 printf("-----------------------\n");
  40.                 break;
  41.             }
  42.             case 3: {
  43.                 double s = 0;
  44.                 for (int i = 0; i < gFigs.size(); i++) {
  45.                     s += gFigs[i]->square();
  46.                 }
  47.                 std::cout << s << std::endl;
  48.                 break;
  49.             }
  50.             case 4: {
  51.                 double s = 0;
  52.                 for (int i = 0; i < gFigs.size(); i++) {
  53.                     s += gFigs[i]->perimeter();
  54.                 }
  55.                 std::cout << s << std::endl;
  56.                 break;
  57.             }
  58.             case 5: {
  59.                 double x = 0, y = 0, n = 0;
  60.                 for (int i = 0; i < gFigs.size(); i++) {
  61.                     x += gFigs[i]->position().x * gFigs[i]->mass();
  62.                     y += gFigs[i]->position().y * gFigs[i]->mass();
  63.                     n += gFigs[i]->mass();
  64.                 }
  65.                 std::cout << x / n << " " << y / n << std::endl;
  66.                 break;
  67.             }
  68.             case 6: {
  69.                 double s = 0;
  70.                 for (int i = 0; i < gFigs.size(); i++) {
  71.                     s += gFigs[i]->size();
  72.                 }
  73.                 std::cout << s << std::endl;
  74.                 break;
  75.             }
  76.             case 7: {
  77.                 for (int i = 0; i < gFigs.size(); i++) {
  78.                     for (int j = 0; j < gFigs.size(); j++) {
  79.                         if ( gFigs[j] < gFigs[i]) {
  80.                             CFigure *tmp = gFigs[i];
  81.                             gFigs[i] = gFigs[j];
  82.                             gFigs[j] = tmp;
  83.                         }
  84.                     }
  85.                 }
  86.                 break;
  87.             }
  88.             case 0: {
  89.                 exit(0);
  90.             }
  91.  
  92.         }
  93.     }
  94. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement