Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
_Edith
0 / 0 / 0
Регистрация: 02.04.2011
Сообщений: 99
#1

Выяснить, угрожает ли ферзь полю (k, l), если он расположен на поле (m, n) - C++

03.10.2011, 20:21. Просмотров 710. Ответов 1
Метки нет (Все метки)

Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит восьми: первое число – номер вертикали (при счете слева направо), второе – номер горизонтали (при счете сверху вниз). Даны натуральные числа k , l , m , n , каждое из которых не превосходит восьми. Требуется выяснить, угрожает ли ферзь полю ( k , l ), если он расположен на поле ( m , n ). Входной файл lb 2_19. in содержит в первой строке четыре числа, разделенные пробелами, – k , l , m , n , а выходной файл lb 2_19. out в первой строке слово YES (если ферзь угрожает) или NO (если ферзь не угрожает клетке).

Пример входного файла lb 2_19. in

5 3 1 7

Пример выходного файла lb 2_19. out

YES

не обязательно делать с считыванием из файлов. можно с простым вводом выводом.
Моя версия программы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include "iostream"
#include <conio.h>
#include <cstdlib>
#include <locale>
 
using namespace std;
 
int main()
{
    int k, l, m, n, d, c;
    int i, j;
    int t = 0;
 
    setlocale(0, "");
 
    cout << "Введите координаты ферзя по горизонтали" << endl;
    cin >> k;
 
    cout << "Введите координаты ферзя по вертикали" << endl;
    cin >> l;
 
    cout << "Введите координаты короля по горизотали" << endl;
    cin >> m;
    d = m;
 
    cout << "Введите координаты короля по вертикали" << endl;
    cin >> n;
    c = n;
 
    if (k == m || l == n)
        t = 1;
    else
    {
 
        for (i = 0; i < 4; i++)
        {
            m = d;
            n = c;
 
            for (j = 0; j < 8; j++)
            {
                if (((k == ++m) && (l == ++n)) || ((k == --m) && (l == --n)) || ((k == ++m) && (l == --n)) || ((k == --m) && (l == ++n)))
                    t = 1;
            }
        }
    }
            
    if (t == 1)
        cout << "YES";
    else
        cout << "NO";
 
    getch();
 
    return 0;
}
Но она не работает так как в условии не происходит инкрементации.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.10.2011, 20:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Выяснить, угрожает ли ферзь полю (k, l), если он расположен на поле (m, n) (C++):

Необходимо выяснить:если на клетке (a,b) расположен ферзь,угрожает ли он полю (c,d) - C++
Поле шахматной доски имеет размер 8х8.Клетки определяются координатами,первая из которых - номер вертикали(слева направо),а вторая - номер...

Шахматная доска: угрожает ли ферзь, стоящий на поле (k, l), полю (m, n)? - C++
Собственно,условие вот. Поле шахматной доски определяется парой натуральных чисел, первое из которых задает номер вертикали, а второе —...

Шахматная доска. Выяснить, угрожает ли конь, стоящий на поле (k, l), полю(m, n) - C++
Поле шахматной доски определяется парой натуральных чисел,первое из которых задает номер вертикали, а второй- номе горизонтали. Даны...

Определить, угрожает ли ферзь полю с заданными координатами - C++
Поле шахматной доски определяется парой натуральных чисел, первое число - номер вертикали, второе - номер горизонтали. Даны натуральные...

Угрожает ли конь, стоящий на поле (k, l), полю (m, n) - C++
Поле шахматной доски определяется парой натуральных чисел, первое из которых задает номер вертикали, а второе — номер горизонтали. Даны...

Определить, угрожает ли ферзь фигуре - C++
Привет Всем !!!! Определить,угрожает ли ферзь, расположенный на поле ( n1,m1 ) шахматной доски ,фигуре, расположенной на поле ( n2,m2...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
lemegeton
2924 / 1353 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
04.10.2011, 09:05 #2
Тут не нужны циклы.

Предположим, координаты ферзя -- (x, y), а координаты проверяемого поля -- (a, b).
Тогда "ферзь бьет поле" по диагонали, в случае, если разницы в координатах по X и по Y равны:
abs(x - a) == abs(y - b)
и "ферзь бьет поле" по вертикали или горизонтали, если совпадает или горизонталь или вертикаль:
x == a || y == b
совмещаем, получаем, что "ферзь бьет поле" если:
(abs(x - a) == abs(y - b)) || (x == a || y == b)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.10.2011, 09:05
Привет! Вот еще темы с ответами:

Проверить, угрожает ли ферзь фигуре на шахматной доске - C++
Поле шахматной доски определяется парой натуральных чисел, первое число-номер вертикали, второе-номер горизонтали. Даны натуральные числа...

Угрожает ли ладья заданному полю - C++
Выполнить задание, используя условные операторы Поле шахматной доски определяется парой натуральных чисел, каждое из которых не...

Выяснить можно ли с поля (k,l) одним ходом ферьзя попасть на поле(m,n). Если нет, то выяснить, как это можно сделать за два хода - C++
Поле шахмотной доски определяеся парой натуральных чисел, каждая из которых не превосходит восьми: первое число номер вертикали (при счете...

Проверить не угрожает ли данный шахматный конь заданному полю - C++
Поле шахматной доски имеет размер 8 x 8. Клетки обозначены координатами, первая - номер по вертикале (слева на право),вторая - номер по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru