Tugas 4
Buatlah program untuk menampilkan bujursangkar ajaib dengan ordo ganjil, mulai dari ordo 3x3 sampai 19x19, jadi input ordo hanya dari 3 sampai 19 saja, program juga memeriksa apabila input ordo tidak dimasukkan dengan benar, misalkan dimasukkan ordo = 4 atau 6 atau bilangan genap, maka program akan menolak input tersebut dan tidak memprosesnya.
program untuk membuat bujur sangkar ajaib adalah seperti dibawah ini. input bisa berupa file ataupun diinputkan dari pipelie echo. pada tugas kali ini saya menggunakan input dari file input _magic.txt yang berisi:
3 1 1 1
dimana kolom satu adalah input untuk memberi nilai pada umlah ordo yang akan ditentukan, misal untuk ordo 3x3 kita isikan 3, untuk 5x5 kita isikan 5 dst. kolom kedua digukanan untuk memberi nilai awal pada bujur sangkar ajaib, misal kita beri nilai satu maka nilai akan naik sari 1, 2, 3 dst. kolom kedua digunakan untuk memberi nilai kenaikan pada setiam 1 kali perpindahan. sedangkan kolom ketiga digunakan untuk memberi kenaikan nilai interval.
{
matrik[15,15]; #array untuk ordo maximal bujur sangkar
n=$1; #jumlah ordo yang dicari berada pada kolom 1
X=$2; #input nilai awal berada pada kolom 2
Y=$3; #nilai kenaikan, pada kol0m 3
Z=$4; #kenaikan setiap pindah interval, pada kolom 4
for(i=0; i<=n+2; i++)
{
for(b=0; b<=n+2; b++)
matrik[i,b] = 0;
}
i=1; b=(n+1) / 2;
X-=Y;
for(N=1; N<=n*n;)
{ if(matrik[i,b]==0)
{
X+=Y;
matrik[i,b] = X;
if(i==n)
matrik[0,b] = X;
if(b==1)
matrik[i,n+1] = X;
if(i==n && b==1 )
matrik[0,n+1] = X;
i--; b++; N++;
if(i==0&&b==n+1)
continue;
else
{
if (i==0) i=n;
if(b==n+1) b=1;
}
}
else
{
i+=2;
b-=1;
X=X-Y+Z;
}
}
for(i=1; i<=n; i++)
T1+=matrik[i,n+1-i];
for(i=1; i<=n*5;i++)
printf(" ");
printf("%5d\n\n",T1);
for(i=1;i<=n+1;i++)
{
for(b=1; b<=n; b++)
{
printf("%5d", matrik[i,b]);
matrik[a,n+2] += matrik[i,b];
matrik[n+1,b] += matrik[i,b];
}
T2 += matrik[i,b];
if(i==n+1)
matrik[i,n+2] = T2;
printf("%5d\n\n",matrik[i,n+2]);
}
}
lalu kita jalankan dengan program pada console sebagai berikut:
adit@adit-desktop:~$ awk -f magic.txt input_magic.txt
hasil dari program diatas adalah
15
8 1 6 15
3 5 7 15
4 9 2 15
15 15 15 15
Tidak ada komentar:
Posting Komentar