![]() |
|
#1
|
|||
|
|||
![]() Подскажите пожалуйста алгоритм решения этой задачи через подпрограммы. Какие подпрограммы где будут использоваться и что они должны делать.
Обычным способом решил, а так что то не совсем въезжаю откуда начать ))) Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит восьми: первое число - номер вертикали (при счете слева на право), второе число - номер горизонтали (при счете снизу вверх).Даны натуральные числа k, e, m, n каждое из которых не превосходит восьми. Требуется выяснить, можно ли с поля (k, e) одним ходом ферзя попасть на поле (m, n). Если нет, то выяснить, как это можно сделать за два хода (указать поле, на которое приводит первый ход). |
#2
|
|||
|
|||
![]() как то так
Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Label1: TLabel; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Button1: TButton; function goo(k,e,m,n:integer):boolean; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} function tform1.goo(k,e,m,n:integer):boolean; begin if (k=m) or (e=n) or (k-m=e-n) then begin result:=true; TLabel(label1).Caption:='ход возможен'; end else begin TLabel(label1).Caption:='ход возможен через '+inttostr(k)+','+inttostr(n); result:=false; end; end; procedure TForm1.Button1Click(Sender: TObject); begin goo(strtoint(Edit1.text),strtoint(Edit2.text),strtoint(Edit3.text),strtoint(Edit4.text)); end; end. Последний раз редактировалось freedomman, 12.10.2011 в 13:09. |