Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- #include <ctime>
- using namespace std;
- class Punkt;
- class Odcinek;
- class Okrag;
- class Punkt {
- public:
- Punkt(){}
- Punkt(int x, int y) {
- this->x = x;
- this->y = y;
- }
- void wypisz() {
- cout << "x: " << x << " y: " << y << endl;
- }
- friend void wypisz(Punkt);
- friend void wypisz(Odcinek);
- friend void wypisz(Okrag);
- private:
- int x, y;
- friend Odcinek;
- friend Okrag;
- };
- class Odcinek {
- Punkt poczatek, koniec;
- public:
- Odcinek();
- friend void wypisz(Odcinek);
- Odcinek(Punkt poczatek, Punkt koniec) {
- this->poczatek = poczatek;
- this->koniec = koniec;
- }
- long double dlugosc_odcinka() {
- int xk = koniec.x - poczatek.x;
- int yk = koniec.y - poczatek.y;
- return sqrt((xk * xk) + yk * yk);
- }
- };
- class Okrag {
- Punkt srodek = {0, 0};// Punkt(0,0);
- int promien;
- public:
- friend void wypisz(Okrag);
- Okrag(int x, int y, int prom) {
- srodek = Punkt(x, y);
- promien = prom;
- }
- Okrag(){}
- void stycznosc(Okrag *tablica, int rozmiar) {
- int i = 0;
- for (int i = 0; i < rozmiar; i++) {
- int odl_od_srodkax = srodek.x - tablica[i].srodek.x;
- int odl_od_srodkay = srodek.y - tablica[i].srodek.y;
- long double odleglosci = sqrt((odl_od_srodkax * odl_od_srodkax) + (odl_od_srodkay * odl_od_srodkay));
- int roznica_promieni_test_wewnetrzny = abs(promien - tablica[i].promien);
- int roznica_promieni_test_zewnetrzny = abs(promien + tablica[i].promien);
- if (odleglosci == roznica_promieni_test_wewnetrzny) {
- cout << "Pojedynczy okrag jest styczny wewnetrznie z okregiem o indeksie " << i
- << " o wartosciach ";
- wypisz(tablica[i]);
- } else if (odleglosci == roznica_promieni_test_zewnetrzny) {
- cout << "Pojedynczy okrag jest styczny zewnetrznie z okregiem o indeksie " << i
- << " o wartosciach ";
- wypisz(tablica[i]);
- }
- }
- }
- };
- using namespace std;
- void wypisz(Punkt nowy) {
- cout << "x: " << nowy.x << " y: " << nowy.y << endl;
- }
- void wypisz(Odcinek nowy) {
- cout << "poczatek: " <<"x: " << nowy.poczatek.x << " y: " << nowy.poczatek.y << endl;
- cout << "koniec: " << "x: " << nowy.koniec.x << " y: " << nowy.koniec.y << endl;
- }
- void wypisz(Okrag nowy) {
- cout << endl << "----" << endl << "srodek: " <<"x: " << nowy.srodek.x << " y: " << nowy.srodek.y << endl;
- cout << "promien:" << nowy.promien << endl;
- }
- int main() {
- Punkt pkt[] = {{-4, 1},
- {6, 1},
- {0, 6},
- {1, 1},
- {3, 8},
- {-3, -2}}; // lista inicjalizacyjna do punktów
- Odcinek tablica_odcinkow[3] = {{pkt[0], pkt[1]}, // lista inicjalizacyjna dla odcinków ( wywołuje się pod spodem odpowiedni konstruktur)
- {pkt[2], pkt[3]},
- {pkt[4], pkt[5]}};//0dcinek(pkt[0], pkt[1])
- for (int i = 0; i < 3; i++) {
- cout << tablica_odcinkow[i].dlugosc_odcinka() << endl;
- }
- Okrag pojedynczy(0, 0, 6);
- Okrag * okregi= new Okrag [10000];
- srand(time(0));
- for (int i = 0; i < 10000; i++) {
- int x = rand()%41 -20;
- int y = rand()%41 -20;
- int r = rand()%20 +1;
- Okrag o(x, y, r);
- okregi[i] = o;
- }
- pojedynczy.stycznosc(okregi,10000);
- wypisz(pkt[0]);
- wypisz(tablica_odcinkow[0]);
- wypisz(okregi[0]);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement