Abstract Data Type Point C Source Code Modified Version


Versi syntax yang ini semata-mata hanya digunakan untuk kompatibilitas penggunaan dengan ADT GARIS. Tidak ada perubahan besar.

  1. #include "stdio.h"
  2. #include "ADTPOINT.H"
  3. #include "BOOLEAN.H"
  4. #include "math.h"
  5.  
  6. point makepoint( int x, int y)
  7. {
  8.       //buat variabel point bernama temp
  9.       point temp;
  10.      
  11.       //mengisikan nilai x dan y
  12.       temp.x = x;
  13.       temp.y = y;
  14.  
  15.       return temp;
  16. }
  17.  
  18. point pluspoint(point p1,point p2)
  19. {
  20.       point p;
  21.      
  22.       p.x = p1.x+p2.x;
  23.       p.y = p1.y+p2.y;
  24.      
  25.       return p;
  26. }
  27.  
  28. point minuspoint(point p1,point p2)
  29. {
  30.       point p;
  31.      
  32.       p.x = p1.x p2.x;
  33.       p.y = p1.y p2.y;
  34.      
  35.       return p;    
  36. }
  37.  
  38. void tulispoint(point p)
  39. {    
  40.      //mencetak nilai x dan y di layar
  41.      printf("%d, %d", p.x, p.y);    
  42. }
  43.  
  44. int getabsis(point p)
  45. {
  46.     return p.x;
  47. }
  48.  
  49. int getordinat(point p)
  50. {
  51.     return p.y;    
  52. }
  53.  
  54. void bacapoint(point *p)
  55. {
  56.     //membaca nilai x dan y dari keyboard
  57.     int x,y;
  58.     printf("Masukkan nilai X : ");
  59.     scanf("%d", &x);
  60.     printf("Masukkan nilai Y : ");
  61.     scanf("%d", &y);
  62.    
  63.     *p = makepoint(x,y);
  64. }    
  65.  
  66. void setabsis(point *p,int newx)
  67. {
  68.      (*p).x=newx;
  69.      printf("X yang baru = %d, Y = %d\n", newx, (*p).y);    
  70. }
  71.  
  72. void setordinat(point *p,int newy)
  73. {
  74.      (*p).y=newy;
  75.      printf("X = %d, Y yang baru= %d\n", (*p).x, newy);    
  76. }    
  77.  
  78.  
  79. boolean EQ(point p1,point p2)
  80. {
  81.         if ((p1.x == p2.x) && (p1.y == p2.y))
  82.                   return true;
  83.         else
  84.                   return false;
  85. }
  86.  
  87. boolean NEQ(point p1,point p2)
  88. {
  89.         if(!EQ(p1,p2))
  90.                       return true;
  91.         else
  92.                       return false;        
  93. }
  94.  
  95. boolean LT(point p1,point p2)
  96. {
  97.          if ((p1.x < p2.x) && (p1.y < p2.y))
  98.                      return true;
  99.          else        
  100.                      return false;
  101. }
  102.  
  103. boolean GT(point p1,point p2)
  104. {
  105.         if (!LT(p1,p2) && NEQ(p1,p2))
  106.                        return true;
  107.         else
  108.                        return false;
  109. }                    
  110.  
  111. boolean isorigin(point p)
  112. {
  113.         if ((p.x==0) && (p.y==0))
  114.                         return true;
  115.         else
  116.                         return false;
  117. }
  118.  
  119. boolean isonsbx(point p)
  120. {
  121.         if (p.x==0)
  122.                    return true;
  123.         else
  124.                    return false;
  125. }
  126.  
  127. boolean isonsby(point p)
  128. {
  129.         if (p.y==0)
  130.                    return true;
  131.         else
  132.                    return false;
  133. }
  134.  
  135. int kuadran(point p)
  136. {
  137.     int kd;
  138.    
  139.     if ((p.x>0) && (p.y>0))
  140.                  kd = 1;
  141.     else
  142.         if ((p.x<0) && (p.y>0))
  143.                      kd = 2;
  144.         else
  145.             if ((p.x<0) && (p.y<0))
  146.                         kd = 3;
  147.             else
  148.                 if ((p.x>0) && (p.y<0))
  149.                             kd = 4;
  150.                 else
  151.                     kd = 0;
  152.     return kd;
  153. }
  154.  
  155. point nextx(point p)
  156. {    
  157.       return makepoint(p.x+=1,p.y);
  158. }
  159.  
  160. point nexty(point p)
  161. {
  162.       return makepoint(p.x,p.y+=1);
  163. }
  164.  
  165. point plusdelta(point p,int deltax,int deltay)
  166. {
  167.       return makepoint(p.x+=deltax, p.y+=deltay);
  168. }
  169.  
  170. point mirrorofpoint(point p,boolean sbx,boolean sby)
  171. {
  172.       if (sbx==1)
  173.          p.y*=-1;
  174.       else
  175.           if (sby==1)
  176.              p.x*=-1;
  177.          
  178.       return p;
  179. }
  180.  
  181. float jarak0(point p)
  182. {
  183.       float d = sqrt ((p.x^2) + (p.y^2));
  184.      
  185.       return d;      
  186. }
  187.  
  188. void geserpoint(point *p,int deltax,int deltay)
  189. {
  190.      (*p).x+=deltax;
  191.      (*p).y+=deltay;
  192.      
  193. //printf("P digeser sebanyak %d %d menjadi %d %d\n",deltax,deltay,(*p).x,(*p).y);
  194. }
  195.  
  196.  
  197. void geserpointkesbx(point *p)
  198. {
  199.      (*p).y=0;
  200. printf("P digeser ke sumbu X menjadi %d %d\n", (*p).x,(*p).y);
  201. }
  202.  
  203.  
  204. void geserpointkesby(point *p)
  205. {
  206.      (*p).x=0;
  207. printf("P digeser ke sumbu Y menjadi %d %d\n", (*p).x,(*p).y);
  208. }
  209.  
  210. void mirrorpoint(point *p,boolean sbx,boolean sby)
  211. {
  212.      if (sbx==1)
  213.         (*p).y*=-1;
  214.      else
  215.          if (sby==1)
  216.             (*p).x*=-1;
  217. }
  218.  
  219. void putarpoint(point *p,float sudut)
  220. {
  221.      
  222.      (*p).x=(((*p).x*cos(sudut))((*p).y*sin(sudut)));
  223.      (*p).y=(((*p).x*sin(sudut))((*p).y*cos(sudut)));    
  224.  
  225. }
  226.  

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s