Advertisement
Dzaco

lab09 - figury

Apr 29th, 2018
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.55 KB | None | 0 0
  1. // lab09.cpp : Defines the entry point for the console application.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include <math.h>
  6.  
  7. void line()
  8. {
  9.     for (int i = 0; i < 20; i++)
  10.     {
  11.         printf("-+-");
  12.     }
  13.     printf("\n");
  14. }
  15.  
  16. class Trapez
  17. {
  18. public:
  19.    
  20.     Trapez();
  21.     Trapez( float px, float py, float pa, float pb, float ph );
  22.    
  23.     void init( float px, float py, float pa, float pb, float ph );
  24.     void wypisz();
  25.     void symetria( float n );
  26.  
  27.     void WczytanieTrapezu();
  28.     void SymTrapezu();
  29.  
  30. private:
  31.     float x;
  32.     float y;
  33.     float a;
  34.     float b;
  35.     float d;
  36.     float h;
  37.  
  38. };
  39.  
  40. Trapez::Trapez()
  41. {
  42.     x = 1;
  43.     y = 1;
  44.     a = 4;
  45.     b = 2;
  46.     h = 1;
  47. }
  48.  
  49. Trapez::Trapez( float px, float py, float pa, float pb, float ph )
  50. {
  51.     x = px;
  52.     y = py;
  53.     if (pa > 0) { a = pa; }
  54.     else { a = 4; }
  55.  
  56.     if (pb > 0) { b = pb; }
  57.     else { b = 2; }
  58.  
  59.     if (ph > 0) { h = ph; }
  60.     else { h = 1; }
  61. }
  62.  
  63. void Trapez::init(float px, float py, float pa, float pb, float ph)
  64. {
  65.     x = px;
  66.     y = py;
  67.     if (pa > 0) { a = pa; }
  68.     else { a = 4; }
  69.  
  70.     if (pb > 0) { b = pb; }
  71.     else { b = 2; }
  72.  
  73.     if (ph > 0) { h = ph; }
  74.     else { h = 1; }
  75. }
  76.  
  77. void Trapez::wypisz()
  78. {
  79.     float px, py ;
  80.     d = (a - b) / 2;
  81.  
  82.     printf("P1 = (%g,%g);\n" , x , y );
  83.  
  84.     px = x + a;
  85.     py = y;
  86.     printf("P2 = (%g,%g);\n" , px , py );
  87.     px = px - d;
  88.     py = py + h;
  89.     printf("P3 = (%g,%g);\n" , px , py );
  90.     px = px - b;
  91.     py = py;
  92.     printf("P4 = (%g,%g);\n" , px , py );
  93.  
  94.     printf("a = %g;\n", fabs(a) );
  95.     printf("b = %g;\n", fabs(b) );
  96.     printf("h = %g;\n", fabs(h) );
  97.    
  98.     line();
  99. }
  100.  
  101. void Trapez::symetria( float n )
  102. {
  103.     float odl;
  104.  
  105.     odl = fabs( n - x );
  106.     if (x > n) { x = n - odl; }
  107.     else if (x < n) { x = n + odl; }
  108.     a = -a;
  109.     b = -b;
  110. }
  111.  
  112. void Trapez::WczytanieTrapezu()
  113. {
  114.     float x1, y1, a, b, h;
  115.     printf("Prosze podac wspolrzedne lewego-dolnego wierzcholka\n");
  116.     printf("x = ");
  117.     scanf_s("%f", &x1);
  118.     printf("y = ");
  119.     scanf_s("%f", &y1);
  120.  
  121.     printf("Prosze podac dolna dluzsza podstawe\n");
  122.     scanf_s("%f", &a);
  123.  
  124.     printf("Prosze podac gorna krotsza podstawe\n");
  125.     scanf_s("%f", &b);
  126.  
  127.     printf("Prosze podac wysokosc\n");
  128.     scanf_s("%f", &h);
  129.  
  130.     this->init(x1, y1, a, b, h);
  131.     this->wypisz();
  132. }
  133.  
  134. void Trapez::SymTrapezu()
  135. {
  136.     printf("Wzgledem, ktorej prostej pionowej chcesz wykonac symetrie?\nn = ");
  137.     float n;
  138.     scanf_s("%f", &n);
  139.     this->symetria(n);
  140.     this->wypisz();
  141. }
  142.  
  143. //----------------------------------------------------------------
  144.  
  145. class Kolo
  146. {
  147. public:
  148.     Kolo();                                     //konstruktory
  149.     Kolo( float px, float py, float pr );
  150.  
  151.     void init( float px, float py, float pr );
  152.     void wypisz();
  153.     void symetria( float n );
  154.     void skala( float n );
  155.  
  156.     void WczytanieKola();
  157.     void SymKola();
  158.     void SkalaKola();
  159.  
  160. private:
  161.     float r;
  162.     float x;
  163.     float y;
  164. };
  165.  
  166. Kolo::Kolo()
  167. {
  168.     x = 0;
  169.     y = 0;
  170.     r = 1;
  171. }
  172.  
  173. Kolo::Kolo( float px, float py, float pr )
  174. {
  175.     x = px;
  176.     y = py;
  177.     if (pr > 0) { r = pr; }
  178.     else { r = 1; }
  179. }
  180.  
  181. void Kolo::init( float px, float py, float pr )
  182. {
  183.     x = px;
  184.     y = py;
  185.     if (pr > 0) { r = pr; }
  186.     else { r = 1; }
  187. }
  188.  
  189. void Kolo::wypisz()
  190. {
  191.     printf("S = (%g,%g);\n" , x , y );
  192.     printf("r = %g;\n" , r );
  193.     line();
  194. }
  195.  
  196. void Kolo::symetria( float n )
  197. {
  198.     float odl;
  199.     odl = fabs( n - x );
  200.  
  201.     if (x > n) { x = n - odl; }
  202.     else if (x < n) { x = n + odl; }
  203.  
  204. }
  205.  
  206. void Kolo::skala( float n )
  207. {
  208.     if (n > 0) { r = r * n; }
  209.     else { printf("Blad promienia\nPromien pozostnie niezmieniony\n");  }
  210. }
  211.  
  212. void Kolo::WczytanieKola()
  213. {
  214.     float px, py , pr;
  215.     printf("Prosze podac wspolrzedne srodka kola:\n");
  216.     printf("x = ");
  217.     scanf_s("%f" , &px );
  218.     printf("y = ");
  219.     scanf_s("%f" , &py );
  220.     printf("Prosze podac promien kola:\nr = ");
  221.     scanf_s("%f" , &pr );
  222.  
  223.     this->init( px , py , pr );
  224.     this->wypisz();
  225. }
  226.  
  227. void Kolo::SymKola()
  228. {
  229.     printf("Wzgledem, ktorej prostej pionowej chcesz wykonac symetrie?\nn = ");
  230.     float n;
  231.     scanf_s("%f", &n);
  232.     this->symetria(n);
  233.     this->wypisz();
  234. }
  235.  
  236. void Kolo::SkalaKola()
  237. {
  238.     printf("Prosze podac skale przeksztalcenia:");
  239.     printf("k = ");
  240.     float n;
  241.     scanf_s("%f" , &n);
  242.     this->skala( n );
  243.     this->wypisz();
  244. }
  245.  
  246. int main()
  247. {
  248.    
  249.     Trapez T[5];
  250.     Kolo K[5];
  251.  
  252.     bool Exit = false;
  253.    
  254.     while ( !Exit )
  255.     {
  256.         int fig, num , mod;
  257.         printf("Ktora figure chesz modyfikowac?\n");
  258.         printf("1.Trapez\n2.Kolo\n");
  259.         scanf_s("%d" , &fig);
  260.  
  261.         printf("Modyfikujemy figure o numerze: ");
  262.         scanf_s("%d" , &num);
  263.  
  264.         switch ( fig )
  265.         {
  266.         case 1: // Trapez
  267.             printf("Co modyfikujemy?\n");
  268.             printf("1.Nowe Wspolrzedne\n2.Symetria\n");
  269.             scanf_s("%d" , &mod );
  270.                 switch (mod)
  271.                 {
  272.                 case 1: // nowe wspolrzedne
  273.                     T[num].WczytanieTrapezu();
  274.                     break;
  275.                 case 2: // symetria
  276.                     T[num].SymTrapezu();
  277.                     break;
  278.                 default:
  279.                     printf("Nieprawidlowy wybor\n");
  280.                     break;
  281.                 }
  282.             break;
  283.  
  284.         case 2: // Kolo
  285.             printf("Co modyfikujemy?\n");
  286.             printf("1.Nowe Wspolrzedne\n2.Symetria\n3.Skala\n");
  287.             scanf_s("%d" , &mod );
  288.                 switch (mod)
  289.                 {
  290.                 case 1: // nowe wspolrzedne
  291.                     K[num].WczytanieKola();
  292.                     break;
  293.                 case 2: // symetria
  294.                     K[num].SymKola();
  295.                     break;
  296.                 case 3: // scala
  297.                     K[num].SkalaKola();
  298.                     break;
  299.                 default:
  300.                     printf("Nieprawidlowy wybor\n");
  301.                     break;
  302.                 }
  303.             break;
  304.  
  305.         default:
  306.             printf("Nieprawidlowy wybor\n");
  307.             break;
  308.         }
  309.  
  310.  
  311.         for (int i = 0; i < 5; i++)
  312.         {
  313.             printf("krok %d\n" , i );
  314.             T[i].wypisz();
  315.         }
  316.  
  317.  
  318.         printf("Czy chcesz zmodyfikowac jeszcze jakas figure?\n");
  319.         printf("1.TAK\n2.NIE\n");
  320.         int c;
  321.         scanf_s("%d" , &c );
  322.         if (c == 1) { Exit = false; }
  323.         else if (c == 2) { Exit = true; }
  324.         else { printf("Nieprawidlowy wybor\n"); Exit = true; }
  325.        
  326.  
  327.     }
  328.    
  329.  
  330.  
  331.  
  332.  
  333.     return 0;
  334. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement