-
Notifications
You must be signed in to change notification settings - Fork 0
/
point.c
77 lines (68 loc) · 2.07 KB
/
point.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include "point.h"
#include <stdio.h>
POINT MakePOINT (int X, int Y){
/* Membentuk sebuah POINT dari komponen-komponennya */
POINT P;
Absis(P) = X;
Ordinat(P) = Y;
return(P);
}
/* *** KELOMPOK Interaksi dengan I/O device, BACA/TULIS *** */
void BacaPOINT (POINT * P){
/* Membaca nilai absis dan ordinat dari keyboard dan membentuk
POINT P berdasarkan dari nilai absis dan ordinat tersebut */
/* Komponen X dan Y dibaca dalam 1 baris, dipisahkan 1 buah spasi */
/* Contoh: 1 2
akan membentuk POINT <1,2> */
/* I.S. Sembarang */
/* F.S. P terdefinisi */
int a,b;
scanf("%d", &a);
scanf("%d", &b);
*P = MakePOINT(a,b);
}
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)" */
printf("%d,%d\n", Absis(P), Ordinat(P));
}
/* *** Kelompok operasi relasional terhadap POINT *** */
boolean EQ (POINT P1, POINT P2){
/* Mengirimkan true jika P1 = P2 : absis dan ordinatnya sama */
if ((Absis(P1) == Absis(P2)) && (Ordinat(P1) == Ordinat(P2))){
return(true);
}
else{
return(false);
}
}
boolean NEQ (POINT P1, POINT P2){
/* Mengirimkan true jika P1 tidak sama dengan P2 */
if ((Absis(P1) != Absis(P2)) && (Ordinat(P1) != Ordinat(P2))){
return(true);
}
else{
return(false);
}
}
/* *** KELOMPOK OPERASI LAIN TERHADAP TYPE *** */
POINT NextX (POINT P)
/* Mengirim salinan P dengan absis ditambah satu */
{
return MakePOINT(Absis(P) + 1, Ordinat(P));
}
POINT NextY (POINT P)
/* Mengirim salinan P dengan ordinat ditambah satu */
{
return MakePOINT(Absis(P), Ordinat(P) + 1);
}
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);
}