Jumat, 26 Juni 2009

Tugas 6 : Kalender Java

1). Membuat kalender jawa

a). Buatlah sebuah file data nama yang ingin anda ketahui tanggal lahirnya, simpan dengan file nama.txt, seperti berikut:

mobed 17 2 1988
fauzy 12 8 1988
yanuar 27 6 1988
angga 15 4 1987
adit 2 11 1988
dicky 18 2 1988
putra 17 11 1988
bayu 13 12 1988
fina 14 7 1988
widi 25 3 1988
boby 3 4 1990
tyo 16 5 1988
andrey 30 4 1988
sintiya 27 7 1990
diana 19 3 1990

b). Kemuadian buatlah file rumusnya kemudian simpan dengan nama tanggal.txt

{
thn=$4-1;
bln=$3-1;
thk=thn/4;
if(thn%4==1){b=0.25}
if(thn%4==2){b=0.50}
if(thn%4==3){b=0.75}
d=thk-b;
thb=thn-d;

if(bln==0 && $4%4!=0){a=0}
if(bln==1 && $4%4!=0){a=31}
if(bln==2 && $4%4!=0){a=59}
if(bln==3 && $4%4!=0){a=90}
if(bln==4 && $4%4!=0){a=120}
if(bln==5 && $4%4!=0){a=151}
if(bln==6 && $4%4!=0){a=181}
if(bln==7 && $4%4!=0){a=212}
if(bln==8 && $4%4!=0){a=243}
if(bln==9 && $4%4!=0){a=273}
if(bln==10 && $4%4!=0){a=304}
if(bln==11 && $4%4!=0){a=334}

if(bln==0 && $4%4==0){a=0}
if(bln==1 && $4%4==0){a=31}
if(bln==2 && $4%4==0){a=60}
if(bln==3 && $4%4==0){a=91}
if(bln==4 && $4%4==0){a=121}
if(bln==5 && $4%4==0){a=152}
if(bln==6 && $4%4==0){a=182}
if(bln==7 && $4%4==0){a=213}
if(bln==8 && $4%4==0){a=244}
if(bln==9 && $4%4==0){a=274}
if(bln==10 && $4%4==0){a=305}
if(bln==11 && $4%4==0){a=335}

jum=(thb*365)+(d*366)+a+$2;

if(jum%5==1){f="Pahing"}
if(jum%5==2){f="Pon"}
if(jum%5==3){f="Wage"}
if(jum%5==4){f="Kliwon"}
if(jum%5==0){f="Legi"}

if(jum%7==1){printf("%s %d %d %d Lahir Minggu %s\n",$1,$2,$3,$4,f)}
if(jum%7==2){printf("%s %d %d %d Lahir Senin %s\n",$1,$2,$3,$4,f)}
if(jum%7==3){printf("%s %d %d %d Lahir Selasa %s\n",$1,$2,$3,$4,f)}
if(jum%7==4){printf("%s %d %d %d Lahir Rabu %s\n",$1,$2,$3,$4,f)}
if(jum%7==5){printf("%s %d %d %d Lahir Kamis %s\n",$1,$2,$3,$4,f)}
if(jum%7==6){printf("%s %d %d %d Lahir Jumat %s\n",$1,$2,$3,$4,f)}
if(jum%7==0){printf("%s %d %d %d Lahir Sabtu %s\n",$1,$2,$3,$4,f)}
}

c). Setelah selesai, buka terminal anda dan ketikkan program awk anda, seperti berikut:

mobidea@mobidea-laptop ~:$ awk -f tanggal.txt nama.txt

d). Kemudian output tersebut akan menampilkan kalendernya sebagai berikut :

mobidea@mobidea-laptop ~:$ awk -f tanggal.txt nama.txt

mobed 17 2 1988 lahir rabu Kliwon
fauzy 12 8 1988 Lahir Jumat pahing
yanuar 27 6 1988 Lahir Senen Legi
angga 15 4 1987 Lahir Rabu pahing
adit 2 11 1988 Lahir Rabu wage
dicky 18 2 1988 Lahir kamis legi
putra 17 11 1988 Lahir Kamis wage
bayu 13 12 1988 Lahir selasa Kliwon
fina 14 7 1988 Lahir Kamis Pon
widi 25 3 1988 Lahir Jumat Pahing
boby 3 4 1990 Lahir Selasa Legi
tyo 16 5 1988 Lahir senin wage
andrey 30 4 1988 Lahir sabtu Pon
sintiya 27 7 1990 Lahir jumat legi
diana 19 3 1990 senin legi

e). selesai

Kamis, 25 Juni 2009

Tugas 5

1. Mengetahui Hari Kelahiran dengan Kalender menggunakan program awk .
Program ini untuk menentukan nama hari pada tanggal dengan sistem kalender Georgian. Masukan berupa beberapa tanggal lahir teman-teman yang disimpan pada file input.txt. Kemudian output akan menampilkan nama, tanggal dan harinya.

a). Langkah pertama:
Buatlah file dengan nama input.txt seperti berikut :

mobed 17 2 1988
fauzy 12 8 1989
yanuar 27 6 1989
angga 15 4 1987
adit 2 11 1988
dicky 18 2 1989
putra 17 11 1988
bayu 13 12 1988
fina 14 7 1989
widi 25 3 1988
boby 3 4 1989
tyo 16 5 1988
andrey 30 4 1988
sintiya 27 7 1990
diana 19 3 1990

b). Kemudian buat rumus dengan nama kalender.txt seperti berikut :
{
thn=$4-1;
bln=$3-1;
thk=thn/4;
if(thn%4==1){b=0.25}
if(thn%4==2){b=0.50}
if(thn%4==3){b=0.75}
d=thk-b;
thb=thn-d;

if(bln==0 && $4%4!=0){a=0}
if(bln==1 && $4%4!=0){a=31}
if(bln==2 && $4%4!=0){a=59}
if(bln==3 && $4%4!=0){a=90}
if(bln==4 && $4%4!=0){a=120}
if(bln==5 && $4%4!=0){a=151}
if(bln==6 && $4%4!=0){a=181}
if(bln==7 && $4%4!=0){a=212}
if(bln==8 && $4%4!=0){a=243}
if(bln==9 && $4%4!=0){a=273}
if(bln==10 && $4%4!=0){a=304}
if(bln==11 && $4%4!=0){a=334}

if(bln==0 && $4%4==0){a=0}
if(bln==1 && $4%4==0){a=31}
if(bln==2 && $4%4==0){a=60}
if(bln==3 && $4%4==0){a=91}
if(bln==4 && $4%4==0){a=121}
if(bln==5 && $4%4==0){a=152}
if(bln==6 && $4%4==0){a=182}
if(bln==7 && $4%4==0){a=213}
if(bln==8 && $4%4==0){a=244}
if(bln==9 && $4%4==0){a=274}
if(bln==10 && $4%4==0){a=305}
if(bln==11 && $4%4==0){a=335}

jum=(thb*365)+(d*366)+a+$2;

if(jum%7==1){print $0," ","Lahir Minggu"}
if(jum%7==2){print $0," ","Lahir Senen"}
if(jum%7==3){print $0," ","Lahir Selasa"}
if(jum%7==4){print $0," ","Lahir Rabu"}
if(jum%7==5){print $0," ","Lahir Kamis"}
if(jum%7==6){print $0," ","Lahir Jumat"}
if(jum%7==0){print $0," ","Lahir Sabtu"}
}
c). Setelah selesai compile program tersebut pada terminal dengan cara:

mobidea@mobidea-desktop:~$ awk -f kalender.txt input.txt

d). Maka output program di terminal tersebut adalah sebagai berikut:

mobidea@mobidea-desktop:~$ awk -f kalender.txt input.txt
mobed 17 2 1988 Lahir Rabu
angga 15 4 1987 Lahir Rabu
adit 2 11 1988 Lahir Rabu
putra 17 11 1988 Lahir Kamis
bayu 13 12 1988 Lahir Selasa
widi 25 3 1988 Lahir Jumat
tyo 16 5 1988 Lahir Senen
andrey 30 4 1988 Lahir Sabtu
sintiya 27 7 1990 Lahir Jumat
diana 19 3 1990 Lahir Senen

Kamis, 18 Juni 2009

Tugas 4

1). Buatlah sebuah bujur sangkar ajaib dengan ordo misalnya 3x3!

Untuk mengerjakan soal tersebut, maka buatlah sebuah file dengan rumus seperti berikut dan simpan dengan nama bujur.txt

{ ordo[55,55]; #ordo bujur sangkar
n=$1; #input matriks
X=1; #nilai awal
Y=1; #interval
Z=1; #interval pindah

for(a=0; a<=n+2; a++) #menghitung letak kolom dan baris
{ for(b=0; b<=n+2; b++)
ordo[a,b] = 0;
}
a=1; b=(n+1) / 2;
X-=Y;
for(N=1; N<=n*n;)
{ if(ordo[a,b]==0)
{ X+=Y;
ordo[a,b] = X;
if(a==n) ordo[0,b] = X;
if(b==1) ordo[a,n+1] = X;
if(a==n && b==1 ) ordo[0,n+1] = X;
a--; b++; N++;
if(a==0&&b==n+1) continue;
else
{
if (a==0) a=n;
if(b==n+1) b=1;
}
}
else
{
a+=2;
b-=1;
X=X-Y+Z;
}
}
for(a=1; a<=n; a++)
T1+=ordo[a,n+1-a];

for(a=1; a<=n*5;a++)
printf(" ");
printf("%5d\n\n",T1);

for(a=1;a<=n+1;a++)
{
for(b=1; b<=n; b++)
{
printf("%5d", ordo[a,b]);
ordo[a,n+2] += ordo[a,b];
ordo[n+1,b] += ordo[a,b];
}
T2 += ordo[a,b];
if(a==n+1) ordo[a,n+2] = T2;
printf("%5d\n\n",ordo[a,n+2]);
}
}

Setelah selesai, lakukan rumus awk pada terminal seperti berikut:

mobidea@mobidea-desktop:~$ echo 7 | awk -f bujur2.txt

Penjelasan : echo 7 adalah digunakan untuk membuat sebuat matiks dengan ordo 7x7, misalkan anda ingin mengubah menjadi ordo 3x3 maka anda tinggal mengubah rumus menjadi:

mobidea@mobidea-desktop:~$ echo 3 | awk -f bujur2.txt

Setelah selesai maka akan keluar hasilnya seperti berikut:

175

30 39 48 1 10 19 28 175

38 47 7 9 18 27 29 175

46 6 8 17 26 35 37 175

5 14 16 25 34 36 45 175

13 15 24 33 42 44 4 175

21 23 32 41 43 3 12 175

22 31 40 49 2 11 20 175

175 175 175 175 175 175 175 175

Selesai..... Mudahkan!!!!

Kamis, 04 Juni 2009

Tugas 3

1). Soal => Dibeli suatu barang sebagai berikut :
Barang Jumlah Harga Satuan
CPU 7 5500000
Printer 5 1500000
Scaner 8 2700000
Monitor 10 3500000
Hardisk 6 1200000
Mouse 12 100000
Webcam 15 1000000

kemudian kita ingin menampilkan seperti berikut:
Barang Jumlah Harga_Satuan Total Diskon Bayar
-------------------------------------------------------------------
CPU 7 5500000 38500000 3850000 34650000

Ketentuannya adalah:
Total = jumlah barang x harga barang
Diskon = jika: Jumlah barang >=5 dan Jumlah barang <10 maka diskon 10%
jika: Jumlah barang >=10 maka diskon 20%
Bayar = Total-Diskon.

Maka rumus untuk mendapatkan hasil tersebut adalah sebagai berikut:

mobidea@mobidea-desktop:~$ awk 'BEGIN { print "Barang Jumlah Harga_Satuan Total Diskon Bayar"
print"-------------------------------------------------------------------"}
{if(NR>1){if($2>=5 &&$2<10){a=10/100}if($2>=10){a=20/100};printf"%-10s%-5d%-10d%-7d%9d%9d\n",$1,$2,$3,$3*$2,($3*$2)*a,($3*$2)-(($3*$2)*a)}}' harga.txt
Barang Jumlah Harga_Satuan Total Diskon Bayar
-------------------------------------------------------------------
CPU 7 5500000 38500000 3850000 34650000
Printer 5 1500000 7500000 750000 6750000
Scaner 8 2700000 21600000 2160000 19440000
Monitor 10 3500000 35000000 7000000 28000000
Hardisk 6 1200000 7200000 720000 6480000
Mouse 12 100000 1200000 240000 960000
Webcam 15 1000000 15000000 3000000 12000000
mobidea@mobidea-desktop:~$