Форум: "Начинающим";
Текущий архив: 2014.03.30;
Скачать: [xml.tar.bz2];
ВнизПочему программа не работает? Не могу найти ошибку. Найти похожие ветки
← →
oliksin (2013-06-08 21:26) [0]Поля шахматной доски характеризуются записью
Type
Pole=record
Ver:(a,b,c,d,e,f,g,h); {вертикальные координаты}
Hor:1..8; {горизонтальные координаты}
end;
Var Figura:Pole;
Вывести сообщение, может ли конь за один ход перейти с поля Figura i на поле Figura j
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
Type Vertikal=(a,b,c,d,e,f,g,h);
Pole=record
Ver:Vertikal; {вертикальные координаты}
Hor:1..8; {горизонтальные координаты}
end;
TForm3 = class(TForm)
Button1: TButton;
ComboBox1: TComboBox;
ComboBox2: TComboBox;
ComboBox3: TComboBox;
ComboBox4: TComboBox;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
// procedure FormCreate(Sender: TObject);
// procedure ComboBox1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
{$R *.dfm}
procedure TForm3.Button1Click(Sender: TObject);
var Figura1,Figura2: Pole;
c1,c2:char;
hod:boolean;
begin
c1:=Combobox2.Text[1]; //вводим a..h
Figura1.Ver:=Vertikal(ord(c1)-97);//присваиваем 0..7
Figura1.Hor:=StrToInt(Combobox1.Text); //вводим 1..8
c2:=Combobox4.Text[1];//вводим a..h
Figura2.Ver:=Vertikal(ord(c2)-97);//присваиваем 0..7
Figura2.Hor:=StrToInt(combobox3.Text); //вводим 1..8
hod:=((abs(ord(Figura1.Ver)-ord(Figura2.Ver))=2)
and(abs(Figura1.Hor-Figura2.Hor)=1))
or ((abs(ord(Figura1.Ver)-ord(Figura2.Ver))=1)
and(abs(Figura1.Hor-Figura2.Hor)=2));
if hod then Edit1.Text:="Может"
else Edit1.Text:="Не может";
end;
end.
← →
RWolf © (2013-06-09 00:18) [1]всё в норме.
← →
[ВладОшин] © (2013-06-09 07:13) [2]
> всё в норме.
+1
а если не работает, то что то не то вводите
для тестаvar
hod:boolean;
Figura1,Figura2: Pole;
i,j:Integer;
begin
for i := 0 to 7 do
for j := 0 to 7 do
begin
if StringGrid1.cells[i,j] = "1" then
begin
Figura1.Ver := Vertikal(i);
Figura1.Hor := j;
end;
if StringGrid1.cells[i,j] = "2" then
begin
Figura2.Ver := Vertikal(i);
Figura2.Hor := j;
end;
end;
hod := (
(abs(ord(Figura1.Ver)-ord(Figura2.Ver))=2)
and
(abs(Figura1.Hor-Figura2.Hor)=1)
)
or
(
(abs(ord(Figura1.Ver)-ord(Figura2.Ver))=1)
and
(abs(Figura1.Hor-Figura2.Hor)=2)
);
if hod then
ShowMessage("da") else
ShowMessage("net");
← →
Труп Васи Доброго © (2013-06-14 14:31) [3]Можно и по другому.
if (х1<>x0)&(y1<>y0)&((abs(x1-x0)+(abs(y1-y0))=3) Then
ShowMessage("da")
else
ShowMessage("net");
← →
Труп Васи Доброго © (2013-06-14 14:35) [4]Или по другому
if ((х1-x0)*(y1-y0)>0)&((abs(x1-x0)+(abs(y1-y0))=3) Then
ShowMessage("da")
else
ShowMessage("net");
← →
Труп Васи Доброго © (2013-06-14 14:43) [5]Скорее всего даже так будет правильно, но надо проверить.
Или по другому
if (abs((х1-x0)*(y1-y0))*(abs(x1-x0)+abs(y1-y0)))=6 Then
ShowMessage("da")
else
ShowMessage("net");
← →
Труп Васи Доброго © (2013-06-14 14:51) [6]Всё ещё проще!!! Второе условие лишнее! Вот так достаточно!
if (abs((х1-x0)*(y1-y0))=2) Then
ShowMessage("da")
else
ShowMessage("net");
← →
[ВладОшин] © (2013-06-14 14:56) [7]
> if (abs((х1-x0)*(y1-y0))=2) Then
!!
Жалею, что не сам догадался )
← →
Palladin © (2013-06-14 15:03) [8]
> Почему программа не работает?
Написал, но не смог запустить?
← →
Dennis I. Komarov © (2013-06-21 20:33) [9]Усложним задачу:
Поле доски кодируется одним байтом:
00XXX000 - 1-8
00000XXX - a-h
Написать функцию, которая возвращает минимальное количество ходов за которое конь может перейти с поля "A" на поле "B"...function KnightStepCount (A,B: Byte): Byte;
begin
end;
А-ля пятница :)
← →
Dennis I. Komarov © (2013-06-21 20:52) [10]На троечку:
function CanKnightStep (A,B: Byte): Boolean; // из [0]
← →
Dennis I. Komarov © (2013-06-21 21:33) [11]Первая задача рекурсией на четверку...
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2014.03.30;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.002 c