Kamis, 25 Juni 2009

Menentukan Hari pada Tanggal Lahir dengan AWK

Tugas 5

Seperti biasa kita buat file yang akan kita jadikan input, yakni berupa nama, tanggal lahir. Seperti contoh berikut:

jaka 1 4 1989
candra 19 6 1990
yusi 3 2 1988
yayuk 2 9 1987
irna 23 7 1990
tantri 8 9 1990
budi 20 11 1988
fita 28 12 1987
yoga 19 1 1989
purna 17 7 1989
adit 17 10 1984
ahsan 9 3 1988
sugeng 7 8 1990
eko 3 5 1988
endika 14 1 1989

simpan sebagai input.dat

{
hari[1] = "Minggu"; hari[2] = "Senin"; hari[3] = "Selasa"; hari[4] = "Rabu"; hari[5] = "Kamis"; hari[6] = "Jumat"; hari[0] = "Sabtu";

jumhar[0]=0; jumhar[1]=31; jumhar[2]=28; jumhar[3]=31; jumhar[4]=30; jumhar[5]=31; jumhar[6]=30; jumhar[7]=31; jumhar[8]=31; jumhar[9]=30; jumhar[10]=31; jumhar[11]=30;jumhar[12]=31;

jum = 0
thn = $4-1
x = thn % 4
z = thn / 4

if( x==1 ){a=z-0.25}

if( x==2 ){a=z-0.5}

if( x==3 ){a=z-0.75}

thnkab = a*366
thnb = (thn - a)*365
jumhari = thnkab + thnb

if($4 % 4== 0)
{

for (i=1; i< $3; i++){ jum += jumhar[i] } if ( $3 > 2){
tot = jumhari + jum + $2 +1}
else {
tot = jumhari + jum + $2 -1 }
}

else{
for (i = 1; i< $3; i++){ jum += jumhar[i] } tot = jumhari + jum + $2 -1 } tothar = tot % 7 printf ("%-10s %-5d %-5d %-5d %-10s\n", $1, $2, $3, $4, hari[tothar]); }

Simpan file tadi dengan nama formula.awk, kemudian kita jalankan!
# awk -f formula.awk input.dat hasilnya..


jaka 1 4 1989 Jumat
candra 19 6 1990 Senin
yusi 3 2 1988 Selasa
yayuk 2 9 1987 Selasa
irna 23 7 1990 Minggu
tantri 8 9 1990 Jumat
budi 20 11 1988 Minggu
fita 28 12 1987 Minggu
yoga 19 1 1989 Selasa
purna 17 7 1989 Sabtu
adit 17 10 1984 Rabu
ahsan 9 3 1988 Rabu
sugeng 7 8 1990 Senin
eko 3 5 1988 Selasa
endika 14 1 1989 Kamis

fin..!

Tidak ada komentar:

Posting Komentar