Очень прошу, кому не сложно помогите пожалуйста перевести код в delphi, очень нужна эта программа.
Суть программы,нахождение кротчайшего пути передвижения коня по шахматному полю
Код:
#include <stdio.h>
#include <conio.h>
struct tt {
int x, y;
};
int main()
{
int a[8][8], i, j, i_st = 0, i_end = 1, x_st, y_st, x_end, y_end;
tt Q[64];
for (i = 0; i<8; i++)
for (j = 0; j<8; j++)
a[i][j] = -1;
printf("Vvod koordinati starta:\nX= ");
scanf_s("%d", &x_st);
printf("Y= ");
scanf_s("%d", &y_st);
printf("Vvod koordinati finish:\nX= ");
scanf_s("%d", &x_end);
printf("Y= ");
scanf_s("%d", &y_end);
x_st--; y_st--; x_end--; y_end--;
a[x_end][y_end] = 0; Q[0].x = x_end; Q[0].y = y_end;
while (i_st<i_end)
{
if (Q[i_st].x>1 && Q[i_st].y>0 && a[Q[i_st].x - 2][Q[i_st].y - 1] == -1)
{
a[Q[i_st].x - 2][Q[i_st].y - 1] = a[Q[i_st].x][Q[i_st].y] + 1; Q[i_end].x = Q[i_st].x - 2; Q[i_end++].y = Q[i_st].y - 1;
}
if (Q[i_st].x>1 && Q[i_st].y<7 && a[Q[i_st].x - 2][Q[i_st].y + 1] == -1)
{
a[Q[i_st].x - 2][Q[i_st].y + 1] = a[Q[i_st].x][Q[i_st].y] + 1; Q[i_end].x = Q[i_st].x - 2; Q[i_end++].y = Q[i_st].y + 1;
}
if (Q[i_st].x>0 && Q[i_st].y>1 && a[Q[i_st].x - 1][Q[i_st].y - 2] == -1)
{
a[Q[i_st].x - 1][Q[i_st].y - 2] = a[Q[i_st].x][Q[i_st].y] + 1; Q[i_end].x = Q[i_st].x - 1; Q[i_end++].y = Q[i_st].y - 2;
}
if (Q[i_st].x>0 && Q[i_st].y<6 && a[Q[i_st].x - 1][Q[i_st].y + 2] == -1)
{
a[Q[i_st].x - 1][Q[i_st].y + 2] = a[Q[i_st].x][Q[i_st].y] + 1; Q[i_end].x = Q[i_st].x - 1; Q[i_end++].y = Q[i_st].y + 2;
}
if (Q[i_st].x<6 && Q[i_st].y>0 && a[Q[i_st].x + 2][Q[i_st].y - 1] == -1)
{
a[Q[i_st].x + 2][Q[i_st].y - 1] = a[Q[i_st].x][Q[i_st].y] + 1; Q[i_end].x = Q[i_st].x + 2; Q[i_end++].y = Q[i_st].y - 1;
}
if (Q[i_st].x<6 && Q[i_st].y<7 && a[Q[i_st].x + 2][Q[i_st].y + 1] == -1)
{
a[Q[i_st].x + 2][Q[i_st].y + 1] = a[Q[i_st].x][Q[i_st].y] + 1; Q[i_end].x = Q[i_st].x + 2; Q[i_end++].y = Q[i_st].y + 1;
}
if (Q[i_st].x<7 && Q[i_st].y>1 && a[Q[i_st].x + 1][Q[i_st].y - 2] == -1)
{
a[Q[i_st].x + 1][Q[i_st].y - 2] = a[Q[i_st].x][Q[i_st].y] + 1; Q[i_end].x = Q[i_st].x + 1; Q[i_end++].y = Q[i_st].y - 2;
}
if (Q[i_st].x<7 && Q[i_st].y<6 && a[Q[i_st].x + 1][Q[i_st].y + 2] == -1)
{
a[Q[i_st].x + 1][Q[i_st].y + 2] = a[Q[i_st].x][Q[i_st].y] + 1; Q[i_end].x = Q[i_st].x + 1; Q[i_end++].y = Q[i_st].y + 2;
}
i_st++;
}
if (a[x_st][y_st] == -1)
printf("Nedostogaem pole");
else
{
printf("Put':\n");
do
{
printf("%d %d\n", x_st + 1, y_st + 1);
if (x_st>1 && y_st>0 && a[x_st - 2][y_st - 1] == a[x_st][y_st] - 1)
{
x_st -= 2; y_st--;
}
else
if (x_st>1 && y_st<7 && a[x_st - 2][y_st + 1] == a[x_st][y_st] - 1)
{
x_st -= 2; y_st++;
}
else
if (x_st>0 && y_st>1 && a[x_st - 1][y_st - 2] == a[x_st][y_st] - 1)
{
x_st--; y_st -= 2;
}
else
if (x_st>0 && y_st<6 && a[x_st - 1][y_st + 2] == a[x_st][y_st] - 1)
{
x_st--; y_st += 2;
}
else
if (x_st<6 && y_st>0 && a[x_st + 2][y_st - 1] == a[x_st][y_st] - 1)
{
x_st += 2; y_st--;
}
else
if (x_st<6 && y_st<7 && a[x_st + 2][y_st + 1] == a[x_st][y_st] - 1)
{
x_st += 2; y_st++;
}
else
if (x_st<7 && y_st>1 && a[x_st + 1][y_st - 2] == a[x_st][y_st] - 1)
{
x_st++; y_st -= 2;
}
else
if (x_st<7 && y_st<6 && a[x_st + 1][y_st + 2] == a[x_st][y_st] - 1)
{
x_st++; y_st += 2;
}
} while (a[x_st][y_st]>0);
printf("%d %d\n", x_end + 1, y_end + 1);
}
return 0;
}