Rabu, 17 Juni 2009

TUGAS 4 : Bujur Sangkar Ajaib

Pada awalnya kita akan membuat file yang kemudian akan dijalankan pada terminal. Cara memanggilnya di terminal adalah sebagai berikut

echo 7 | awk -f

disini echo 7 berfungsi sebagai penanda bahwa ordo dari bujursangkar ajaib tersebut adalah 7x7. Apabila kita menginginkan ordo selain itu maka kita hanya tinggal mengganti angkanya saja. Misalnya kita menginginkan ordonya adalah 4x4 maka cara memanggilnya adalah seperti di bawah ini :

echo 4 | awk -f

Misalnya saja kita beri nama file tersebut bujur_ajaib.txt maka perintah di atas akan menjadi seperti ini :

echo 7 | awk -f bujur_ajaib.txt

yang mana file tersebut akan berisi instruksi sebagai berikut :

{ ordo[55,55]; #array yang menunjukkan ordo dari bujur sangkar
n=$1; #merupakan input dari matriks
X=1; #adalah nilai awal yang diberikan
Y=1; #merupakan interval
Z=1; #merupakan interval yang digunakan untuk pindah

for(a=0; a<=n+2; a++) #digunakan untuk 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]);
}
}

kemudian setelah membuat file tersebut kita akan menjalankannya dengan perintah seperti di atas tadi yang kemudian akan menghasilkan tampilan seperti di bawah ini di dalam terminal :

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

0 komentar:


Free Blogspot Templates by Isnaini Dot Com and Bridal Dresses. Powered by Blogger