Advertisement
rowers

figury

Jan 8th, 2015
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.46 KB | None | 0 0
  1. //////////////header//////////////
  2.  
  3. #ifndef HEADER_H_INCLUDED
  4. #define HEADER_H_INCLUDED
  5. #include <string>
  6.  
  7. using namespace std;
  8.  
  9. class Figura
  10. {
  11.     float x, y;
  12. public:
  13.     void ustwsp(float x_, float y_){ x = x_; y = y_; }
  14.     void wypwsp();
  15.     virtual void wyppole() = 0;
  16. };
  17.  
  18.  
  19. class Kwadrat : public Figura
  20. {
  21. float a;
  22. public:
  23. Kwadrat(float a_ = 0);
  24. void wyppole() ;
  25. Kwadrat(const Kwadrat &k);
  26. };
  27.  
  28.  
  29.  
  30. class Kolo : public Figura
  31. {
  32.     float r;
  33. public:
  34.     Kolo(float r_ = 0);
  35.    
  36.     void wyppole();
  37.  
  38.     Kolo(const Kolo &k);
  39. };
  40.  
  41.  
  42.  
  43. class Trojkat : public Figura
  44. {
  45.     float a,h;
  46. public:
  47.     Trojkat(float a_ = 0, float h_ = 0);
  48.    
  49.     void wyppole();
  50.  
  51.     Trojkat(const Trojkat &k);
  52. };
  53.  
  54. class Kontener
  55. {
  56.     Figura **tablica;
  57.     int rozmiar;
  58. public:
  59.     Kontener(std::string nazwaPliku);
  60.     void wypkont();
  61.     ~Kontener();
  62. };
  63.  
  64. #endif
  65.  
  66.  
  67.  
  68. /////////////metcppppp/////////////////
  69.  
  70. #include "Header.h"
  71. #include <iostream>
  72. #include <fstream>
  73. #include <string>
  74.  
  75. using namespace std;
  76.  
  77.  
  78. void Figura::wypwsp()
  79. {
  80.     cout << "X: " << x << " Y: " << y << endl;
  81. }
  82.  
  83. void Kwadrat::wyppole()
  84. {
  85.     cout << "Pole kwadratu wynosi: " << a * a << endl;
  86. }
  87.  
  88. void Kolo::wyppole()
  89. {
  90.     cout << "Pole kola wynosi: " <<  r * r * (3.14) << endl;
  91. }
  92.  
  93. void Trojkat::wyppole()
  94. {
  95.     cout << "Pole trojkata wynosi: " << (0.5) * a * h << endl;
  96. }
  97.  
  98.  
  99.  
  100.     Kwadrat::Kwadrat(float a_)
  101.     {
  102.         a=a_;
  103.     }
  104.  
  105.     Kwadrat::Kwadrat(const Kwadrat &k)
  106.     {
  107.         a = k.a;
  108.     }
  109.  
  110.    
  111.    
  112.    
  113.    
  114.     Kolo::Kolo(float r_)
  115.     {
  116.         r=r_;
  117.     }
  118.  
  119.     Kolo::Kolo(const Kolo &k)
  120.     {
  121.         r = k.r;
  122.     }
  123.  
  124.  
  125.  
  126.     Trojkat::Trojkat(float a_, float h_)
  127.     {
  128.         a=a_;
  129.         h=h_;
  130.     }
  131.  
  132.     Trojkat::Trojkat(const Trojkat &k)
  133.     {
  134.         a = k.a;
  135.         h = k.h;
  136.     }
  137.  
  138.  
  139.     Kontener::Kontener(string nazwaPliku)
  140. {
  141.     enum figura {kolo = 1, kwadrat = 2, trojkat = 3};
  142.     fstream plik;
  143.  
  144.     plik.open(nazwaPliku.c_str(), ios::in);
  145.  
  146.     if (plik.good())
  147.     {
  148.  
  149.         int ile = 0, i = 0, nrfig = 0;
  150.         plik >> ile;
  151.         cout << "Mam " << ile << " figur" << endl;
  152.         rozmiar = ile;
  153.         tablica = new Figura *[rozmiar];
  154.  
  155.         while (!plik.eof())
  156.         {
  157.             plik >> nrfig;
  158.             if (plik.fail())
  159.                 cout << "Blad odczytu rodzaju figur!";
  160.             else
  161.                 cout << "Wczytano figure numer: " << nrfig << endl;
  162.  
  163.             if (nrfig == figura(kolo))
  164.             {
  165.                 float r;
  166.                 plik >> r;
  167.                 tablica[i] = new Kolo(r);
  168.             }
  169.             else if (nrfig == figura(kwadrat))
  170.             {
  171.                 float a;
  172.                 plik >> a;
  173.                 tablica[i] = new Kwadrat(a);
  174.             }
  175.             else
  176.             {
  177.                 float a, h;
  178.                 plik >> a;
  179.                 plik >> h;
  180.                 tablica[i] = new Trojkat(a, h);
  181.             }
  182.             i++;
  183.         }
  184.         plik.close();
  185.     }
  186.     else
  187.         cout << "Blad otwarcia pliku!";
  188. }
  189.  
  190. void Kontener::wypkont()
  191. {
  192.     for (int i = 0; i < rozmiar; i++)
  193.     {
  194.         tablica[i]->wyppole();
  195.     }
  196. }
  197.  
  198. Kontener::~Kontener()
  199. {
  200.     delete []tablica;
  201. }
  202.  
  203.  
  204.  
  205.  
  206. //////////////main////////////////
  207.  
  208. #include "Header.h"
  209. #include <iostream>
  210. #include <conio.h>
  211. #include <string>
  212.  
  213. using namespace std;
  214.  
  215. int main()
  216. {
  217.     cout << "RECZNIE:" << endl;
  218.     Kolo kolo(5);
  219.     kolo.ustwsp(5, 5);
  220.     kolo.wypwsp();
  221.     kolo.wyppole();
  222.  
  223.     Kwadrat kwadrat(2);
  224.     kwadrat.ustwsp(2, 2);
  225.     kwadrat.wypwsp();
  226.     kwadrat.wyppole();
  227.  
  228.     Trojkat trojkat(2,5);
  229.     trojkat.ustwsp(2, 2);
  230.     trojkat.wypwsp();
  231.     trojkat.wyppole();
  232.    
  233.     cout << endl<< "WSKAZNIK:" << endl;
  234.  
  235.     Figura *wsk = &kolo;
  236.     wsk->wyppole();
  237.     wsk = &kwadrat;
  238.     wsk->wyppole();
  239.     wsk = &trojkat;
  240.     wsk->wyppole();
  241.  
  242.     cout << endl << "KONTENER:" << endl;
  243.  
  244.    
  245.     string nazwaPliku = "figury.txt";
  246.     Kontener kontener(nazwaPliku);
  247.     kontener.wypkont();
  248.     _getch();
  249. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement