Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //proprocessor
- #include <stdio.h>
- //#include <conio.h> <-- kalo mau pake ini mesti diwindows dan di borland gcc ga terlalu support CMIIW
- #include "BOOLEAN.h"
- //pembentukan tipe Point
- typedef struct{
- int Abs, Ord;
- }Point;
- //prorotype Point
- //Konstruktor
- void CreatePoint(Point *P);
- /* I.S : P terdefinisi, tidak diketahui nilainya
- F.S : P diinisialisasi nilainya dengan Abs=0, Ord=0 */
- //Selektor
- int getAbsis(Point P);
- /* mengirim absis dari P */
- int getOrdinat(Point P);
- /* mengirim ordinat dari P */
- void setAbsis(Point *P, int newX);
- /* I.S : P terdefinisi sembarang, mungkin masih kosong
- F.S : komponen absis dari P diset dengan nilai newX */
- void setOrdinat(Point *P, int newY);
- /* I.S : P terdefinisi sembarang, mungkin masih kosong
- F.S
- : komponen ordinat dari P diset dengan nilai newY */
- void setPoint(Point *P, Point newP);
- /* I.S : P terdefinisi sembarang, mungkin masih kosong
- F.S : P diset dengan nilai newP sebuah Point */
- //Interaksi dengan I/O
- void cetakPoint(Point P);
- /* I.S : P terdefinisi sembarang dan tidak kosong
- F.S : komponen dari P dicetak dengan format P(x,y) */
- void tulisPoint(Point *P, int x, int y);
- /* I.S : P terdefinisi sembarang, mungkin kosong
- F.S : komponen P berubah Abs=x, Ord=y */
- //Operasi Aritmatika
- Point PointPlus(Point P1, Point P2);
- /* mengirim sebuah Point baru hasil penjumlahan P1 dan P2 */
- Point PointMin(Point P1, Point P2);
- /* mengirim sebuah Point baru hasil pengurangan P1 dengan P2 */
- Point PointCross(Point P1, Point P2);
- /* mengirim sebuah Point baru hasil perkalian P1 dan P2 */
- //Operasi Relasional dan boolean
- BOOLEAN IsPointEqual(Point P1, Point P2);
- /* mengirim true jika P1=P2, false sebaliknya */
- BOOLEAN IsPointGT(Point P1, Point P2);
- /* mengirim true jika P1 > P2, dan false jika P1 <= P2 */
- int KuadranPoint(Point P);
- /* mengirim nilai kuadran letak P */
- void geserPoint(Point *P, int dx, int dy);
- /* I.S : P terdefinisi sembarang, tidak kosong
- F.S : P gergeser sebesar dx dan dy */
- //main driver
- int main(){
- //kamus global
- Point MyPoint1, MyPoint2,MyPointPlus,MyPointMin,MyPointCros;
- int x1,y1,x2,y2;
- int gesX1,gesX2,gesX3,gesX4;
- int kuadran,kuadran2;
- BOOLEAN GT,EQ;
- //algoritma
- CreatePoint(&MyPoint1);
- CreatePoint(&MyPoint2);
- cetakPoint(MyPoint1);
- cetakPoint(MyPoint2);
- printf("\nMasukan nilai x1 :");scanf("%d",&x1);
- printf("Masukan nilai y1 :");scanf("%d",&y1);
- tulisPoint(&MyPoint1,x1,y1);
- cetakPoint(MyPoint1);
- printf("\nMasukan nilai x2 :");scanf("%d",&x2);
- printf("Masukan nilai y2 :");scanf("%d",&y2);
- tulisPoint(&MyPoint2,x2,y2);
- cetakPoint(MyPoint2);
- GT=IsPointGT(MyPoint1,MyPoint2);
- if(GT==true){
- printf("Point 1 Lebih Besar dari Point 2\n");
- }else{
- printf("Point 2 Lebih Besar dari Point 1\n");
- }
- EQ=IsPointEqual(MyPoint1,MyPoint2);
- if(EQ==true){
- printf("Point 1 memiliki Nilai yg sama dengan Point 2\n");
- }else{
- printf("Point 1 memiliki Nilai yg berbeda dengan Point 2\n");
- }
- kuadran=KuadranPoint(MyPoint1);
- printf("\nPoint 1 Menempati kuadran %d",kuadran);
- kuadran2= KuadranPoint(MyPoint2);
- printf("\nPoint 2 Menempati kuadran %d",kuadran2);
- MyPointPlus=PointPlus(MyPoint1,MyPoint2);
- printf("jumlah setelah Point 1 di tambahkan dengan Point 2 adalah :P(%d,%d)\n",MyPointPlus.Abs,MyPointPlus.Ord);
- MyPointMin=PointMin(MyPoint1,MyPoint2);
- printf("jumlah setelah Point 1 di kurangi dengan Point 2 adalah :P(%d,%d)\n",MyPointMin.Abs,MyPointMin.Ord);
- MyPointCros=PointCross(MyPoint1,MyPoint2);
- printf("jumlah setelah Point 1 di kali dengan Point 2 adalah :P(%d,%d)\n",MyPointCros.Abs,MyPointCros.Ord);
- kuadran= KuadranPoint(MyPoint1);
- printf("geser x1 ke :");scanf("%d",&gesX1);
- printf("geser y1 ke :");scanf("%d",&gesX2);
- cetakPoint(MyPoint1);
- printf("geser x2 ke :");scanf("%d",&gesX3);
- printf("geser y2 ke :");scanf("%d",&gesX4);
- cetakPoint(MyPoint2);
- getch();
- return 0;
- }
- //Realisasi dari protutype ADT Point
- //Konstruktor
- void CreatePoint(Point *P){
- /* I.S : P terdefinisi, tidak diketahui nilainya
- F.S : P diinisialisasi nilainya dengan Abs=0, Ord=0 */
- (*P).Abs=0;
- (*P).Ord=0;
- }
- //Selektor
- int getAbsis(Point P){
- /* mengirim absis dari P */
- int absis;
- absis = P.Abs;
- return absis;
- }
- int getOrdinat(Point P){
- /* mengirim ordinat dari P */
- int ordinat;
- ordinat = P.Ord;
- return ordinat;
- }
- void setAbsis(Point *P, int newX){
- /* I.S : P terdefinisi sembarang, mungkin masih kosong
- F.S : komponen absis dari P diset dengan nilai newX */
- (*P).Abs = newX;
- }
- void setOrdinat(Point *P, int newY){
- /* I.S : P terdefinisi sembarang, mungkin masih kosong
- F.S : komponen ordinat dari P diset dengan nilai newY */
- (*P).Ord =newY;
- }
- void setPoint(Point *P, Point newP){
- /* I.S : P terdefinisi sembarang, mungkin masih kosong
- F.S : P diset dengan nilai newP sebuah Point */
- (*P).Abs=newP.Abs;
- (*P).Ord=newP.Ord;
- }
- //Interaksi dengan I/O
- void cetakPoint(Point P){
- /* I.S : P terdefinisi sembarang dan tidak kosong
- F.S : komponen dari P dicetak dengan format P(x,y) */
- printf("\nP(%d,%d)",P.Abs,P.Ord);
- }
- void tulisPoint(Point *P, int x, int y){
- /* I.S : P terdefinisi sembarang, mungkin kosong
- F.S : komponen P berubah Abs=x, Ord=y */
- (*P).Abs=x;
- (*P).Ord=y;
- }
- //Operasi Aritmatika
- Point PointPlus(Point P1, Point P2){
- /* mengirim sebuah Point baru hasil penjumlahan P1 dan P2 */
- Point p3;
- p3.Abs=P1.Abs+P2.Abs;
- p3.Ord=P1.Ord+P2.Ord;
- return p3;
- }
- Point PointMin(Point P1, Point P2){
- /* mengirim sebuah Point baru h/asil pengurangan P1 dengan P2 */
- Point p3;
- p3.Abs=P1.Abs-P2.Abs;
- p3.Ord=P1.Ord-P2.Ord;
- return p3;
- }
- Point PointCross(Point P1, Point P2){
- /* mengirim sebuah Point baru hasil perkalian P1 dan P2 */
- Point p3;
- p3.Abs=(P1.Abs * P2.Abs);
- p3.Ord=(P1.Ord * P2.Ord);
- return p3;
- }
- //Operasi Relasional dan boolean
- BOOLEAN IsPointEqual(Point P1, Point P2){
- /* mengirim true jika P1=P2, false sebaliknya */
- BOOLEAN sama;
- sama =false;
- if(P1.Abs == P2.Abs && P1.Ord == P2.Ord){
- sama =true;
- }
- return sama;
- }
- BOOLEAN IsPointGT(Point P1, Point P2){
- /* mengirim true jika P1 > P2, dan false jika P1 <= P2 */
- BOOLEAN sama;
- sama =false;
- if(P1.Abs > P2.Abs && P1.Ord > P2.Ord){
- sama= true;
- }
- return sama;
- }
- int KuadranPoint(Point P){
- /* mengirim nilai kuadran letak P */
- int kuadran;
- if(P.Abs > 0 && P.Ord > 0 ){
- kuadran =1;
- }
- else if(P.Abs > 0 && P.Ord < 0){
- kuadran =2;
- }
- else if(P.Abs < 0 && P.Ord < 0){
- kuadran =3;
- }
- else if(P.Abs < 0 && P.Ord > 0){
- kuadran =4;
- }
- else if(P.Abs == 0 && P.Ord == 0){
- kuadran =0;
- }
- return (kuadran);
- }
- void geserPoint(Point *P, int dx, int dy){
- /* I.S : P terdefinisi sembarang, tidak kosong
- F.S : P gergeser sebesar dx dan dy */
- (*P).Abs = (*P).Abs+dx;
- (*P).Ord = (*P).Ord+dy;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement