zadatak: unosi se polje na kojem je kralj i polje na kojem je lovac. program treba ispisati da li lovac napada kralje il ne.
Pokušavam i ovo mi je dosad najbolja ideja: matrične elemente kao šahovske ploče 8x8 predstaviti svaki jedinstvaenim poljem, znači element(1,1)=1, (1,2)=2, (1,3)=3....(8,8)=64
primjetio da za lovca kretnje idu gore lijevo svako polje za -9, gore desno -7, dolje desno +9, dolje lijevo +7. Onda sam unos kralja i lovca stavio tako da unosim matrične elemente a program mi ih preračuna u taj jedinstveni broj tog polja. I sad onaj najvažniji dio neznam napraviti, ideja moja je ovakva da mi program radi sljedeće prvo dodaje vrijednosti lovca +9 pa ispituje dali je vrijednost lovca jednaka vrijednosti kralja, ako je ispis lovac napada kralja i tako za sva 4 slučaja +9, -9, -7, +7 i na kraju ako niti jedan od tih slučajeva nebude istinit ispiše da ne napada.
evo kak to izgleda
#include<stdio.h>
void konverzija_pozicija_za_brojeve(int M[8][8])
{
int i, j,z;
z=1;
for(i=1; i<=8; i++)
for(j=1; j<=8; j++)
{
printf(" M[%d][%d]=%d",i,j,z);
z=z+1;
}
}
int main()
{
int A[8][8],i,j,n,m,K,k,l,v,b,L,o;
konverzija_pozicija_za_brojeve(A);
printf("\n\nunesi poziciju kralja stupac(n) i liniju(m):"); scanf("%d %d",&n, &m);
K=1;
for(i=1; i<=n; i++)
for(j=1; j<=8; j++)
{if((i==n)&&(j==m))
printf("K=%d",K);
else K=K+1; }
K=K-(8-m);
printf("\nunesi poziciju lovca stupac(v) i liniju(b):"); scanf("%d %d",&v, &b);
L=1;
for(k=1; k<=v; k++)
for(l=1; l<=8; l++)
{if((k==v)&&(l==b))
printf("L=%d",L);
else L=L+1; }
L=L-(8-b);
if(L==K) printf("lovac napada kralja");
else
for(o=L;o>=K;o=o+9)
if(o==K) printf("lovac napada kralja");
else
for(o=L;o<=K;o=o-9)
if(o==K) printf("lovac napada kralja");
else
for(o=L;o<=K;o=o-7)
if(o==K) printf("lovac napada kralja");
else
for(o=L;o>=K;o=o+9)
if(o==K) printf("lovac napada kralja");
else
printf("lovac ne napada kralja");
printf("\nza kraj unesi bilo koji karakter i pritisni ENTER");
scanf(" ");
return 0;
}
ovdje kod ovih if i for znam da mi vjerojatno fali dosta {}, ali eto probavao sam dosta kombinacija, ako neko znam bio bih jako zahvalan.
ovako bi izgledala ta šahovska ploča:
1 2 3 4 5 6 7 8
1 9 17 25 33 41 49 57 A 2 10 18 26 34 42 50 58 B 3 11 19 27 35 43 51 59 C 4 12 20 28 36 44 52 60 D 5 13 21 29 37 45 53 61 E 6 14 22 30 38 46 54 62 F 7 15 23 31 39 47 55 63 G 8 16 24 32 40 48 56 64 H