int Panjang (POINT P1, POINT P2) /* Menghitung jarak antara 2 titik yaitu tiik P1 dan titik P2 */ { //Kamus float Jx=Absis(P1)-Absis(P2), Jy=Ordinat(P1)-Ordinat(P2); //Algoritma return abs(Jx) + abs(Jy); }
void Geser(POINT *P, int deltaX, int deltaY) /* I.S. P terdefinisi */ /* F.S. P digeser, absisnya sebesar deltaX dan ordinatnya sebesar deltaY */ { Absis(*P) += deltaX; Ordinat(*P) += deltaY; }
int main(){ int x, y; POINT P1, P2; x = 2; y = 3; printf("Nilai yang akan dimasukkan ke titik 1 x = %d, y = %d\n", x, y); P1 = MakePOINT(x,y); printf("Nilai titik 1 x = %d, y = %d\n", Absis(P1), Ordinat(P1)); printf("Hasil fungsi TulisPOINT untuk titik 1 : "); TulisPOINT(P1); puts(""); x = 1; y = 4; printf("Nilai yang akan dimasukkan ke titik 1 x = %d, y = %d\n", x, y); P2 = MakePOINT(x,y); puts("Tes fungsi EQ dan NEQ (0 = false, 1 = true)"); printf("EQ titik 1 dan 2 adalah %d\n", EQ(P1,P2)); printf("NEQ titik 1 dan 2 adalah %d\n", NEQ(P1,P2)); x = 2; y = 3; printf("Nilai yang akan dimasukkan ke titik 1 x = %d, y = %d\n", x, y); P2 = MakePOINT(x,y); puts("Tes fungsi EQ dan NEQ (0 = false, 1 = true)"); printf("EQ titik 1 dan 2 adalah %d\n", EQ(P1,P2)); printf("NEQ titik 1 dan 2 adalah %d\n", NEQ(P1,P2)); return 0; }
POINT PlusDelta (POINT P, int deltaX, int deltaY) /* Mengirim salinan P yang absisnya adalah Absis(P) + deltaX dan ordinatnya adalah Ordinat(P) + deltaY */ { //Algoritma Absis(P)+=deltaX; Ordinat(P)+=deltaY; return P; }
/* *** Konstruktor membentuk POINT *** */ POINT MakePOINT (int X, int Y) /* Membentuk sebuah POINT dari komponen-komponennya */ { //Kamus POINT P; //Algoritma Absis(P)=X; Ordinat(P)=Y; return P; }
/* *** Konstruktor membentuk POINT *** */ POINT MakePOINT(int X, int Y) /* Membentuk sebuah POINT dari komponen-komponennya */ { POINT point; Absis(point) = X; Ordinat(point) = Y; return point; }
/* *** KELOMPOK Interaksi dengan I/O device, BACA/TULIS *** */ void TulisPOINT (POINT P) /* Nilai P ditulis ke layar dengan format "(X,Y)" tanpa spasi, enter, atau karakter lain di depan, belakang, atau di antaranya Output X dan Y harus dituliskan dalam bilangan riil dengan 2 angka di belakang koma. */ /* I.S. P terdefinisi */ /* F.S. P tertulis di layar dengan format "(X,Y)" */ { //Algoritma printf("(%d,%d)\n",Absis(P),Ordinat(P)); }
POINT PlusDelta(POINT P, int deltaX, int deltaY) /* Mengirim salinan P yang absisnya adalah Absis(P) + deltaX dan ordinatnya adalah Ordinat(P) + deltaY */ { return MakePOINT(Absis(P) + deltaX, Ordinat(P) + deltaY); }
POINT NextY(POINT P) /* Mengirim salinan P dengan ordinat ditambah satu */ { return MakePOINT(Absis(P), Ordinat(P) + 1); }
/* *** KELOMPOK OPERASI LAIN TERHADAP TYPE *** */ POINT NextX(POINT P) /* Mengirim salinan P dengan absis ditambah satu */ { return MakePOINT(Absis(P) + 1, Ordinat(P)); }
boolean NEQ(POINT P1, POINT P2) /* Mengirimkan true jika P1 tidak sama dengan P2 */ { return Absis(P1) != Absis(P2) || Ordinat(P1) != Ordinat(P2); }
/* *** Kelompok operasi relasional terhadap POINT *** */ boolean EQ(POINT P1, POINT P2) /* Mengirimkan true jika P1 = P2 : absis dan ordinatnya sama */ { return Absis(P1) == Absis(P2) && Ordinat(P1) == Ordinat(P2); }
/* *** KELOMPOK OPERASI LAIN TERHADAP TYPE *** */ POINT NextX (POINT P) /* Mengirim salinan P dengan absis ditambah satu */ { //Algoritma Absis(P)+=1; return P; }
/* *** Kelompok operasi relasional terhadap POINT *** */ boolean EQ (POINT P1, POINT P2) /* Mengirimkan true jika P1 = P2 : absis dan ordinatnya sama */ { //Algoritma return (Absis(P1)==Absis(P2))&&(Ordinat(P1)==Ordinat(P2)); }