Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.11.2018, 19:43   #1
Megabuzz
Пользователь
 
Регистрация: 15.10.2018
Сообщений: 11
По умолчанию Задана шахматная доска, содержащая черного короля,черных пешек и белого ферзя. Определить какими пешками можно совершить ход, чтобы черный король не был под ударом ферзя.

Здравствуйте, всё никак не могу решить задание на с++, желательно в виде 2д на консоли.
Само задание: Задана шахматная доска, содержащая черного короля,черных пешек и белого ферзя. Определить какими пешками можно совершить ход, чтобы черный король не был под ударом ферзя.

Вот что успел набросать, пока просто поле с расстановкой фигур, со своими недочётами конечно.


Код:
#include "pch.h"
#include <iostream>
#include <string>
#include <Windows.h>
#include <ctime>

using namespace std;

const int n = 8;
int arr[n];
int  ferzeY, y, y2, y3, y4, y5, y6, y7, y8, KingY, ferzeX, x, x2, x3, x4, x5, x6, x7, x8, KingX;
void Draw();

int main()
{
	SetConsoleCP(1251);
	SetConsoleOutputCP(1251);
	srand(time(NULL));

	string ask;
	cout << "Вы хотите сами ввести координаты?" << endl;
	cin >> ask;
	if (ask == "Да" || ask == "да") {
		cout << "Введите координаты ферзя в порядке строка, столбец:" << endl;
		cin >> ferzeX >> ferzeY;
		cout << "Введите координаты 1-й пешки в порядке строка, столбец:" << endl;
		cin >> x >> y;
		cout << "Введите координаты 2-й пешки в порядке строка, столбец:" << endl;
		cin >> x2 >> y2;
		cout << "Введите координаты 3-й пешки в порядке строка, столбец:" << endl;
		cin >> x3 >> y3;
		cout << "Введите координаты 4-й пешки в порядке строка, столбец:" << endl;
		cin >> x4 >> y4;
		cout << "Введите координаты 5-й пешки в порядке строка, столбец:" << endl;
		cin >> x5 >> y5;
		cout << "Введите координаты 6-й пешки в порядке строка, столбец:" << endl;
		cin >> x6 >> y6;
		cout << "Введите координаты 7-й пешки в порядке строка, столбец:" << endl;
		cin >> x7 >> y7;
		cout << "Введите координаты 8-й пешки в порядке строка, столбец:" << endl;
		cin >> x8 >> y8;
		cout << "Введите координаты Короля в порядке строка, столбец:" << endl;
		cin >> KingX >> KingY;
		Draw();
	}
	else {
		ferzeX = rand() % 8 + 1;
		ferzeY = rand() % 8 + 1;
		x = rand() % 8 + 1;
		y = rand() % 8 + 1;
		x2 = rand() % 8 + 1;
		y2 = rand() % 8 + 1;
		x3 = rand() % 8 + 1;
		y3 = rand() % 8 + 1;
		x4 = rand() % 8 + 1;
		y4 = rand() % 8 + 1;
		x5 = rand() % 8 + 1;
		y5 = rand() % 8 + 1;
		x6 = rand() % 8 + 1;
		y6 = rand() % 8 + 1;
		x7 = rand() % 8 + 1;
		y7 = rand() % 8 + 1;
		x8 = rand() % 8 + 1;
		y8 = rand() % 8 + 1;
		KingX = rand() % 8 + 1;
		KingY = rand() % 8 + 1;
		Draw();
	}

	return 0;
}

void Draw() {
	cout << " ";
	for (char i = 'A'; i <= 'H'; i++)
	{
		cout << i << " ";
	}
	cout << endl;

	for (int i = n; i >= 1; i--)
	{
		for (int j = 0; j <= 2 * n; j++)
		{
			if (j == 0 || j == 2 * n - 1) 
				cout << i;
			if (ferzeX == i && ferzeY == j && ferzeX==2*i && ferzeY == 2 * j)
				cout << "F";
			else if (x == i && y == j)
				cout << "P";
			else if (x2 == i && y2 == j)
				cout << "P";
			else if (x3 == i && y3 == j)
				cout << "P";
			else if (x4 == i && y4 == j)
				cout << "P";
			else if (x5 == i && y5 == j)
				cout << "P";
			else if (x6 == i && y6 == j)
				cout << "P";
			else if (x7 == i && y7 == j)
				cout << "P";
			else if (x8 == i && y8 == j)
				cout << "P";
			else if (KingX == i && KingY == j)
				cout << "K";
			else
			cout << " ";
		}
		cout << endl;
	}
	cout << " ";
	for (char i = 'A'; i <= 'H'; i++)
	{
		cout << i << " ";
	}
	cout << endl;
}
_____
Код программы нужно выделять (форматировать) тегами [CODE] [/CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 09.11.2018 в 22:59.
Megabuzz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ладья и король против короля С/С++. LostCode Помощь студентам 4 27.09.2011 15:17
Ход ферзя iSkulll Паскаль, Turbo Pascal, PascalABC.NET 2 04.05.2011 11:37
шахматная доска revaldo666 Общие вопросы C/C++ 4 11.01.2011 11:25
Поиск пути на шахматной доске ходом ферзя A!eI{S@nDrA Помощь студентам 2 16.06.2009 09:51
шахматная доска Irisha_17_85 Паскаль, Turbo Pascal, PascalABC.NET 4 04.11.2008 10:50