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

Угрожает ли конь, стоящий на поле (k, l), полю (m, n) - C++

Восстановить пароль Регистрация
 
Neotwalker
21 / 1 / 0
Регистрация: 22.12.2013
Сообщений: 123
12.05.2016, 15:14     Угрожает ли конь, стоящий на поле (k, l), полю (m, n) #1
Поле шахматной доски определяется парой натуральных чисел, первое из которых задает номер вертикали, а второе — номер горизонтали. Даны натуральные числа k, l, m, n. Требуется выяснить, угрожает ли конь, стоящий на поле .(k, l), полю (m, n). Из блок-схемы реализовать в C++.
Миниатюры
Угрожает ли конь, стоящий на поле (k, l), полю (m, n)  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.05.2016, 15:14     Угрожает ли конь, стоящий на поле (k, l), полю (m, n)
Посмотрите здесь:

C++ Определить, угрожает ли ферзь фигуре
C++ Конь.
C++ Шахмотный конь
C++ Угрожает ли ладья заданному полю
C++ Шахматная доска. Выяснить, угрожает ли конь, стоящий на поле (k, l), полю(m, n)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TimeTwo
68 / 68 / 31
Регистрация: 29.11.2009
Сообщений: 318
12.05.2016, 16:12     Угрожает ли конь, стоящий на поле (k, l), полю (m, n) #2
Neotwalker, совсем чуть чуть не по блок схеме
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
#include <iostream>
using namespace std;
 
class point{
private:
    int *x,*y;
public:
    point(int a,int b);
    ~point();
    point(const point &obj);
    int get_x(){ return *x;}
    int get_y(){ return *y;}
};
point::point(const point &obj){
     x = new int;
     y = new int;
     *x = *obj.x;
     *y = *obj.y;
}
point::point(int a,int b){
    x = new int;
    y = new int;
    *x = a;
    *y = b;
}
point::~point(){
    delete x;
    delete y;
}
bool horse(point obj1,point obj2){
    int x1 = obj1.get_x();int x2 = obj2.get_x();int y1 = obj1.get_y();int y2 = obj2.get_y();
    if (((x1==x2+1)&&(y1==((y2+2)||(y2-2))))||((x1==x2+2)&&(y1==((y2+1)||y1-1)))||((x1==x2-2)&&(y1==((y2+1)||(y2-1))))||((x1==x2-1)&&y1==((y2+2)||(y2-2))))
        return true;
    else
        return false;
}
void main(){
    int k,l,m,n;
    cout<<"enter k,l,m,n";
    cin>>k>>l>>m>>n;
    point a(k,l), b(m,n);
    if (horse(b,a))
        cout<<"yes";
    else
        cout<<"no";
}
Neotwalker
21 / 1 / 0
Регистрация: 22.12.2013
Сообщений: 123
12.05.2016, 16:20  [ТС]     Угрожает ли конь, стоящий на поле (k, l), полю (m, n) #3
TimeTwo, Ого, ты с классами написал, а можно как-то упростить задачу и написать все в main'e без классов, просто я еще такого не проходил?)
TimeTwo
68 / 68 / 31
Регистрация: 29.11.2009
Сообщений: 318
12.05.2016, 16:24     Угрожает ли конь, стоящий на поле (k, l), полю (m, n) #4
C++
1
2
3
4
5
6
bool horse(int x1,int x2, int y1, int y2){
    if (((x1==x2+1)&&(y1==((y2+2)||(y2-2))))||((x1==x2+2)&&(y1==((y2+1)||y1-1)))||((x1==x2-2)&&(y1==((y2+1)||(y2-1))))||((x1==x2-1)&&y1==((y2+2)||(y2-2))))
        return true;
    else
        return false;
}
и применяем эту функцию в мейне к нашим числам типа
C++
1
2
3
4
if (horse(l,m,k,n))
    cout<<"y";
else
    cout<<"n";
остальное выкини
Evg
12.05.2016, 16:27
  #5

Не по теме:

Что за идиот такую блок-схему рисовал (в смысле идиотского алгоритма) ...

Мой ответ не по теме, а касается варианта TimeTwo. Классический случай, когда заведены классы там, где они в общем-то и не нужны. В итоге автор уделил всё своё время тому, чтобы реализовать через классы (причём абсолютно бестолково). А на то, чтобы подумать над решением задачи времени не осталось вообще, в итоге программа превратилась в какую-то бесконечную кишку, глядя на которую, сложно сказать, правльно она вообще работает, или что-то там упущено

А задача решается просто:

C
/* расстояние между конями по горизонтали */
dx = abs (k - m);
 
/* расстояние между конями по вертикали */
dy = abs (l - n);
 
if ((dx == 1 && dy == 2) || (dx == 2 && dy == 1))
  да
else
  нет

Neotwalker
21 / 1 / 0
Регистрация: 22.12.2013
Сообщений: 123
12.05.2016, 16:59  [ТС]     Угрожает ли конь, стоящий на поле (k, l), полю (m, n) #6
Evg, Просто тут обязательно нужно использовать цикл "for". Такие уж причуды...
Yandex
Объявления
12.05.2016, 16:59     Угрожает ли конь, стоящий на поле (k, l), полю (m, n)
Ответ Создать тему
Опции темы

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