Шахматная доска: Проверить, есть ли угроза королю - C (СИ)
Формулировка задачи:
Формулировка.
На шахматной доске стоят черный король и белые ладья и слон (ладья бьет по горизонтали и вертикали, слон – по диагоналям). Проверить, есть ли угроза королю и если есть, то от кого именно. Позиция каждой шахматной фигуры задается в обычной нотации, например, d7.Формат входных данных:
[вертикальная позиция короля] [пробел] [горизонтальная позиция короля] [вертикальная позиция ладьи] [горизонтальная позиция ладьи] [вертикальная позиция слона] [горизонтальная позиция слона]. Пример: a1b2c3Формат выходных данных:
[вертикальная позиция той фигуры, которая бьет короля] [горизонтальная позиция той фигуры, которая бьет короля] [пробел] [вертикальная позиция той фигуры, которая бьет короля] [горизонтальная позиция той фигуры, которая бьет короля]. Фигуры выводятся в порядке их ввода. Если король не бьется ни одной фигурой, то выдается no solution. Пример: b1 c3// Chess 17.cpp: определяет точку входа для консольного приложения.
//
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <locale.h>
int main()
{
setlocale(LC_ALL, "russian");
int gkk, gks, gkl; // Горизонтальные координаты короля, слона и ладьи соответственно
char vkk, vks, vkl; // Вертикальные координаты короля, слона и ладьи соответственно
printf ("Пожалуйста введите координаты фигур\n"); //Ввод данных
printf ("Горизонтальная координата короля: \n");
scanf ("%d", &gkk);
printf ("Вертикальная координата короля: \n");
scanf ("%с", &vkk);
printf ("Координаты короля: %d%с\n",gkk,vkk);
printf ("Горизонтальная координата ладьи: \n");
scanf ("%d", &gkl);
printf ("Вертикальная координата ладьи: \n");
scanf ("%с", &vkl);
printf ("Координаты ладьи: %d%с\n",gkl,vkl);
printf ("Горизонтальная координата слона: \n");
scanf ("%d", &gks);
printf ("Вертикальная координата слона: \n");
scanf ("%с", &vks);
printf ("Координаты слона: %d%с\n",gks,vks);
_getch ();
return (0);
}Решение задачи: «Шахматная доска: Проверить, есть ли угроза королю»
textual
Листинг программы
#include <stdio.h>
#include <conio.h>
#include <locale.h>
char getChar()
{
char buff[32];
scanf( "%31s", buff );
return buff[0];
}
int main()
{
setlocale(LC_ALL, "russian");
int gkk, gks, gkl;
char vkk, vks, vkl;
printf ("Please enter coordinates\n");
printf ("King hor: \n");
scanf ("%d", &gkk);
printf ("King vert: \n");
vkk = getChar();
printf ("King: %d%c\n", gkk, vkk);
printf ("Rook hor: \n");
scanf ("%d", &gkl);
printf ("Rook vert: \n");
vkl = getChar();
printf ("Rook: %d%c\n", gkl, vkl);
printf ("Bishop hor: \n");
scanf ("%d", &gks);
printf ("Bishop vert: \n");
vks = getChar();
printf ("Bishop: %d%c\n", gks, vks);
_getch ();
return (0);
}
Объяснение кода листинга программы
В этом коде происходит следующее:
- Считывание координат короля
- Пользователю предлагается ввести координаты короля (строка
King hor:иKing vert:). - С помощью функции
scanfсчитывается горизонтальная координата короля и сохраняется в переменнойgkk. - С помощью функции
getCharсчитывается вертикальная координата короля и сохраняется в переменнойvkk. - С помощью функции
printfвыводится сообщение с координатами короля (строкаKing: %d%c\n, gkk, vkk).
- Пользователю предлагается ввести координаты короля (строка
- Считывание координат ладьи
- Пользователю предлагается ввести координаты ладьи (строка
Rook hor:иRook vert:). - С помощью функции
scanfсчитывается горизонтальная координата ладьи и сохраняется в переменнойgkl. - С помощью функции
getCharсчитывается вертикальная координата ладьи и сохраняется в переменнойvkl. - С помощью функции
printfвыводится сообщение с координатами ладьи (строкаRook: %d%c\n, gkl, vkl).
- Пользователю предлагается ввести координаты ладьи (строка
- Считывание координат слона
- Пользователю предлагается ввести координаты слона (строка
Bishop hor:иBishop vert:). - С помощью функции
scanfсчитывается горизонтальная координата слона и сохраняется в переменнойgks. - С помощью функции
getCharсчитывается вертикальная координата слона и сохраняется в переменнойvks. - С помощью функции
printfвыводится сообщение с координатами слона (строкаBishop: %d%c\n, gks, vks).
- Пользователю предлагается ввести координаты слона (строка
- Вывод сообщения об успешном вводе
- После ввода всех координат выводится сообщение
Successful input.
- После ввода всех координат выводится сообщение
- Ожидание нажатия клавиши
- С помощью функции
_getchпрограмма ожидает нажатия клавиши.
- С помощью функции
- Завершение программы
- Программа возвращает 0, что означает успешное завершение.