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

Помогите пожалуйста с легкой задачей на C++. - C++

Восстановить пароль Регистрация
 
_Edith
 Аватар для _Edith
0 / 0 / 0
Регистрация: 02.04.2011
Сообщений: 99
03.10.2011, 20:21     Помогите пожалуйста с легкой задачей на C++. #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;
}
Но она не работает так как в условии не происходит инкрементации.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.10.2011, 20:21     Помогите пожалуйста с легкой задачей на C++.
Посмотрите здесь:

C++ Помогите пожалуйста с задачей по BORLAND С++
C++ Помогите с задачей пожалуйста. Перегрузка операций.
C++ Помогите с задачей, пожалуйста! (файлы Си++)
Помогите пожалуйста с задачей c++ C++
C++ Помогите с задачей
C++ Помогите пожалуйста с задачей
Помогите пожалуйста с простой задачей C++
подскажите пожалуйста с задачей C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
04.10.2011, 09:05     Помогите пожалуйста с легкой задачей на C++. #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)
Yandex
Объявления
04.10.2011, 09:05     Помогите пожалуйста с легкой задачей на C++.
Ответ Создать тему
Опции темы

Текущее время: 16:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru