Advertisement
Guest User

Untitled

a guest
Apr 8th, 2020
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.65 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdlib.h>     /* srand, rand */
  3. #include <time.h>  
  4. #include <cmath>
  5. #define PI 3.14
  6.  
  7. using namespace std;
  8. class Prostokat;
  9. class Punkt{
  10. private:
  11.     float x;
  12.     float y;
  13. public:
  14.     Punkt(float X, float Y){
  15.         x = X;
  16.         y = Y;
  17.     }
  18.     Punkt(){}
  19.     float getX(){
  20.         return x;
  21.     }
  22.     float getY(){
  23.         return y;
  24.     }
  25.     void wyswietl(){
  26.         cout << "x: " << x << " y: " << y << endl;
  27.     }
  28.     friend void ustawXY(Punkt& punkt, float a, float b);
  29.     bool czyWspolne(Prostokat prostokat);
  30. };
  31.  
  32. class Prostokat{
  33. private:
  34.     Punkt lewy_dolny;
  35.     float szer;
  36.     float wys;
  37. public:
  38.     Prostokat(Punkt LEWY_DOLNY, float SZER, float WYS){
  39.         lewy_dolny = LEWY_DOLNY;
  40.         szer = SZER;
  41.         wys = WYS;
  42.     }
  43.  
  44.     Punkt getLewyDolny(){
  45.         return lewy_dolny;
  46.     }
  47.     float getSzer(){
  48.         return szer;
  49.     }
  50.     float getWys(){
  51.         return wys;
  52.     }
  53. };
  54. bool Punkt::czyWspolne(Prostokat prostokat){
  55.     Punkt p = prostokat.getLewyDolny();
  56.     return x >= p.getX() && x <= p.getX() + prostokat.getSzer() && y >= p.getY() && y <= prostokat.getWys();
  57. }
  58.  
  59. class Kolo{
  60. private:
  61.     Punkt srodek;
  62.     int r;
  63. public:
  64.     Kolo(){}
  65.     Kolo(Punkt SRODEK, float R){
  66.         srodek = SRODEK;
  67.         r = R;
  68.     }
  69.     int getR(){
  70.         return r;
  71.     }
  72.     Punkt getSrodek(){
  73.         return srodek;
  74.     }
  75.     bool czyStyczne(Kolo kolo){
  76.         Punkt o = kolo.getSrodek();
  77.         int R = kolo.getR();
  78.         int r1mr2 = R - r;
  79.         if (r1mr2 < 0) r1mr2 *= -1;
  80.        
  81.        
  82.         float AB = sqrt(((o.getX() -srodek.getX())*(o.getX() -srodek.getX())) + ((o.getY() -srodek.getY()))*(o.getY() -srodek.getY()));
  83.         return AB == R+r || AB == r1mr2;
  84.        
  85.     }
  86.  
  87. };
  88.  
  89. void ustawXY(Punkt& punkt, float a, float b){
  90.     punkt.x = a;
  91.     punkt.y = b;
  92. }
  93.  
  94. void pokazInfo(Prostokat prostokat){
  95.     Punkt p = prostokat.getLewyDolny();
  96.     cout << "A(" << p.getX() << "," << p.getY() << ")" << endl;
  97.     cout << "B(" << p.getX() + prostokat.getSzer() << "," << p.getY() << ")" << endl;
  98.     cout << "C(" << p.getX() + prostokat.getSzer() << "," << p.getY() + prostokat.getWys() << ")" << endl;
  99.     cout << "D(" << p.getX() << "," << p.getY() + prostokat.getWys() << ")" << endl;
  100.     cout << "Pole: " << prostokat.getSzer() * prostokat.getWys() << endl;
  101. }
  102.  
  103. void pokazInfo(Kolo kolo){
  104.     Punkt srodek = kolo.getSrodek();
  105.     cout << "O(" << srodek.getX() << "," << srodek.getY() << ")" << endl;
  106.     cout << "Promien: "<<kolo.getR() << endl;
  107.     cout << "Pole: " << PI*kolo.getR()*kolo.getR() << endl;
  108. }
  109.  
  110. int main(){
  111.     srand (time(NULL));
  112.     Punkt p1 = Punkt();
  113.     Punkt p2 = Punkt();
  114.     Punkt p3 = Punkt();
  115.     ustawXY(p1,5,2);
  116.     ustawXY(p2,-7,-7);
  117.     ustawXY(p3,1.25f,2.5f);
  118.     p1.wyswietl();
  119.     p2.wyswietl();
  120.     p3.wyswietl();
  121.  
  122.     Prostokat prost1 = Prostokat(Punkt(-8,-6), 13,10);
  123.     cout <<"p1 wspolne z post1: " << p1.czyWspolne(prost1) <<endl;
  124.     cout <<"p2 wspolne z post1: " << p2.czyWspolne(prost1) <<endl;
  125.     cout <<"p3 wspolne z post1: " << p3.czyWspolne(prost1) <<endl;
  126.  
  127.     Kolo k1 = Kolo(Punkt(0,0), 10);
  128.     pokazInfo(k1);
  129.     pokazInfo(prost1);
  130.     Kolo* listaKol = new Kolo();
  131.     for (int i = 0; i < 1000; i++){
  132.         int x = rand() % 20 - 20;
  133.         int y = rand() % 20 - 20;
  134.         int r = rand() % 20 + 1;
  135.         listaKol[i] = Kolo(Punkt(x, y), r);
  136.     }
  137.     int ileStycznych = 0;
  138.     for (int i = 0; i < 1000; i++){
  139.         if (k1.czyStyczne(listaKol[i]))
  140.         {
  141.             ileStycznych++;
  142.         }
  143.     }
  144.     cout << "Ilosc stycznych: " << ileStycznych << endl;
  145.     return 0;
  146. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement