#include'stdio - zagal99.files.wordpress.com  · Web viewPerbaikilah program berikut ini hingga...

29
C.MODUL TORBO C LATIHAN Perbaikilah program berikut ini hingga benar, kesalahan dapat berupa penggunaan perintah atau fungsi yang salah, cara penulisan pernyataan yang salah dan sebagainya ? 1./*MENGOREKSI PROGRAM YANG SALAH*/ #include"stdio.h" #include"conio.h" void main() { Char [20]; int usia; printf("\nInput nama anda :"); gets(&nama); printf("\nInput usia anda :"); scanf("%d",usia); if (usia=25) printf("\nandalah karyawan yang dibutuhkan, %s",nama[20]); } 2. fungsi penyimpanan gets dan cgets #include"stdio.h" #include"conio.h" void main() { char nama[20],nama2[20]; printf("\nInputkan nama anda : "); gets(nama1); [email protected] 1

Transcript of #include'stdio - zagal99.files.wordpress.com  · Web viewPerbaikilah program berikut ini hingga...

C.MODUL TORBO C

LATIHANPerbaikilah program berikut ini hingga benar, kesalahan dapat berupa penggunaan

perintah atau fungsi yang salah, cara penulisan pernyataan yang salah dan sebagainya ? 1./*MENGOREKSI PROGRAM YANG SALAH*/

#include"stdio.h"#include"conio.h"void main(){

Char [20];int usia;

printf("\nInput nama anda :");gets(&nama);

printf("\nInput usia anda :");scanf("%d",usia);

if (usia=25)printf("\nandalah karyawan yang dibutuhkan, %s",nama[20]);

}

2. fungsi penyimpanan gets dan cgets

#include"stdio.h"#include"conio.h"void main(){

char nama[20],nama2[20];

printf("\nInputkan nama anda : ");gets(nama1);

printf("\nsekali lagi ? :");cgets(nama2);

printf("\n%c",nama1[2]);printf("\n%c",nama2[2]);printf("\n%d",nama1[2]);printf("\n%d",nama2[2]);getch();

}

[email protected] 1

C.MODUL TORBO C

1. Makro

Makro dapat dianggap sebagai sebuah fungsi yang sederhana. Beberapa pernyataan dan perintah yang perlu dipelajari sebelum anda mulai menyusun suatu makro adalah :

Preprocessor directives, #define,dan #include.

- Preprocessor directives selalu diawali dengan tanda : #- Fungsi #define : mendefinisikan suatu nilai tertentu kepada suatu nama konstanta.- Fungsi #include : berfungsi untuk memasukkan file-fle header kedalam program anda.- Bentuk umum Preprocessor directives #define nama_konstanta text.- Text ini dapat berupa : 1. numeric Ex: #define PI 3.14432 2. karakter Ex: #define ABJAD ‘A’ 3. string Ex: #define NAMA “AMIR” 4. pernyataan Ex:#define CETAK printf(“\nBagus

sekali”)A. Preprocessor directives

Ex 1: Preprocessor directives

#include <stdio.h>#include<conio.h>Void main(){ Int n=4,m,p; M=n*2; P=n+m;

Printf(”%d %d”,m,p);}

Ex 2: Preprocessor directives

#include <stdio.h>#include<conio.h>

#define N 4 /*Preprocessor directives*/void main(){

int m,p;m=N*2; /*nilai n diganti dulu dengan 4 br diterjamahkan

kedalam bahasa mesin*/p=N+m;printf("%d%d",m,p);

}

[email protected] 2

C.MODUL TORBO C

B. #define

Ex a: Luas lingkaran dengan #define

#include <stdio.h>#include<conio.h>#define PI 3.14#define L(n) PI*n*nvoid main(){ clrscr; printf("\nLUAS LINGKARAN DENGAN JARI-JARI: "); printf("\nt5 :%.3f",L(5)); printf("\nt10 :%.3f",L(10)); printf("\nt15 :%.3f",L(15));

}

Ex b: Luas lingkaran dengan #define

#include <stdio.h>#include<conio.h>float l(int n);main(){

clrscr();printf("\nLUAS LINGKARAN DENGAN JARI-JARI:\n");

printf("\nt5 :%.3f",3.14*5*5);printf("\nt10 :%.3f",3.14*10*10);printf("\nt15 :%.3f",3.14*15*15);getch();

}

* Keuntungan dan karugian mendefinisikan suatu fungsi lewat makro dibandingkan membuat fungsi tersendiri?

1. Makro hannya dapat digunakan untuk membuat suatu fungsi yang sederhana, dimana penulisan rumusnya tidak lebih dari satubaris, sedangkan fungsi dapat digunakan untuk masalah-masalah yang lebih komplek.

2. dari segi pengguaan memori. Makro umumnya membutuhkan memori lebih besar dari pada fungsi, karena semua makro yang terdapat dalam program akan diubah lebih dahulu sesuai dengan apa yang telah didefinisikan, sebelum mulai dikompilasi. Bila makro berupa suatu pernyataan yang cukup panjang dan digunakan dengan tingkat pengulangan yang tinggi, maka program anda akan membengkak sebaliknya fungsi akan dicompile seperti apa adanya, tampa mengadakan perubahan-perubahan terhadap program.

[email protected] 3

C.MODUL TORBO C

Ex: Membuat fungsi luas lingkaran

#include <stdio.h>#include<conio.h>float L(int n);void main(){

clrscr();printf("\nLUAS LINGKARAN DENGAN JARI-JARI :");printf("\nt5 :%.3f",L(5));printf("\nt10 :%.3f",L(10));printf("\nt15 :%.3f",L(15));getch();

}

Float L(int n){

return(3.14*n*n);}

C. #include

Bentuk umum #include adalah:

#include ”nama_file_header” atau include < nama_file_header>

Ex: #include “stdio.h” atau #include<conio.h>

Kedua bentuk ini memiliki perbedaan, bila nama header diletakkan diantara tanda tanda kutip ganda (“), artinnya pertama kali compiler disuruh mencari file header ini pada file directory dimana file editor (file yang sedang anda kerjakan yang mengandung perintah. #include tadi sering disebut juga sebagai source file) berada, dan bila file header tidak ditemukan dalam directory ini, maka akan dilanjutkan pada directory lain. Sedangkan untuk tanda <> compiler ini akan mencari file header ini pada directory-directory yang ada.

[email protected] 4

C.MODUL TORBO C

Ex: header

#include"stdio.h"#include"conio.h"

void hapus_layar(){

printf("\x1b[2j");}

main(){

clrscr();

hapus_layar();printf("\nproses include");getch();

} Ex: header (kutu pulang kandang)

*penggunaan perintah-perintah ANSI.SYS*/

#define PNH_ATAS "\x1b[A"#define PNH_BWH "\x1b[B"#define PNH_KA "\x1b[C"#define PNH_KI "\x1b[D"#define HPS_LYR printf("\x1b[2j")#define NORMAL "\x1b[om"#define KEDIP "\x1b[5m"#define SIMPAN printf("\x1b[s")#define KEMBALI printf("\x1b[u")#define POSISI(x,y) printf("\x1b%d;%df",y,x)#define KARAKTER printf("%c",1)

main(){

char a;int b,x=40,y=10;HPS_LYR;bingkai(20,9,60,14);judul();getch();HPS_LYR;garis_h(1,79,3);

[email protected] 5

C.MODUL TORBO C

garis_h(1,79,21);POSISI(1,1); printf("untuk menggerakkan karakter : --> <-- \x18 \x19");POSISI(30,23);printf("KUTU PULANG KANDANG");POSISI(75,15);printf("RUMAH");POSISI(75,16);printf("\xdb\xdb\xdb\xdb\xdb\xdb");POSISI(75,19);printf("\xdb\xdb\xdb\xdb\xdb\xdb");POSISI(1,22); printf("%d,%d",x,y);POSISI(40,10);KARAKTER;

while(1){ /*Gerakkan sikutu dengan anak panah*/

a=getch();switch (a){

case 72:printf(PNH_KI);printf(" ");printf(PNH_KI);printf(PNH_ATAS);KARAKTER;y--;break;

case 80:printf(PNH_KI);printf(" ");printf(PNH_KI);printf(PNH_BWH);KARAKTER;y++;break;

case 77:printf(PNH_KI);printf(" "); printf(PNH_KI);printf(PNH_KA);KARAKTER;x--;break;

}

/*menyimpan posisi kursor*/

SIMPAN;

/*mencetak posisi kursor*/

POSISI(20,22);printf("%d,%d",x,y);

/*mengmbalika posisi kursor*/

[email protected] 6

C.MODUL TORBO C

KEMBALI;

if ((x%3==0 && y%3==0) || (x%5==1 && y&5==1) || (x==63 && y==17))

{mati();break;

}

if (x>=75 && y>=17 && y<=18)

{

POSISI(35,10);printf(KEDIP);printf("KUTU SELAMAT");printf(NORMAL);break;

}}getch();

}

bingkai(x1,y1,x2,y2)int x1,y1,x2,y2;{

POSISI(x1,y1);printf("\xc9");garis_h(x1+1,x2-1,y1);POSISI(x2,y1);printf("\xbb");garis_v(x1,y1+1,y2-1);garis_v(x2,y1+1,y2-1);POSISI(x1,y2);printf("\xcb");garis_h(x1+1,x2-1,y2);POSISI(x2,y2);printf("\xbc");

}garis_h(xx1,xx2,yy)int xx1,xx2,yy;{

int i;POSISI(xx1,yy);for(i=xx1;i<=xx2;++i){

printf("\xcd");}

}

garis_v(xx,yy1,yy2)

[email protected] 7

C.MODUL TORBO C

int xx,yy1,yy2;{

int i;for (i=yy1;i<=yy2;++i){ POSISI(xx,i);printf("\xba");}

}

judul(){

POSISI(32,11);printf("MARI KITA BERMAIN");printf(KEDIP);POSISI(29,12);printf("tekan sembarang tombol");printf(NORMAL);

}mati(){

int i;printf(PNH_KI);printf(" ");for (i=1;i<=3;++i)

printf("\x07");POSISI(40,10);printf(KEDIP);printf("KUTU MATI:");printf(NORMAL);

}

[email protected] 8

C.MODUL TORBO C

2. Structure

Struct data_pgw{ Char nama[20]; Char alamat [30]; Float gaji;};

Ini adalah salah satu pengaturan format structure serta variabel-variabel penyusunannya. Kita belum menciptakan variabel structure itu sendiri.

Struct data_pgw{ Char nama[20]; Char alamat [30]; Float gaji;};Struct data_pgw pegawai1;

Jika disederhanakan

Struct { Char nama[20]; Char alamat [30]; Float gaji;};pegawai1;

[email protected] 9

C.MODUL TORBO C

Ex: Untuk variable structure

#include "stdio.h"#include "conio.h"

struct{

char nama[20];char alamat[20];float gaji;

}pegawai;

void main(){

char gj[15];float atof();clrscr();

printf("Nama Pegawai :");gets(pegawai.nama);printf("Alamat Pegawai :");gets(pegawai.alamat);printf("Gaji Pegawai :");gets(gj);pegawai.gaji=atof(gj);

printf("\n\ndata yang telah anda ketikkan :");printf("\n%-20s%-30s%10.2f",pegawai.nama,pegawai.alamat,pegawai.gj);printf("\n\ntekan sembarang tombol");getch();

}

[email protected] 10

C.MODUL TORBO C

3. Pointer

Salah satu keunikan dari bahasa C terletak pada penggunaan pointer. Banyak orang beranggapan bahwa pointer sangat sulit dipelajari dan dimengerti, nyatanya tidaklah demikian, mempelajari pointer memang tidak mudah, mengigat konsep pointer ini cukup baru dan tidak terdapat pada pemograman lainnya, seperti BASIC ataupun PASCAL, na mun terlalu sulit juga tidak.

Mengapa menggunakan Pointer:1. Penanganan terhadap array dan string akan lebih singkat, dan efisien.2. memungkinkan suatu fungsi untuk menghasulkan lebih dari satu nilai.3. memiliki kemampuan untuk mengirimkan alamat suatu fungsi ke fungsi yang

lain.4. Kemampuan berkerja dengan memori yang telah dialokasikan secara dinamik.5. memungkinkan untuk berhubungan langsung ke hardware.6. Untuk menciptakan data structure yang kompleks.7. Memungkinkan untuk berhubunga langsung dengan parameter command line.

Dengan menggunakan pointer yang benar, anda dapt mennyusun sebuah programyang berkemampuan tinggi. Sebaliknya sedikit saja kesalahan dalam menggunakan pointer akan mengakibatkan kesalahan fatal pada program anda. Karena pointer dapat langsung menunjukan pada lokasi memori, jika lokasi yang ditunjuk salah, berarti data yang diambil juga akan salah, dan sudah tentu program anda akan menjadi salah juga.

Deklarasi Variabel PointerVariabel pointer juga harus didelarasikan terlebih dahulu sebelum mulai

digunakan bentuk umum cara mendeklarasikan variabel pointer adalah:

Tipe *nama_var_pointer

Tipe variabel sama dengan tipe yang dikenal oleh variabel biasa, misalnya int, float, char dan sebagainya. Nama variabel pointer juga mengikuti ketentuan nama variabel biasa. Yang membedakan variabel pointer dengan variabel biasa dengan menggunakan tanda asterisk (*) didepan nama varibel pada waktu deklarasi.

Ex :

Int *ptr_x;

Ptr merupakan variabel pointer, karena pada deklarasi digunakan tanda (*) didepan nama variabelya.

Pengertian dalam deklarasi variabel pointer memiliki perbedaan dengan variabel biasa, jika dalam deklarasi variabel biasa:

[email protected] 11

C.MODUL TORBO C

Float x;

Dalam deklarasi pointer:

Float *ptr_x;

Artinya variabel pointer ptr_x akan menunjukkan pada variabel yang bertipe float. Jadi disini bukan ptr_x-nya yang bertipe float, melainkan variabel lain yang ditunjuk yang bertipe float.

Ex: dalam pendeklarasian yang salah :

float y;Int *ptr_y;

Benar :

Float y;Float *ptr_y;

Dan untuk mendeklarasikan sebuah variable y yang bertipe integer dengan variabel pointernya yy adalah:

Int y;Int *yy; dapat disederhanakan int y,*yy;

Ex : Mencetak Nama Alamat Dengan pointer

#include<stdio.h>#include<conio.h>void main(){

int x;int *ptr_x;clrscr;

x=10.2;ptr_x=&x;

printf("\n\nMenggunakan variabel biasa :");printf("\nnilai dari x = %d ",x);printf("\nAlamat dari x = %u ",&x);

printf("\n\nDengan menggunakan pointer : );

[email protected] 12

C.MODUL TORBO C

printf("\nnilai dari x =%d ",*ptr_x);printf("\nnlai dari x =%u ",ptr_x);

}

Input data Melalui PointerAnda dapat juga mengimputkan suatu data kedalam variabel dengan dengan menggunankan pointernya, sebagai contoh tinjaulah program dibawah ini:

Int x;Int *ptr_x;Ptr_x=&x;Printf(”inputkan nilai x : ”);Scanf(”%d”,ptr_x);

Ingat! Mengimputkan data dengan scanf() membutuhkan alamat dari variabel yang bersangkutan. Karena ptr_x merupakan alamat dari variabel x, maka ptr_x dapat digunakan dalam scanf(). Jadi pernyataan:

Scanf(”%d”,ptr_x);Sama dengan:

Scanf(”%d”,&x);Dimana &x juga menunjukkan alamat dari variabel x.

Memberikan suatu nilai pada suatu variabel lewat pointer

Nilai suatu variabel dapat juga diberikan lewat pointernya, nilai yang diberikan ini dapat berbentuk kostanta ataupun ekspresi aritmatikaEx:

Int x;Int *ptr_x;Ptr_x=&x;*ptr_x=5; /*pemberian nilai kostanta*/

Sedangkan unntuk pemberian nilai yang berupa ekpresi adalah:

Int x,y=5,z=4;Int *p_x;P_x=&x;*p_x=5*y+z-2; /*pemberian nilai ekspresi*/

Ex : Memberikan suatu variabel melalui pointer

[email protected] 13

C.MODUL TORBO C

#include<stdio.h>#include<conio.h>void main(){

float a1,a2,a3;float *p_a3;clrscr();printf("input bilangan pertama : ");scanf(%f",&a1);printf("input bilangan kedua : ");scanf(%f",&a2);

p_a3=&a3;

*p_a3=a1+a2;

printf("\nNilai a3 (dari variabelnya) = &.3f",a3);printf("\nNilai a3 (dari pointernya) = &.3f",*p_a3);

}

Pointer dan fungsiPengiriman data dari sebuah fungsi kefungsi lain dapat juga dilakukan dengan

bantuan pointer, bila pointer digunakan, maka data yang dikirim harus berupa alamat variabel, bukan lagi nama variabel.

Ex_1: Mengirimkan data kesuatu fungsi dengan menggunakan pointer.

#include<stdio.h>#include<conio.h>void main(){

float a,b,c;float *p_c=&c;clrscr();

printf("input bilangan pertama :");scanf("%f",&a);printf("input bilangan kedua :");scanf("%f",&b);

jumlah(&a,&b,p_c) ;

printf("hasilkali kedua bilangan = %.3f",*p_c);getch();

}

[email protected] 14

C.MODUL TORBO C

jumlah(alm_a,alm_b,alm_c)float *alm_a,*alm_b,*alm_c;

{*alm_c=*alm_a**alm_b;

}

Ket: *alm_c=*alm_a**alm_b; disini turbo c langsung mengetahui bahwa tanda (*) mana yang berarti pointer dan mana yang berarti tanda kali.

Ex_2: Kombinasi antara pengguna variabel biasa dan pointer

#include<stdio.h>#include<conio.h>void main(){

float a,b,c;float *p_c=&c;clrscr;

printf("input bilangan pertama :");scanf("%f",&a);printf("input bilangan kedua :");scanf("%f",&b);

jumlah(a,b,p_c);

printf("/njumlah kedua bilangan = %.3f",p_c);getch();

}

jumlah(x,y,alm_c);float x,y,*alm_c;{

*alm_c=x+y;})

[email protected] 15

C.MODUL TORBO C

Ex: dua dimensi (pointer)

Main{

Float a[7][7];Float n;Int brs,kol;Int i,j;Lrscr();

Printf(“input jumlah elemen (max – 7) : “);Scanf(“%f”,&n);

For (i=0;j<n;++i){

Printf(“A[%d][%d]=”,i+1,j+1);Scanf(“%f”,*(a+i)+j);

}}

Clrscr();Printf(“\n\nelemen-elemen yang telah anda inputkan :”);For (i=0;i<n;++i){

Printf(”\n”);For (j=0;j<n;++j)

Printf(”%10.2f”,*(*(a+i)+j));}Getch()}

[email protected] 16

C.MODUL TORBO C

UNION

Bentuk perintah union mirip dengan struccture namun demikian fungsi serta arti kedua perintah ini berbeda. Union adalah bagian memori yang dapat menyimpan berbagai data dari tipe yang berbeda. Karna suatu bagian memori akan digunakan oleh beberapa jenis data yang berbeda maka penggunaan ini harus bergantian .

Ex :

#include"stdio.h"#include"conio.h"

union bil

{ int bil1; float bil2; double bil3; char bil4;} bilangan ;main(){ clrscr();/*cetak ukuran union printf("Ukuran dari union bil = %d\n",sizeof(union bil));

/*memberi nilai elemen union

bilangan.bil1=13; bilangan.bil2=15.45; bilangan.bil3=2e100; bilangan.bil4='a';

/*mencetak elemen union

printf("\nBilangan 1 : %d",bilangan.bil1); printf("\nbilangan 2 : %f",bilangan.bil2); printf("\nBilangan 3 : %lf",bilangan.bil3); printf("\nBilangan 4 : %c",bilangan.bil4); getch();}

[email protected] 17

C.MODUL TORBO C

NESTED UNION

Sama halnya dengan structur, union pun dapat digunakan sebagai elemen dari union atau elemen dari structur yang lain. Dapat juga sebaliknya yaitu union yang memiliki elemen yang berbentuk structur.Union yang memiliki element berbentuk structur ini akan banyak dijumpai dalam rom bios berikut contoh yang memiliki union yang berbentuk struktur :

#include"stdio.h"#include"conio.h"

/*mendefinisikan format struktur data

struct data{

char gol;float gaji;

};

/*struktur dalam unionunion testing{

double bil;struct data pegawai;

}coba;void main(){

clrscr();printf("ukuran dari union coba: %d\n",sizeof(union testing));

/*mengisi data stukturcoba.pegawai.gol='a';coba.pegawai.gaji=100000;

/*mencetak data stukturprintf("\ngolongan :%c",coba.pegawai.gol);printf("\ngaji :%f",coba.pegawai.gaji);

/*mengisi data unioncoba.bil=345.5678;

/*mencetak data union

[email protected] 18

C.MODUL TORBO C

printf("\n\nbilangan:%1f",coba.bil);getch();

}

Contoh : (Tugas)Biro perjalanan ANGKASA_Z bergerak dibidang biro perjalanan , hendak membuat sebuah program untuk menentukan pemesanan tiket pesawat terbang . Biro perjalanan ini hanya melayani empat tujuan penerbangan yaitu:

1.Jakarta Harga/Tiket 500002.Bali Harga/Tiket 1100003.Surabaya Harga/Tiket 1500004.Medan Harga/Tiket 65000

Ada suatu ketentuan yang berlaku dalam biro ini , yaitu bila pemesanan tiket dilakukan 10 hari atau lebih sebelum tanggal peberangkatan ,maka harga tiket akan didiskon10%.Bila sebagai input diinginkan :

Nama PemesanJumlah TiketTujuan(1/2/3/4)Tanggal PemesananTanggal Berangkat

Sebagai Output adalah Biaya yang harus dibayar

/*Program pemesanan tiket */

#include <stdio.h>#include <conio.h>#include <string.h>

#define kiri 10#define kanan 70#define atas 3#define bawah 20

struct pesan{

char nama[20];

[email protected] 19

C.MODUL TORBO C

int jml;int tujuan;int tg1,bl1,th1;int tg2,bl2,th2;float bayar;struct pesan *p_1jt;

} *ptr,*ptr_awal;long int k_tanggal();

void main(){

int n=0,i,tanggal[3],sls_hari;char jum[5],tj[2],jwb,tgl[12],*dummy;float atiket;long int nl_h_brk,nl_h_pesan;clrscr();

bingkai(KIRI,KANAN,ATAS,BAWAH);

gotoxy(KIRI+20,ATAS+1); printf("PROGRAM PEMESANAN TIKET");

ptr_awal=(struct pesan *) malloc (sizeof(struct pesan));do{

if(n==0)ptr=ptr_awal;

gotoxy(KIRI+35,ATAS+3); printf(" ");gotoxy(KIRI+35,ATAS+4); printf(" ");gotoxy(KIRI+35,ATAS+8); printf(" ");gotoxy(KIRI+35,ATAS+9); printf(" ");gotoxy(KIRI+35,ATAS+10); printf(" ");gotoxy(KIRI+35,ATAS+11); printf(" ");gotoxy(KIRI+35,ATAS+12); printf(" ");

gotoxy(KIRI+5,ATAS+3); printf("NAMA PEMESAN : ");gets(ptr->nama);if (strlen(ptr->nama)==0) break;

gotoxy(KIRI+5,ATAS+4); printf("JUMLAH TIKET :");gets(jum);ptr->jml=atoi(jum);

gotoxy(KIRI+5,ATAS+5);printf("TUJUAN YANG ADA:\n");gotoxy(KIRI+10,ATAS+6); printf("1. JAKARTA 3. SURABAYA");gotoxy(KIRI+10,ATAS+7); printf("2. BALI 4. MEDAN");

[email protected] 20

C.MODUL TORBO C

gotoxy(KIRI+5,ATAS+8); printf("TUJUAN (1/2/3/4) :");gets(tj);ptr->tujuan=atoi(tj);switch(ptr->tujuan){

case 1:atiket=50000;break;

case 2:atiket=11000;break;

case 3:atiket=15000;break;

case 4:atiket=65000;break;

}gotoxy(KIRI+5,ATAS+9);printf("TANGGAL PESAN (tg-bl-th) :");gets(tgl);dummy=strtok(tgl,".,-/");i=0;while(dummy!=NULL){

tanggal[i]=atoi(dummy);dummy=strtok(NULL,".,-/");i++;

}ptr->tg1=tanggal[0];ptr->bl1=tanggal[1];ptr->th1=tanggal[12];gotoxy(KIRI+5,ATAS+10);printf("TANGGAL BERANGKAT (tg-bl-th) :");gets(tgl);

dummy=strtok(tgl,".-/");i=0;while(dummy!=NULL){

tanggal[i]=atoi(dummy);dummy=strtok(NULL,".,-/");i++;

}ptr->tg2=tanggal[0];ptr->bl2=tanggal[1];ptr->th2=tanggal[2];

nl_h_pesan=k_tanggal(ptr->tg1,ptr->bl1,ptr->th1);nl_h_brk=k_tanggal(ptr->tg2,ptr->bl2,ptr->th2);sls_hari=nl_h_brk-nl_h_pesan;

[email protected] 21

C.MODUL TORBO C

if(sls_hari>=10)ptr->bayar=0.9*ptr->jml*atiket;

elseptr->bayar=ptr->jml*atiket;

gotoxy(KIRI+5,ATAS+11);printf("HARGA SATUAN TIKET :rp. %.2f",atiket);gotoxy(KIRI+5,ATAS+12);printf("BIAYA TIKET : rp. %.2f",ptr->bayar);gotoxy(KIRI+5,ATAS+14);printf("ADA DATA LAGI (Y/T) :");jwb=getche();if(jwb=='y'|| jwb=='y')

ptr->p_1jt=(struct pesan *)malloc (sizeof(struct pesan));else

ptr->p_1jt=(struct pesan *)NULL;ptr=ptr->p_1jt;

}while (jwb=='y'|| jwb=='y');getch();

}

bingkai(kiri,atas,kanan,bawah);{

int i;gotoxy(kiri,atas); printf("\xC9");for(i=1;i<kanan-kiri;++i)

printf("\xCD");printf("\xBB");for(i=atas+1;i<bawah-1;++i){

gotoxy(kiri,i);printf("\xBA");gotoxy(kanan,i);printf("\xBA");

}gotoxy(kiri,bawah-1); printf("\xCB");for(i=1;i<kanan-kiri;i++)

printf("\xCD");printf("\xBC");}

long int k_tanggal(t,b,y);int t,b,y;

{int y81=81;

[email protected] 22

C.MODUL TORBO C

int tahun,bulan=0,hari;int bln[12]={31,28,31,30,31,30,31,31,30,31,30,31};int i;tahun=(y-y81)*365+(((y-y81)/4));for (i=1;i<b;++i)

bulan+=bln[i-1];if((y%4)==0 && b>2);bulan++;hari=t;return(tahun+bulan+hari);

}

OUTPUT PROGRAM

======================success=========================

[email protected] 23