Описание работы
#include
#include
#include
#define UP 0
#define LT 1
#define DN 2
#define RT 3
int main()
{
const int Width = 10;//Ширина
const int Height = 10;//Высота
const int CellSize = 50;//Размер клетки в пикселях
int Cell[Width][Height] = { //Задаем массив клеток
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 1, 1, 1, 1, 1, 0, 1, 1 },
{ 1, 0, 0, 0, 1, 0, 0, 0, 1, 1 },
{ 1, 1, 1, 1, 1, 0, 1, 1, 1, 1 },
{ 1, 0, 0, 0, 1, 0, 0, 0, 0, 1 },
{ 1, 1, 1, 0, 1, 0, 1, 1, 0, 1 },
{ 2, 0, 0, 0, 0, 0, 1, 0, 0, 3 },
{ 1, 1, 1, 1, 1, 0, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
};
int xb;//Координаты начальной клетки
int yb;
int xt;//Кооринаты текущей клетки
int yt;
int xe;//Координаты конечной клетки
int ye;
int i = 0;
int j = 0;
for (i = 0; i"); xb = i; yb = j; }
else
if (Cell[i][j] == 3) { printf(" >"); xe = i; ye = j; }
putch('\n');
}
int dir = UP;//Направление
//всегда пытается повернуть налево,
//если не получается, вперед,
//если и это не получается, направо,
//если и это не получается, назад
xt = xb;
yt = yb;
int k = 0;//номер шага
while ((xt != xe || yt != ye) && k < 1000)
{
k++;
if (Cell[xt][yt] != 2) Cell[xt][yt] = 4;
if (dir == UP)
{
if ((yt > 0) && Cell[xt][yt - 1] != 1) { yt--; dir = LT; }//налево
else
if ((xt > 0) && Cell[xt - 1][yt] != 1) { xt--; dir = UP; }//вверх
else
if ((yt < Width - 1) && Cell[xt][yt + 1] != 1) { yt++; dir = RT;}//направо
else
if ((xt < Height - 1) && Cell[xt + 1][yt] != 1) { xt++; dir = DN;}//вниз
}
else
if (dir == LT)
{
if ((xt < Height - 1) && Cell[xt + 1][yt] != 1) { xt++; dir = DN; }
else
if ((yt > 0) && Cell[xt][yt - 1] != 1) { yt--; dir = LT; }
else
if ((xt > 0) && Cell[xt - 1][yt] != 1) { xt--; dir = UP; }
else
if ((yt < Width - 1) && Cell[xt][yt + 1] != 1) { yt++; dir= RT; }
}
else
if (dir == DN)
{
if ((yt < Width - 1) && Cell[xt][yt + 1] != 1) { yt++; dir = RT; }
else
if ((xt < Height - 1) && Cell[xt + 1][yt] != 1) { xt++; dir = DN; }
else
if ((yt > 0) && Cell[xt][yt - 1] != 1) { yt--; dir = LT; }
else
if ((xt > 0) && Cell[xt - 1][yt] != 1) { xt--; dir = UP; }
}
else
if (dir == RT)
{
if ((xt > 0) && Cell[xt - 1][yt] != 1) { xt--; dir = UP; }
else
if ((yt < Width - 1) && Cell[xt][yt + 1] != 1) { yt++; dir = RT; }
else
if ((xt < Height - 1) && Cell[xt + 1][yt] != 1) { xt++; dir = DN; }
else
if ((yt > 0) && Cell[xt][yt - 1] != 1) { yt--; dir = LT; }
}
}
if (k == 1000)
printf("Don't find! \n");
else
printf("Find! \n");
putch('\n');
printf("k=%d\n", k);
putch('\n');
for (i = 0; i"); else
if (Cell[i][j] == 3) printf(" >"); else
if (Cell[i][j] == 0) putch(' '); else
if (Cell[i][j] == 2) putch('>'); else
if (Cell[i][j] == 3) putch('>'); else
printf(" .");
putch('\n');
}
system("pause");
return 0;
}
написать программу на подобие этой, но чтобы код отличался. + блок-схема