NP-Nidzo

Kruznica preseci

Nov 5th, 2021 (edited)
541
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.03 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <ctype.h>
  3. #include <math.h>
  4.  
  5. int start(float x, float y){
  6.     if(x == 0 && y == 0) return -3; /// Koordinaten pocetok
  7.     if(x == 0) return -2;           /// y - oska
  8.     if(y == 0) return -1;           /// x - oska
  9.                                     ///
  10.     if(x > 0 && y > 0) return 1;    /// I Kvadrant
  11.     if(x < 0 && y > 0) return 2;    /// II Kvadrant
  12.     if(x < 0 && y < 0) return 3;    /// III Kvadrant
  13.     if(x > 0 && y < 0) return 4;    /// IV Kvadrant
  14.  
  15.     return 0;
  16. }
  17.  
  18. /// Dali ima presek so x - oska
  19. int checkx(float y, float r){
  20.     if(y < 0.0) y *= -1;
  21.     return (r) > (y);
  22. }
  23.  
  24. /// Dali ima presek so y - oska
  25. int checky(float x, float r){
  26.     if(x < 0.0) x *= -1;
  27.     return (r) > (x);
  28. }
  29.  
  30. /// Proverka za dali stiga do sprotiven kvadrant
  31. int checkSpro(float x, float y, float r){
  32.     return r > sqrt(x*x + y*y);
  33. }
  34.  
  35. int main()
  36. {
  37.     double x, y, r;
  38.     scanf("%lf %lf %lf", &x, &y, &r);
  39.     int pos = start(x, y);
  40.  
  41.     switch(pos){
  42.         case -3: /// Koordinaten pocetok
  43.             r > 0? printf("1111") : printf("0000");
  44.             break;
  45.  
  46.         case -2: /// y - oska
  47.             if(r == 0) printf("0000");
  48.             else{
  49.                 if(y < 0){
  50.                     if(y*(-1.0) >= r) printf("00");
  51.                     else printf("11");
  52.  
  53.                     printf("11");
  54.                 }
  55.                 else{
  56.                     printf("11");
  57.  
  58.                     if(y >= r) printf("00");
  59.                     else printf("11");
  60.                 }
  61.             }
  62.             break;
  63.  
  64.         case -1: /// x - oska
  65.             if(r == 0) printf("0000");
  66.             else{
  67.                 int niza[4] = {0,0,0,0};
  68.  
  69.                 if(x < 0){
  70.                     if(x*(-1.0) >= r) niza[0] = niza[3] = 0;
  71.                     else niza[0] = niza[3] = 1;
  72.  
  73.                     niza[1] = niza[2] = 1;
  74.                 }
  75.                 else{
  76.                     niza[0] = niza[3] = 1;
  77.  
  78.                     if(x >= r) niza[1] = niza[2] = 0;
  79.                     else niza[1] = niza[2] = 1;
  80.                 }
  81.  
  82.                 for(int i = 0; i < 4; i++)
  83.                     printf("%d", niza[i]);
  84.             }
  85.             break;
  86.  
  87.         case 1: /// I Kvadrant
  88.             printf("1");
  89.             printf("%d", checky(x,r));
  90.             printf("%d", checkSpro(x,y,r));
  91.             printf("%d", checkx(y,r));
  92.             break;
  93.  
  94.         case 2: /// II Kvadrant
  95.             printf("%d", checky(x,r));
  96.             printf("1");
  97.             printf("%d", checkx(y,r));
  98.             printf("%d", checkSpro(x,y,r));
  99.             break;
  100.  
  101.         case 3: /// III Kvadrant
  102.             printf("%d", checkSpro(x,y,r));
  103.             printf("%d", checkx(y,r));
  104.             printf("1");
  105.             printf("%d", checky(x,r));
  106.             break;
  107.  
  108.         case 4: /// IV Kvadrant
  109.             printf("%d", checkx(y,r));
  110.             printf("%d", checkSpro(x,y,r));
  111.             printf("%d", checky(x,r));
  112.             printf("1");
  113.             break;
  114.     }
  115.     return 0;
  116. }
  117.  
Add Comment
Please, Sign In to add comment