Tugas 4

Untuk membuat bujur sangkar kita inputkan kolom ke-1 pada input.txt adalah sebagai input ordonya. Sedangkan kolom ke-2 adalah nilai awal yang diberikan sebelum terjadinya increment. Kemudian kolom ke-3 adalah jumlah nilai kenaikan pada setiap ordo matriks.
Ketikkan program dibawah ini dengan gedit atau vim simpan dengan nama mat.awk simpan di direktori home
{
matrik[15,15]; #array untuk ordo maximal bujur sangkar
n=$1; #jumlah ordo yang dicari berada pada kolom 1 harus ganjil
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]);

}
}

Buatlah program input dengan gedit save dengan nama input misalkan
7 1 1 1
simpan di dirktori home.

lalu kita jalankan dengan program pada console sebagai berikut:
rpl110@rpl10-desktop:~$ awk -f mat.awk input

hasil dari program diatas adalah
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

untuk membuat bujursangkar 3x3
ganti input dengan 3 1 1 1 maka akan muncul di bawah ini:
15
8 1 6 15

3 5 7 15

4 9 2 15
15 15 15
now this time to celebrate......

0 komentar: