Advertisement
fikri2992

Untitled

Mar 11th, 2016
288
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.02 KB | None | 0 0
  1.  
  2. //proprocessor
  3. #include <stdio.h>
  4. //#include <conio.h> <-- kalo mau pake ini mesti diwindows dan di borland gcc ga terlalu support CMIIW
  5. #include "BOOLEAN.h"
  6.  
  7. //pembentukan tipe Point
  8. typedef struct{
  9. int Abs, Ord;
  10. }Point;
  11.  
  12. //prorotype Point
  13. //Konstruktor
  14. void CreatePoint(Point *P);
  15. /* I.S : P terdefinisi, tidak diketahui nilainya
  16. F.S : P diinisialisasi nilainya dengan Abs=0, Ord=0 */
  17.  
  18. //Selektor
  19. int getAbsis(Point P);
  20. /* mengirim absis dari P */
  21.  
  22. int getOrdinat(Point P);
  23. /* mengirim ordinat dari P */
  24.  
  25. void setAbsis(Point *P, int newX);
  26. /* I.S : P terdefinisi sembarang, mungkin masih kosong
  27. F.S : komponen absis dari P diset dengan nilai newX */
  28.  
  29. void setOrdinat(Point *P, int newY);
  30. /* I.S : P terdefinisi sembarang, mungkin masih kosong
  31. F.S
  32. : komponen ordinat dari P diset dengan nilai newY */
  33.  
  34. void setPoint(Point *P, Point newP);
  35. /* I.S : P terdefinisi sembarang, mungkin masih kosong
  36. F.S : P diset dengan nilai newP sebuah Point */
  37.  
  38. //Interaksi dengan I/O
  39. void cetakPoint(Point P);
  40. /* I.S : P terdefinisi sembarang dan tidak kosong
  41. F.S : komponen dari P dicetak dengan format P(x,y) */
  42.  
  43. void tulisPoint(Point *P, int x, int y);
  44. /* I.S : P terdefinisi sembarang, mungkin kosong
  45. F.S : komponen P berubah Abs=x, Ord=y */
  46.  
  47. //Operasi Aritmatika
  48. Point PointPlus(Point P1, Point P2);
  49. /* mengirim sebuah Point baru hasil penjumlahan P1 dan P2 */
  50.  
  51. Point PointMin(Point P1, Point P2);
  52. /* mengirim sebuah Point baru hasil pengurangan P1 dengan P2 */
  53. Point PointCross(Point P1, Point P2);
  54. /* mengirim sebuah Point baru hasil perkalian P1 dan P2 */
  55.  
  56. //Operasi Relasional dan boolean
  57. BOOLEAN IsPointEqual(Point P1, Point P2);
  58. /* mengirim true jika P1=P2, false sebaliknya */
  59.  
  60. BOOLEAN IsPointGT(Point P1, Point P2);
  61. /* mengirim true jika P1 > P2, dan false jika P1 <= P2 */
  62.  
  63. int KuadranPoint(Point P);
  64. /* mengirim nilai kuadran letak P */
  65.  
  66. void geserPoint(Point *P, int dx, int dy);
  67. /* I.S : P terdefinisi sembarang, tidak kosong
  68. F.S : P gergeser sebesar dx dan dy */
  69.  
  70. //main driver
  71. int main(){
  72. //kamus global
  73. Point MyPoint1, MyPoint2,MyPointPlus,MyPointMin,MyPointCros;
  74. int x1,y1,x2,y2;
  75. int gesX1,gesX2,gesX3,gesX4;
  76. int kuadran,kuadran2;
  77. BOOLEAN GT,EQ;
  78. //algoritma
  79. CreatePoint(&MyPoint1);
  80. CreatePoint(&MyPoint2);
  81. cetakPoint(MyPoint1);
  82. cetakPoint(MyPoint2);
  83. printf("\nMasukan nilai x1 :");scanf("%d",&x1);
  84. printf("Masukan nilai y1 :");scanf("%d",&y1);
  85. tulisPoint(&MyPoint1,x1,y1);
  86. cetakPoint(MyPoint1);
  87. printf("\nMasukan nilai x2 :");scanf("%d",&x2);
  88. printf("Masukan nilai y2 :");scanf("%d",&y2);
  89. tulisPoint(&MyPoint2,x2,y2);
  90. cetakPoint(MyPoint2);
  91. GT=IsPointGT(MyPoint1,MyPoint2);
  92. if(GT==true){
  93. printf("Point 1 Lebih Besar dari Point 2\n");
  94. }else{
  95. printf("Point 2 Lebih Besar dari Point 1\n");
  96. }
  97. EQ=IsPointEqual(MyPoint1,MyPoint2);
  98. if(EQ==true){
  99. printf("Point 1 memiliki Nilai yg sama dengan Point 2\n");
  100. }else{
  101. printf("Point 1 memiliki Nilai yg berbeda dengan Point 2\n");
  102. }
  103. kuadran=KuadranPoint(MyPoint1);
  104. printf("\nPoint 1 Menempati kuadran %d",kuadran);
  105. kuadran2= KuadranPoint(MyPoint2);
  106. printf("\nPoint 2 Menempati kuadran %d",kuadran2);
  107. MyPointPlus=PointPlus(MyPoint1,MyPoint2);
  108. printf("jumlah setelah Point 1 di tambahkan dengan Point 2 adalah :P(%d,%d)\n",MyPointPlus.Abs,MyPointPlus.Ord);
  109. MyPointMin=PointMin(MyPoint1,MyPoint2);
  110. printf("jumlah setelah Point 1 di kurangi dengan Point 2 adalah :P(%d,%d)\n",MyPointMin.Abs,MyPointMin.Ord);
  111. MyPointCros=PointCross(MyPoint1,MyPoint2);
  112. printf("jumlah setelah Point 1 di kali dengan Point 2 adalah :P(%d,%d)\n",MyPointCros.Abs,MyPointCros.Ord);
  113. kuadran= KuadranPoint(MyPoint1);
  114. printf("geser x1 ke :");scanf("%d",&gesX1);
  115. printf("geser y1 ke :");scanf("%d",&gesX2);
  116. cetakPoint(MyPoint1);
  117. printf("geser x2 ke :");scanf("%d",&gesX3);
  118. printf("geser y2 ke :");scanf("%d",&gesX4);
  119. cetakPoint(MyPoint2);
  120. getch();
  121. return 0;
  122. }
  123.  
  124. //Realisasi dari protutype ADT Point
  125. //Konstruktor
  126. void CreatePoint(Point *P){
  127. /* I.S : P terdefinisi, tidak diketahui nilainya
  128. F.S : P diinisialisasi nilainya dengan Abs=0, Ord=0 */
  129. (*P).Abs=0;
  130. (*P).Ord=0;
  131.  
  132. }
  133. //Selektor
  134. int getAbsis(Point P){
  135. /* mengirim absis dari P */
  136. int absis;
  137. absis = P.Abs;
  138. return absis;
  139. }
  140. int getOrdinat(Point P){
  141. /* mengirim ordinat dari P */
  142. int ordinat;
  143. ordinat = P.Ord;
  144. return ordinat;
  145. }
  146. void setAbsis(Point *P, int newX){
  147. /* I.S : P terdefinisi sembarang, mungkin masih kosong
  148. F.S : komponen absis dari P diset dengan nilai newX */
  149. (*P).Abs = newX;
  150. }
  151. void setOrdinat(Point *P, int newY){
  152. /* I.S : P terdefinisi sembarang, mungkin masih kosong
  153. F.S : komponen ordinat dari P diset dengan nilai newY */
  154. (*P).Ord =newY;
  155.  
  156. }
  157. void setPoint(Point *P, Point newP){
  158. /* I.S : P terdefinisi sembarang, mungkin masih kosong
  159. F.S : P diset dengan nilai newP sebuah Point */
  160. (*P).Abs=newP.Abs;
  161. (*P).Ord=newP.Ord;
  162. }
  163. //Interaksi dengan I/O
  164. void cetakPoint(Point P){
  165. /* I.S : P terdefinisi sembarang dan tidak kosong
  166. F.S : komponen dari P dicetak dengan format P(x,y) */
  167. printf("\nP(%d,%d)",P.Abs,P.Ord);
  168. }
  169. void tulisPoint(Point *P, int x, int y){
  170. /* I.S : P terdefinisi sembarang, mungkin kosong
  171. F.S : komponen P berubah Abs=x, Ord=y */
  172. (*P).Abs=x;
  173. (*P).Ord=y;
  174. }
  175. //Operasi Aritmatika
  176. Point PointPlus(Point P1, Point P2){
  177. /* mengirim sebuah Point baru hasil penjumlahan P1 dan P2 */
  178. Point p3;
  179. p3.Abs=P1.Abs+P2.Abs;
  180. p3.Ord=P1.Ord+P2.Ord;
  181. return p3;
  182. }
  183.  
  184. Point PointMin(Point P1, Point P2){
  185. /* mengirim sebuah Point baru h/asil pengurangan P1 dengan P2 */
  186. Point p3;
  187. p3.Abs=P1.Abs-P2.Abs;
  188. p3.Ord=P1.Ord-P2.Ord;
  189. return p3;
  190. }
  191. Point PointCross(Point P1, Point P2){
  192. /* mengirim sebuah Point baru hasil perkalian P1 dan P2 */
  193. Point p3;
  194. p3.Abs=(P1.Abs * P2.Abs);
  195. p3.Ord=(P1.Ord * P2.Ord);
  196. return p3;
  197. }
  198.  
  199. //Operasi Relasional dan boolean
  200. BOOLEAN IsPointEqual(Point P1, Point P2){
  201. /* mengirim true jika P1=P2, false sebaliknya */
  202. BOOLEAN sama;
  203. sama =false;
  204. if(P1.Abs == P2.Abs && P1.Ord == P2.Ord){
  205. sama =true;
  206. }
  207. return sama;
  208. }
  209. BOOLEAN IsPointGT(Point P1, Point P2){
  210. /* mengirim true jika P1 > P2, dan false jika P1 <= P2 */
  211. BOOLEAN sama;
  212. sama =false;
  213. if(P1.Abs > P2.Abs && P1.Ord > P2.Ord){
  214. sama= true;
  215. }
  216. return sama;
  217. }
  218. int KuadranPoint(Point P){
  219. /* mengirim nilai kuadran letak P */
  220. int kuadran;
  221. if(P.Abs > 0 && P.Ord > 0 ){
  222. kuadran =1;
  223. }
  224. else if(P.Abs > 0 && P.Ord < 0){
  225. kuadran =2;
  226. }
  227. else if(P.Abs < 0 && P.Ord < 0){
  228. kuadran =3;
  229. }
  230. else if(P.Abs < 0 && P.Ord > 0){
  231. kuadran =4;
  232. }
  233. else if(P.Abs == 0 && P.Ord == 0){
  234. kuadran =0;
  235. }
  236. return (kuadran);
  237. }
  238. void geserPoint(Point *P, int dx, int dy){
  239. /* I.S : P terdefinisi sembarang, tidak kosong
  240. F.S : P gergeser sebesar dx dan dy */
  241. (*P).Abs = (*P).Abs+dx;
  242. (*P).Ord = (*P).Ord+dy;
  243. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement