Rabu, 24 Juni 2009

Tugas 5 dan Tugas 6

Tugas 5 dan Tugas 6
1. membuat kalender
Pada tugas 5 kali ini kita akan membuat kalender dengan menggunakan bahasa pemrograman awk, dimana input berasal dari file yang berisi nama, tanggal, bulan dan tahun. output dari program adalah mengeluarkan kembali input dan ditambah nama bulan, nama hari dan nama pasaran. pada program saya kali ini input berasal dai file input.txt yang berisi:
aditya 2 3 1989
bejo 11 7 1988
joko 19 1 1989
bambang 6 2009
yui 4 8 1987
lia 3 2 1992
nia 19 6 1989
novi 31 3 1989
ricky 2 7 1988
etik 6 9 1993
hau 31 3 2000
sisi 14 7 1990
nesta 19 3 1980
ronaldinho 26 3 1980
pahlawan 10 11 1062

selanjutnya saya membuat program untuk menampilkan output seperti yang kita inginkan. berikut programnya(program saya simpan dengan nama tanggal.txt):

{
tgl=$2;
bln=$3;
thn=$4;
jm_hr=0;jum_kab=0;jum_biasa=0;

bulan[0] = 0;bulan[1] = 31;bulan[2] = 28;bulan[3] = 31;bulan[4] = 30;bulan[5] = 31;bulan[6] = 30;bulan[7] = 31;bulan[8] = 31;bulan[9] = 30;bulan[10] = 31;bulan[1] = 30;
#-----------------------------------------------------------------------
bulan_kab[0] = 0;bulan_kab[1] = 31;bulan_kab[2] = 29;bulan_kab[3] = 31;bulan_kab[4] = 30;bulan_kab[5] = 31;bulan_kab[6] = 30;bulan_kab[7] = 31;bulan_kab[8] = 31;bulan_kab[9] = 30;bulan_kab[10] = 31;bulan_kab[1] = 30;
#-----------------------------------------------------------------------
nama[1] = "januari";nama[2] = "pebruari";nama[3] = "maret";nama[4] = "april"; nama[5] = "mei";nama[6] = "juni";nama[7] = "juli";nama[8] = "agustus";nama[9] = "september";nama[10] = "oktober";nama[11] = "nopember";nama[12] = "desember";
#------------------------------------------------------------------------
pasaran[1] = "pahing" ; pasaran[2] = "pon"; pasaran [3]= "wage"; pasaran[4] = "kliwon"; pasaran[0] = "legi";
#-------------------------------------------------------------------------
hari[1] = "minggu"; hari[2] = "senin"; hari[3] = "selasa"; hari[4] = "rabu"; hari[5] = "kamis"; hari[6] = "jumat"; hari[0] = "sabtu";

if(thn%4==0){
for(i=0;i jm_hr = jm_hr + bulan_kab[i];
}
}
else
for(i=0;i jm_hr = jm_hr + bulan[i];
}

thn_b = thn-1;
kabisat = thn_b/4;
if(thn%2==0){
thn_biasa = thn - kabisat;
}
else
thn_biasa = thn - kabisat - 1;

for(j=1;j<=kabisat;j++){
jum_kab = jum_kab+366;
}
for(k=1;k<=thn_biasa;k++){
jum_biasa = jum_biasa+365;
}

if(bln>1){
tot_hari = jum_kab + jum_biasa + jm_hr+ tgl+1;
}
else
tot_hari = jum_kab + jum_biasa + jm_hr+ tgl;

sisa_pasaran = tot_hari%5;

sisa = tot_hari%7;
printf("%-10s %-5d %-5d %-5d %-10s %-10s %-10s\n",$1,$2,$3,$4, nama[bln], hari[sisa], pasaran[sisa_pasaran]);
}
kemudian jalankan menggunakan program awk dengan mengetik seperti dibawah ini dan akan langsung keluar hasilnya seperti dibawah ini:

aditya@aditya-laptop:~$ awk -f tanggal_selesai.txt input

aditya 2 3 1989 kamis wage
bejo 11 7 1988 selasa kliwon
joko 19 1 1989 kamis pahing
bambang 6 2009 selasa pahing
yui 4 8 1987 senin pon
lia 3 2 1992 senin pahing
nia 19 6 1989 senin pon
novi 31 3 1989 jumat pon
ricky 2 7 1988 sabtu legi
etik 6 9 1993 senin pon
hau 31 3 2000 jumat legi
sisi 14 7 1990 sabtu pon
nesta 19 3 1980 rabu wage
ronaldinho 26 3 1980 rabu legi
pahlawan 10 11 1062 senin kliwon

Tidak ada komentar:

Posting Komentar