Kamis, 25 Juni 2009

kalender jawa

Buat top.txt :

Angga 11 3 1990
Dimas 19 8 1989
Inyonk 3 11 1989
Chyntia 27 9 1989
Iam 19 7 1989
Putra 9 2 1989
Mobed 12 5 1988
Dauz 10 4 1990
Anez 11 2 1990
Adit 10 1 1987
Tyo 17 9 1989
Denny 11 8 1990
Sisi 16 6 1990
Boni 28 10 1990
Tino 18 6 1989

Buat best.txt :

{
nm=$1;
tgl=$2;
bln=$3;bln1=int(bln)
tahun=$4;
if (bln1<=12&&bln1!=0)
{
thn=tahun-1;
thk=thn/4;
thb=thn-int(thk);
jumth=tahun%4;
bulan=bln-1;
if (jumth==0){
if(bulan==0)
i=31;
if(bulan==1)
i=62;
if(bulan==2)
i=91;
if(bulan==3)
i=122;
if(bulan==4)
i=152;
if(bulan==5)
i=183;
if(bulan==6)
i=213;
if(bulan==7)
i=244;
if(bulan==8)
i=275;
if(bulan==9)
i=305;
if(bulan==10)
i=336;
if(bulan==11)
i=366;
}
else

{
if(bulan==0)
i=31;
if(bulan==1)
i=62;
if(bulan==2)
i=90;
if(bulan==3)
i=121;
if(bulan==4)
i=151;
if(bulan==5)
i=182;
if(bulan==6)
i=212;
if(bulan==7)
i=243;
if(bulan==8)
i=274;
if(bulan==9)
i=304;
if(bulan==10)
i=335;
if(bulan==11)
i=365;
}
kab=366*int(thk);
br=365*thb;
tothar=(kab)+(br)+i+tgl;
hr=tothar%7;

printf(nm);
{
if(hr==0)
printf("\t\tHari = RABU\n");
else if(hr==1)
printf("\t\tHari = KAMIS\n");
else if(hr==2)
printf("\t\tHari = JUM'AT\n");
else if(hr==3)
printf("\t\tHari = SABTU\n");
else if(hr==4)
printf("\t\tHari = MINGGU\n");
else if(hr==5)
printf("\t\tHari = SENIN\n");
else
printf("\t\tHari = SELASA\n");
}
psr=tothar%5;{
if(psr==0)
printf("\t\tPasaran = KLIWON\n");
else if(psr==1)
printf("\t\tPasaran = LEGI\n");
else if(psr==2)
printf("\t\tPasaran = PAHING\n");
else if(psr==3)
printf("\t\tPasaran = PON\n");
else
printf("\t\tPasaran = WAGE\n");

}
}
}

Di terminal, ketik :

$ awk -f best.txt top.txt

maka akan muncul :

Angga Hari = MINGGU
Pasaran = PON
Dimas Hari = SABTU
Pasaran = WAGE
Inyonk Hari = JUM'AT
Pasaran = KLIWON
Chyntia Hari = RABU
Pasaran = PON
Iam Hari = RABU
Pasaran = PON
Putra Hari = KAMIS
Pasaran = PON
Mobed Hari = KAMIS
Pasaran = KLIWON
Dauz Hari = SELASA
Pasaran = PON
Anez Hari = MINGGU
Pasaran = KLIWON
Adit Hari = SABTU
Pasaran = PAHING
Tyo Hari = MINGGU
Pasaran = PON
Denny Hari = SABTU
Pasaran = LEGI
Sisi Hari = SABTU
Pasaran = KLIWON
Boni Hari = MINGGU
Pasaran = WAGE
Tino Hari = MINGGU
Pasaran = PAHING

Rabu, 24 Juni 2009

TUGAS 5

Pada tugas ke 5, adalah menampilkan hari lahir dengan menggunakan program AWK
Program ini untuk menentukan nama hari pada tanggal dengan sistem kalender Georgian. Masukan berupa beberapa tanggal lahir, misalkan yang disimpan dengan file nama.txt. Contoh input data nama orang :
aan 25 10 1988
varid 10 2 2009
aris 12 5 1990
jayen 16 12 1987
sunio 4 7 1989
ocol 8 9 1984
akil 20 11 1988
rizza 28 8 1987
luse 19 7 1989
ukih 17 2 1978
mika 17 3 1984
virsa 14 1 1987
cabyby 5 5 1990
ical 13 6 1988
vina 4 10 1984

Kemudian untuk syntax-nya sebagai proses, dengan membuat file dengan nama kalender.txt. Syntax :

{
#-hari-
hari[1] = "minggu"; hari[2] = "senin"; hari[3] = "selasa"; hari[4] = "rabu"; hari[5] = "kamis"; hari[6] = "jumat"; hari[0] = "sabtu";
#--jumlah--
jmlhri[0]=0; jmlhri[1]=31; jmlhri[2]=28; jmlhri[3]=31; jmlhri[4]=30; jmlhri[5]=31; jmlhri[6]=30; jmlhri[7]=31; jmlhri[8]=31; jmlhri[9]=30; jmlhri[10]=31; jmlhri[11]=30; jmlhri[12]=31;

jum = 0
tahun= $4-1
x = tahun % 4
z = tahun /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 += jmlhri[i] }
if ( $3 > 2){
tot = jumhari + jum + $2 +1}
else {
tot = jumhari + jum + $2 -1 }
}

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

tothar = tot % 7


printf ("%-10s %-5d %-5d %-5d %-10s\n", $1, $2, $3, $4, hari[tothar]);
}

Kamis, 18 Juni 2009

Bujur Sangkar Ajaib

Pertama, kita membuat file dengan nama ajaib.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]);
}
}


Lalu masukkan rumus berikut pada terminal:

angga@angga-desktop:~$ echo 7 | awk -f ajaib.txt

"Echo 7 digunakan untuk membuat sebuat matiks dengan ordo 7x7".
Contoh lain misalnya bujur sangkar ajaib ordo 2x2, maka rumus menjadi:

angga@angga-desktop:~$ echo 2 | awk -f ajaib.txt

Hasil dari echo 7 tadi ialah :

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

Senin, 01 Juni 2009

Menghitung Diskon

BarangJumlahHarga satuan
CPU75500000
Printer51500000
Scaner82700000
Monitor103500000
Hardisk61200000
Mouse12100000
Webcam151000000

didapatkan dengan rumus sebagai berikut :

awk 'BEGIN{printf "%-10s %-10s %-10s %-10s %-10s %s\n",
"BARANG","JUMLAH","HARGA SATUAN","TOTAL","DISCOUNT",
"BAYAR"}
{if($2>=5 && $2 <10){printf "%-10s %-10s %-10s %-10s %-10s %s\n", $1,$2,$3,$4=$2*$3,$5=0.1*$4,$6=$4-$5 }}
{if($2>=10){printf "%-10s %-10s %-10s %-10s %-10s %s\n", $1,$2,$3,$4=$2*$3,$5=0.2*$4,$6=$4-$5 }}' barang