Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //////////////header//////////////
- #ifndef HEADER_H_INCLUDED
- #define HEADER_H_INCLUDED
- #include <string>
- using namespace std;
- class Figura
- {
- float x, y;
- public:
- void ustwsp(float x_, float y_){ x = x_; y = y_; }
- void wypwsp();
- virtual void wyppole() = 0;
- };
- class Kwadrat : public Figura
- {
- float a;
- public:
- Kwadrat(float a_ = 0);
- void wyppole() ;
- Kwadrat(const Kwadrat &k);
- };
- class Kolo : public Figura
- {
- float r;
- public:
- Kolo(float r_ = 0);
- void wyppole();
- Kolo(const Kolo &k);
- };
- class Trojkat : public Figura
- {
- float a,h;
- public:
- Trojkat(float a_ = 0, float h_ = 0);
- void wyppole();
- Trojkat(const Trojkat &k);
- };
- class Kontener
- {
- Figura **tablica;
- int rozmiar;
- public:
- Kontener(std::string nazwaPliku);
- void wypkont();
- ~Kontener();
- };
- #endif
- /////////////metcppppp/////////////////
- #include "Header.h"
- #include <iostream>
- #include <fstream>
- #include <string>
- using namespace std;
- void Figura::wypwsp()
- {
- cout << "X: " << x << " Y: " << y << endl;
- }
- void Kwadrat::wyppole()
- {
- cout << "Pole kwadratu wynosi: " << a * a << endl;
- }
- void Kolo::wyppole()
- {
- cout << "Pole kola wynosi: " << r * r * (3.14) << endl;
- }
- void Trojkat::wyppole()
- {
- cout << "Pole trojkata wynosi: " << (0.5) * a * h << endl;
- }
- Kwadrat::Kwadrat(float a_)
- {
- a=a_;
- }
- Kwadrat::Kwadrat(const Kwadrat &k)
- {
- a = k.a;
- }
- Kolo::Kolo(float r_)
- {
- r=r_;
- }
- Kolo::Kolo(const Kolo &k)
- {
- r = k.r;
- }
- Trojkat::Trojkat(float a_, float h_)
- {
- a=a_;
- h=h_;
- }
- Trojkat::Trojkat(const Trojkat &k)
- {
- a = k.a;
- h = k.h;
- }
- Kontener::Kontener(string nazwaPliku)
- {
- enum figura {kolo = 1, kwadrat = 2, trojkat = 3};
- fstream plik;
- plik.open(nazwaPliku.c_str(), ios::in);
- if (plik.good())
- {
- int ile = 0, i = 0, nrfig = 0;
- plik >> ile;
- cout << "Mam " << ile << " figur" << endl;
- rozmiar = ile;
- tablica = new Figura *[rozmiar];
- while (!plik.eof())
- {
- plik >> nrfig;
- if (plik.fail())
- cout << "Blad odczytu rodzaju figur!";
- else
- cout << "Wczytano figure numer: " << nrfig << endl;
- if (nrfig == figura(kolo))
- {
- float r;
- plik >> r;
- tablica[i] = new Kolo(r);
- }
- else if (nrfig == figura(kwadrat))
- {
- float a;
- plik >> a;
- tablica[i] = new Kwadrat(a);
- }
- else
- {
- float a, h;
- plik >> a;
- plik >> h;
- tablica[i] = new Trojkat(a, h);
- }
- i++;
- }
- plik.close();
- }
- else
- cout << "Blad otwarcia pliku!";
- }
- void Kontener::wypkont()
- {
- for (int i = 0; i < rozmiar; i++)
- {
- tablica[i]->wyppole();
- }
- }
- Kontener::~Kontener()
- {
- delete []tablica;
- }
- //////////////main////////////////
- #include "Header.h"
- #include <iostream>
- #include <conio.h>
- #include <string>
- using namespace std;
- int main()
- {
- cout << "RECZNIE:" << endl;
- Kolo kolo(5);
- kolo.ustwsp(5, 5);
- kolo.wypwsp();
- kolo.wyppole();
- Kwadrat kwadrat(2);
- kwadrat.ustwsp(2, 2);
- kwadrat.wypwsp();
- kwadrat.wyppole();
- Trojkat trojkat(2,5);
- trojkat.ustwsp(2, 2);
- trojkat.wypwsp();
- trojkat.wyppole();
- cout << endl<< "WSKAZNIK:" << endl;
- Figura *wsk = &kolo;
- wsk->wyppole();
- wsk = &kwadrat;
- wsk->wyppole();
- wsk = &trojkat;
- wsk->wyppole();
- cout << endl << "KONTENER:" << endl;
- string nazwaPliku = "figury.txt";
- Kontener kontener(nazwaPliku);
- kontener.wypkont();
- _getch();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement