Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <cmath>
- using namespace std;
- string zamien_na_male(string pom)
- {
- string wynik;
- for (int i = 0; i < pom.size(); i++)
- {
- wynik = wynik + char(tolower(int(pom[i])));
- }
- return wynik;
- }
- class Punkt
- {
- protected:
- float m_x, m_y;
- string m_nazwa;
- public:
- Punkt();
- Punkt(float, float, string);
- float odleglosc(float m_x, float m_y)
- {
- return sqrt((m_x * m_x) + (m_y * m_y));
- }
- float kolodl(float a, float b) {
- return sqrt(pow(m_x - a, 2) + pow(m_y - b, 2));
- }
- float jakix()
- {
- return m_x;
- }
- float jakiy()
- {
- return m_y;
- }
- string jakanazwa()
- {
- return m_nazwa;
- }
- void wpisz()
- {
- cin >> m_nazwa >> m_x >> m_y;
- }
- };
- bool operator < (Punkt x, Punkt y)
- {
- int dlugoscNazwyX = x.jakanazwa().size();
- int dlugoscNazwaY = y.jakanazwa().size();
- string zastap_1 = zamien_na_male(x.jakanazwa());
- string zastap_2 = zamien_na_male(y.jakanazwa());
- if (x.odleglosc(x.jakix(), x.jakiy()) < y.odleglosc(y.jakix(), y.jakiy()))
- {
- return true;
- }
- else if (x.odleglosc(x.jakix(), x.jakiy()) == y.odleglosc(y.jakix(), y.jakiy()))
- {
- bool flaga = false;
- if (dlugoscNazwyX >= dlugoscNazwaY) {
- for (int i = 0; i < dlugoscNazwyX; i++) {
- if (zastap_1[i] < zastap_2[i]) {
- flaga = true;
- break;
- }
- else flaga = false;
- }
- return flaga;
- }
- }
- else return false;
- }
- ostream& operator << (ostream& s, Punkt& wyswietl) {
- s << wyswietl.jakanazwa() << " " << wyswietl.jakix() << " " << wyswietl.jakiy() << " ";
- return s;
- }
- Punkt::Punkt()
- {
- m_x = 0.0;
- m_y = 0.0;
- m_nazwa = " ";
- }
- Punkt::Punkt(float mx, float my, string nazwa) :m_x(mx), m_y(my), m_nazwa(nazwa) {}
- class Kolo : public Punkt
- {
- private:
- float m_r;
- string m_nazwakola;
- public:
- Kolo()
- {
- m_r = 0.0;
- m_nazwakola = " ";
- }
- Kolo(float x, float y, string pk, float r, string kn) : Punkt(x, y, pk), m_r(r), m_nazwakola(kn) {}
- float jakipromien()
- {
- return m_r;
- }
- };
- class Ukl_wspl {
- Punkt tab[20];
- int licznik;
- public:
- //friend class Punkt;
- Ukl_wspl();
- void dodajpunkt(Punkt v1)
- {
- if (licznik < 20)
- {
- tab[licznik] = v1;
- licznik++;
- }
- }
- void sortowanie() {
- for (int i = 0; i < licznik; i++)
- {
- for (int j = 0; j < licznik - 1 - i; j++)
- {
- if (tab[j] < tab[j + 1])
- swap(tab[j], tab[j + 1]);
- }
- }
- }
- void disptab() //wyswietla od najmniejszego do najwiekszego
- {
- for (int j = 0; j < licznik; j++)
- {
- cout << tab[j];
- }
- }
- bool sprawdzenie(Kolo k)
- {
- bool tymczasowe = true;
- for (int i = 0; i < licznik; i++)
- {
- if (tab[i].kolodl(k.jakix(), k.jakiy()) <= k.jakipromien())
- {
- tymczasowe = true;
- }
- else
- {
- tymczasowe = false;
- break;
- }
- }
- return tymczasowe;
- }
- };
- Ukl_wspl::Ukl_wspl() {
- licznik = 0;
- for (int i = 0; i < 20; i++)
- {
- tab[i] = { Punkt() };
- }
- }
- int main()
- {
- float x;
- float y;
- string pkName;
- float r;
- string kName;
- Ukl_wspl u;
- Punkt p[6];
- for (int i = 0; i < 6; i++)
- {
- p[i].wpisz();
- }
- for (int i = 0; i < 6; i++)
- {
- u.dodajpunkt(p[i]);
- }
- u.sortowanie();
- u.disptab();
- cin >> pkName;
- cin >> x;
- cin >> y;
- cin >> kName;
- cin >> r;
- Kolo k(x, y, pkName, r, kName);
- cout << u.sprawdzenie(k);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement