fork(1) download
  1. #include <iostream>
  2. #include <cmath>
  3. #include <algorithm>
  4. using namespace std;
  5.  
  6. struct position{
  7. char strk;
  8. int stlb;
  9. };
  10.  
  11. int main() {
  12. //задаем позиции белой дамки и двух черных пешек
  13. position lady,pawn1,pawn2;
  14. cin>>lady.strk>>lady.stlb;
  15. cin>>pawn1.strk>>pawn1.stlb;
  16. cin>>pawn2.strk>>pawn2.stlb;
  17. cout<<"Дамка срубит"<<" ";
  18. //условие 1: пешки не находятся на границе поля
  19. if(pawn1.strk!='a' && pawn2.strk!='a' && pawn1.strk!='h' && pawn2.strk!='h' && pawn1.stlb!=1 && pawn2.stlb!=1 && pawn1.stlb!=8 && pawn2.stlb!=8){
  20. //условие 1.1: обе пешки размещены на диагонали с дамкой
  21. if(abs(int(lady.strk)-int(pawn2.strk))==abs(lady.stlb-pawn2.stlb) && abs(int(lady.strk)-int(pawn1.strk))==abs(lady.stlb-pawn1.stlb)){
  22. //условие 1.1.1: позиции пешек на диагонали не являются соседними
  23. if(abs(int(pawn2.stlb)-int(pawn1.stlb))!=1 && abs(pawn2.strk-pawn1.strk)!=1){
  24. //условие 1.1.1.1: позиции пешек размещены с одной стороны относительно позиции дамки
  25. if(abs(int(pawn1.strk)-int(pawn2.strk))<max(abs(int(lady.strk)-int(pawn1.strk)),abs(int(lady.strk)-int(pawn2.strk))) && abs(pawn1.stlb-pawn2.stlb)<max(abs(lady.stlb-pawn1.stlb),abs(lady.stlb-pawn2.stlb)))cout<<"две пешки";
  26. //условие 1.1.1.2: позиции пешек размещены с разных сторон относительно позиции дамки
  27. else cout<<"одну пешку";
  28. }
  29. //условие 1.1.2: позиции пешек на диагонали являются соседними
  30. else cout<<"ничего";
  31. }
  32. //условие 1.2: или 1 пешка или 2 размещены на диагонали с дамкой
  33. else if(abs(int(lady.strk)-int(pawn1.strk))==abs(lady.stlb-pawn1.stlb) || abs(int(lady.strk)-int(pawn2.strk))==abs(lady.stlb-pawn2.stlb))cout<<"одну";
  34. //условие 1.3: ни одна из пешек не размещена на диагонали с дамкой
  35. else cout<<"ничего";
  36. }
  37. //условие 2: пешка1 находится на границе
  38. else if((pawn1.strk=='a' || pawn1.strk=='h' || pawn1.stlb==1 || pawn1.stlb==8) && (pawn2.strk!='a' || pawn2.strk!='h' || pawn2.stlb!=1 || pawn2.stlb!=8)){
  39. //условие 2.1: пешка2 находится на диагонали с дамкой
  40. if(abs(int(lady.strk)-int(pawn2.strk))==abs(lady.stlb-pawn2.stlb) && abs(int(pawn2.stlb)-int(pawn1.stlb))!=1 && abs(pawn2.strk-pawn1.strk)!=1)cout<<"одну";
  41. else cout<<"ничего";
  42. }
  43. //условие 3: пешка2 находится на границе
  44. else if((pawn2.strk=='a' || pawn2.strk=='h' || pawn2.stlb==1 || pawn2.stlb==8) && (pawn1.strk!='a' || pawn1.strk!='h' || pawn1.stlb!=1 || pawn1.stlb!=8)){
  45. //условие 3.1: пешка1 находится на диагонали с дамкой
  46. if(abs(int(lady.strk)-int(pawn1.strk))==abs(lady.stlb-pawn1.stlb) && abs(int(pawn1.stlb)-int(pawn1.stlb))!=1 && abs(pawn1.strk-pawn1.strk)!=1)cout<<"одну";
  47. else cout<<"ничего";
  48. }
  49. //условие 4: обе пешки находятся на границе
  50. else cout<<"ничего";
  51. return 0;
  52. }
Success #stdin #stdout 0s 16064KB
stdin
a1
b2
f6
stdout
Дамка срубит две пешки