You are on page 1of 4

DIAGONALV

http://tutorialpemrograman.wordpress.com/
JeffreyHermantoHalimsetiawan
shadowz_029@yahoo.com.sg

ProblemSolving:
UntukmeyelesaikanpermasalahanDiagonalVinisebenarnyaada
berbagaimacamcaradanmudahsekali.
Contoh:
Input:5
543212345
454323454
345434543
234545432
123454321
234545432
345434543
454323454
543212345
Sayaakanmengerjakannyasebagaiberikut:
KANAN543212345
BAWAH43212345
KIRI43212345
ATAS43212345
>
543212345
44
33
22
11
22
33
44
543212345
<
Berikutnya:
KANAN
5432345
BAWAH
432345
KIRI
432345
ATAS 432345

543212345
454323454
3443
2332
1221
2332
3443
454323454
543212345
danseterusnyahinggabagiantengahnyaterisisemua.

Source Code :
#include<stdio.h> //definisiprintf,scanf
#include<conio.h> //definisiputs,getch
intmain()
{
intn;
scanf("%d",&n);
intkotak[2*n1][2*n1];
intx=0,y=0,
i,j=0,
k=n,l=1,
ulang=(n1)*8,
arah=1,
batas=2*n1;
boolforward=false;
//indikatorderetnaikatauturun
for(i=0;i<(2*n1)*(2*n1)+n1;i++){
if(j>=ulang+1){
j=0;
ulang=8;
l++;
batas=1;
forward=false;
k=n;
x++;
y++;
}
//isiarrayarahkanan
if(arah==1){
kotak[x++][y]=k;

if(x>=batas){
x;
y++;
arah++;
}
}
//isiarrayarahbawah
elseif(arah==2){
kotak[x][y++]=k;
if(y>=batas){
x;
y;
arah++;
}
}
//isiarrayarahkiri

elseif(arah==3){
kotak[x][y]=k;
if(x<l1){
x++;
y;
arah++;
}
}
//isiarrayarahatas
elseif(arah==4){
kotak[x][y]=k;
if(y<l1){
y++;
arah=1;
}
}
j++;
if(forward)k++;
elsek;
if(k<l){
k+=2;
forward=true;
}
if(k>n){
k=2;
forward=false;
}
}
//mencetakoutput
puts("");
for(i=0;i<2*n1;i++)
{
for(j=0;j<2*n1;j++)
{
printf("%3d",kotak[j][i]);
}
printf("\n");
}
getch();
return0;
}

You might also like