Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2015, 02:32   #1
Otclik
 
Регистрация: 08.11.2015
Сообщений: 4
По умолчанию Перевод кода с С++ в Delphi

Очень прошу, кому не сложно помогите пожалуйста перевести код в 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;
	
		
		

}
Otclik вне форума Ответить с цитированием
Старый 19.12.2015, 03:00   #2
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Было:
Код:
#include <stdio.h>
#include <conio.h>

struct tt {
	int x, y;
};
// и т.д.
Стало
Код:
program knight;  // если консольное приложение

{$APPTYPE CONSOLE}
type tt=record
 x,y:Integer;
end;
// и т.д.
type_Oleg вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод кода с Delphi на с++ fRancu Помощь студентам 4 12.06.2014 21:42
Перевод кода с Delphi в С++. spectrum988 Помощь студентам 12 17.04.2014 12:13
Перевод кода из Delphi на C++ mego4el Общие вопросы C/C++ 1 29.12.2012 22:27
перевод кода с Delphi sergo555 Общие вопросы C/C++ 1 12.11.2011 20:32
Перевод кода с C++ на Delphi atagilov Общие вопросы Delphi 5 22.06.2011 22:09