Предмет: Информатика, автор: Markentyy

Напишите на том языке, который вам удобен(желательно Pascal, Python или C++). Даю 50 баллов. Заранее спасибо

Приложения:

Ответы

Автор ответа: pb1036
0

type

 Поле = class

   private

     h, v: integer;

   public  

     constructor(ph, pv: integer) := (h, v) := (ph, pv);

     function Корректно := (h in 1..8) and (v in 1..8);

   end;

 

 Доска = class

   private

     class поле1, поле2: Поле;

   public

     class результат: List<string>;

     

     constructor(ph1, pv1, ph2, pv2: integer);

     begin

       поле1 := new Поле(ph1, pv1);

       if not поле1.Корректно then

       begin  

         Print('Incorrect data.');

         Halt

       end;

       поле2 := new Поле(ph2, pv2);

       if not поле2.Корректно then

       begin  

         Print('Incorrect data.');

         Halt

       end;

       результат := new List<string>;

     end;

     

     class function ВзятиеСлоном: boolean;

     begin

       Result := Abs(поле2.h - поле1.h) = Abs(поле2.v - поле1.v);

       if Result then результат.Add('Bishop.')

     end;

     

     class function ВзятиеЛадьей: boolean;

     begin

       Result := (поле2.h = поле1.h) or (поле2.v = поле1.v);

       if Result then результат.Add('Castle.')

     end;

     

     class function ВзятиеКонем: boolean;

     begin

       var dh := Abs(поле2.h - поле1.h);

       var dv := Abs(поле2.v - поле1.v);

       Result := (dh = 1) and (dv = 2) or (dh = 2) and (dv = 1);

       if Result then результат.Add('Knight.')  

     end;

     

     class function ВзятиеФерзем: boolean;

     begin

       Result := (Abs(поле2.h - поле1.h) = Abs(поле2.v - поле1.v)) or

           (поле2.h = поле1.h) or (поле2.v = поле1.v);

       if Result then результат.Add('Queen.')

     end;

     

     class function ВзятиеПешки: boolean;

     begin

       var слон := ВзятиеСлоном;

       var ладья := ВзятиеЛадьей;

       var конь := ВзятиеКонем;

       var ферзь := ВзятиеФерзем;

       Result := слон or ладья or конь or ферзь

     end;

 end;

 

begin

 var (h1, v1, h2, v2) := ReadInteger4;

 var cb := new Доска(h1, v1, h2, v2);

 if Доска.ВзятиеПешки then Доска.результат.PrintLines

 else Print('The pawn is not under attack.')

end.


pb1036: Язык - PascalАВС.NЕТ версия 3.9
Markentyy: Спасибо за ответ. Можешь пожалуйста попробовать код под дефолтный Паскаль переделать(просто принимает только дефолтный Паскаль)
pb1036: Могу, не не стану, я условие Ваше ("желательно Pascal, Python или C++") выполнил, время потратил, ради чего я буду еще втрое больше его тратить? Из-за какого-то вашего выпендрёжного ресурса?
Похожие вопросы