Senin, 07 Januari 2013

Program Point Lengkap pada C

Program 1 boolean.h

#ifndef boolean_H
#define boolean_H
#define true 1
#define false 0
#define boolean unsigned char
#endif


Program 2 point.h
/* Program    : Point.h                  */
/* Deskripsi  : Spesifikasi ADT Point*/
/* Author             :                     */
/* Tanggal/Versi :                    */

#ifndef  POINT_H
#define POINT_H

/* definisi type data POINT */
typedef  struct  {
                 int  x;
                 int y;
             } POINT;


/*  PROTOTYPE */

/*KELOMPOK CREATOR */

void MakePoint(POINT *P, int XX, int YY);
/*Prosedur untuk membuat POINT dengan nilai dari user*/

POINT CreatePoint(int XX, int YY);
/*Fungsi untuk menghasilkan sebuah POINT berdasarkan nilai-nilai dari user*/

/*KELOMPOK VALIDASI*/
/* Tidak ada Validasi, Asumsi : koordinat Point tidak terbatas*/

/*KELOMPOK GET/SET */

int GetX(POINT P);
/*mengembalikan nilai X dari sebuah Point P */

int GetY(POINT P);
/*mengembalikan nilai Y dari sebuah Point P */

void SetX(POINT *P);
/*memberikan/mengubah nilai X dari sebuah Point P */

void SetY(POINT *P);
/*memberikan/mengubah nilai Y dari sebuah Point P */


/*KELOMPOK PRINT/CETAK*/

void PrintPoint(POINT P);
/* Menampilkan POINT dengan format (x,y) */

/*KELOMPOK LAIN */

boolean IsEqual(POINT P1, POINT P2);
/*Mengembalikan True jika P1 = P2, dan False jika sebaliknya */

int Kuadran(POINT P);
/* menghasilkan kuadran dari POINT P*/

boolean IsOnSumbuX(POINT P);
/* Mengirimkan True jika P ada di sumbu X  */

boolean IsOnSumbuY(POINT P);
/* Mengirimkan True jika P ada di sumbu Y  */

boolean IsOrigin(POINT P);
/* Mengirimkan True jika P ada di titik pusat */

void NextX(POINT *P);
/* Menggeser P 1 koordinat ke kanan*/
void PrevX(POINT *P);
/* Menggeser P 1 koordinat ke kiri*/
void NextY(POINT *P);
/* Menggeser P 1 koordinat ke atas*/
void PrevY(POINT *P);
/* Menggeser P 1 koordinat ke bawah*/

void NextX_N(POINT *P, int N);
/* Menggeser P, sejauh N koordinat ke kanan*/
void PrevX_N(POINT *P, int N);
/* Menggeser P, sejauh N koordinat ke kiri*/
void NextY_N(POINT *P, int N);
/* Menggeser P, sejauh N koordinat ke atas*/
void PrevY_N(POINT *P, int N);
/* Menggeser P, sejauh N koordinat ke bawah*/


/*MENGHITUNG JARAK DUA POINT */
float Jarak (POINT P1, POINT P2);
/*Menghasilkan jarak P1 dan P2 */

#include
#include
#include "boolean.h"

POINT CreatePoint(int XX, int YY){
POINT Temp;
Temp.x=XX;
Temp.y=YY;
return Temp;
}

float Jarak (POINT P1, POINT P2){
int temp1,temp2;
float temp;
temp1=(GetX(P1)-GetX(P2))*(GetX(P1)-GetX(P2));
temp2=(GetY(P1)-GetY(P2))*(GetY(P1)-GetY(P2));
temp=sqrt(temp1+temp2);
return temp;
}

int GetX(POINT P){
    return P.x;
}

int GetY(POINT P){
    return P.y;
}

void SetX(POINT *P, int x){
    (*P).x=x;
}
void SetY(POINT *P,int y){
    (*P).y=y;
}

void NextX(POINT *P){
    (*P).x=(*P).x+1;
}
void PrevX(POINT *P){
    (*P).x=(*P).x-1;
}
void NextY(POINT *P){
    (*P).y=(*P).y+1;
}
void PrevY(POINT *P){
    (*P).y=(*P).y-1;
}

void NextX_N(POINT *P, int N){
     (*P).x=(*P).x+N;
}
void PrevX_N(POINT *P, int N){
     (*P).x=(*P).x-N;
}
void NextY_N(POINT *P, int N){
     (*P).y=(*P).y+N;
}
void PrevY_N(POINT *P, int N){
     (*P).y=(*P).y-N;
}

boolean IsEqual(POINT P1, POINT P2){
    return(P1.x==P2.x && P1.y==P2.y);
}

boolean IsOnSumbuX(POINT P){
    return(P.y==0);
}

boolean IsOnSumbuY(POINT P){
    return(P.x==0);
}

boolean IsOrigin(POINT P){
    return(P.y==0&&P.x==0);
}

int Kuadran(POINT P){
    if(P.x>0){
        if(P.y>0){
            return 1;
        }
        else{
            return 4;
        }
    }
    else{
        if(P.y>0){
            return 2;
        }
        else{
            return  3;
        }
    }
}

#endif


Program 3 posisi_p.cpp
/*File       : posisi_p.cpp
Deskripsi    : Membuat menu untuk operasi POINT
IS           : Point belum diberi Opersi dengan menggunakan prosedur dan function
FS           : Point sudah diberi Opersi dengan menggunakan prosedur dan function
Author       : Trisna A.R

Tanggal      : 26 Nov 2012
*/

#include
#include
#include "boolean.h"
#include "point.h"

main(){
POINT A,B;
int n,m,pil,xk,re;
float jarak;
printf("---TITIK UTAMA---\n");
printf("Masukkan titik X :");
scanf("%d",&n);
printf("Masukkan titik Y :");
scanf("%d",&m);

A=CreatePoint(n,m);

do{
clrscr();

printf("\n\nTIITK UTAMA X : %d",A.x);
printf("\n\nTIITK UTAMA Y : %d",A.y);
printf("\n\n---POSISI TITIK UTAMA---\n");

if(IsOrigin(A)){
    printf("\nIS ORIGIN");
}
else if(IsOnSumbuX(A)){
    printf("\nIS ON SUMBU X");
}
else if(IsOnSumbuY(A)){
    printf("\nIS ON SUMBU Y");
}
else{
    switch(Kuadran(A)){
case 1: {
    printf("\nKUADRAN 1");break;
    }
case 2: {
    printf("\nKUADRAN 2");break;
    }
case 3: {
    printf("\nKUADRAN 3");break;
    }
case 4: {
    printf("\nKUADRAN 4");break;
    }
    }

}
printf("\n\n---PILIHAN UNTUK TITIK UTAMA---\n");
printf("\n1.    Geser Titik Utama ke Kanan sejauh n ");
printf("\n2.    Geser Titik Utama ke Kiri sejauh n ");
printf("\n3.    Geser Titik Utama ke Atas sejauh n ");
printf("\n4.    Geser Titik Utama ke Bawah sejauh n ");
printf("\n5.    Geser Titik Utama ke Kanan sejauh 1 ");
printf("\n6.    Geser Titik Utama ke Kiri sejauh 1 ");
printf("\n7.    Geser Titik Utama ke Atas sejauh 1 ");
printf("\n8.    Geser Titik Utama ke Bawah sejauh 1 ");
printf("\n9.    Set X Titik Utama ");
printf("\n10.    Set Y Titik Utama ");
printf("\n11.    Hitung Jarak Titik Utama ke Titik Masukan");
printf("\n12.    Mencocokan Titik Utama ke Titik Masukan");


printf("\n\nMasukkan pilihan    : ");
scanf("%d",&pil);
printf("\n\n");
    if(pil==1){
        do{
        printf("Geser Titik Utama ke Kanan sejauh X: ");
        scanf("%d",&xk);
        }while(xk<0 br="br">        NextX_N(&A,xk);
        printf("\nPosisi Titik Utama X : %d dan Y: %d  ", A.x,A.y);
    }
    else if(pil==2){
        do{
        printf("Geser Titik Utama ke Kiri sejauh X: ");
        scanf("%d",&xk);
        }while(xk<0 br="br">        PrevX_N(&A,xk);
        printf("\nPosisi Titik Utama X : %d dan Y: %d  ", A.x,A.y);
    }
    else if(pil==3){
        do{
        printf("Geser Titik Utama ke Atas sejauh Y: ");
        scanf("%d",&xk);
        }while(xk<0 br="br">        NextY_N(&A,xk);
        printf("\nPosisi Titik Utama X : %d dan Y: %d  ", A.x,A.y);
    }
        else if(pil==4){
        do{
        printf("Geser Titik Utama ke Bawah sejauh Y: ");
        scanf("%d",&xk);
        }while(xk<0 br="br">        PrevY_N(&A,xk);
        printf("\nPosisi Titik Utama X : %d dan Y: %d  ", A.x,A.y);
    }
        else if(pil==5){
        printf("Geser Titik Utama ke Kanan sejauh 1");
        NextX(&A);
        printf("\nPosisi Titik Utama X : %d dan Y: %d  ", A.x,A.y);
    }
        else if(pil==6){
        printf("Geser Titik Utama ke Kiri sejauh 1");
        PrevX(&A);
        printf("\nPosisi Titik Utama X : %d dan Y: %d  ", A.x,A.y);
    }
        else if(pil==7){
        printf("Geser Titik Utama ke Atas sejauh 1");
        NextY(&A);
        printf("\nPosisi Titik Utama X : %d dan Y: %d  ", A.x,A.y);
    }
        else if(pil==8){
        printf("Geser Titik Utama ke Bawah sejauh 1");
        PrevY(&A);
        printf("\nPosisi Titik Utama X : %d dan Y: %d  ", A.x,A.y);
    }
        else if(pil==9){
        printf("Ubah Titik Utama X menjadi : ");
        scanf("%d",&xk);
        SetX(&A,xk);
        printf("\nPosisi Titik Utama X : %d dan Y: %d  ", A.x,A.y);
    }
        else if(pil==10){
        printf("Ubah Titik Utama Y menjadi : ");
        scanf("%d",&xk);
        SetY(&A,xk);
        printf("\nPosisi Titik Utama X : %d dan Y: %d  ", A.x,A.y);
    }
        else if(pil==11){
        printf("\nTitik Anda :");

        printf("\nMasukkan titik X2 :");
        scanf("%d",&n);
        printf("\nMasukkan titik Y2 :");
        scanf("%d",&m);
        B=CreatePoint(n,m);
        jarak=Jarak(A,B);
        printf("\nJarak Titik Utama dengan Titik Anda %.2f : ",jarak);

    }
        else if(pil==12){
        printf("\nTitik Anda :");

        printf("\nMasukkan Titik X2 :");
        scanf("%d",&n);
        printf("\nMasukkan Titik Y2 :");
        scanf("%d",&m);
        B=CreatePoint(n,m);
        if(IsEqual(A,B)){
            printf("\nTitik Utama EQUAL Titik Anda");
        }
        else{
            printf("\nTitik Utama NOT EQUAL Titik Anda");
        }


    }

    else{
        printf("Masukkan Anda Salah");
    }

    printf("\n\nOperasi Point Lagi ? 1(yes) atau 0(no) : ");
    scanf("%d",&re);

    }while(re==1);

}

Tidak ada komentar:

Posting Komentar

Author

Trisna Ari Roshinta

Subscribe & Follow

Disini saya hanya sharing beberapa pengalaman saya selama belajar informatika. Silahkan bertanya jika ada yang ingin ditanyakan..

Labels