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

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

Войти
Регистрация
Восстановить пароль
 
Neotwalker
21 / 1 / 0
Регистрация: 22.12.2013
Сообщений: 140
#1

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

12.05.2016, 15:14. Просмотров 423. Ответов 5
Метки нет (Все метки)

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

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

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

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

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

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

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

5
TimeTwo
68 / 68 / 31
Регистрация: 29.11.2009
Сообщений: 321
12.05.2016, 16:12 #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";
}
0
Neotwalker
21 / 1 / 0
Регистрация: 22.12.2013
Сообщений: 140
12.05.2016, 16:20  [ТС] #3
TimeTwo, Ого, ты с классами написал, а можно как-то упростить задачу и написать все в main'e без классов, просто я еще такого не проходил?)
0
TimeTwo
68 / 68 / 31
Регистрация: 29.11.2009
Сообщений: 321
12.05.2016, 16:24 #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";
остальное выкини
0
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
  нет

0
Neotwalker
21 / 1 / 0
Регистрация: 22.12.2013
Сообщений: 140
12.05.2016, 16:59  [ТС] #6
Evg, Просто тут обязательно нужно использовать цикл "for". Такие уж причуды...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.05.2016, 16:59
Привет! Вот еще темы с ответами:

Шахматный конь за один ход может переместиться с одного заданного поля на другое(каждое поле задано двумя коо - C++
Напишите понятным языком.:cry: Шахматный конь за один ход может переместиться с одного заданного поля на другое(каждое поле задано...

На поле (k, l) расположен конь. Определить, угрожает ли он полю (m, n) - Turbo Pascal
Здравствуйте всем, я начинающий программист... :) Помогите, пожалуйста, кто сможет, решаю контрольную работу по турбо паскалю (заодно...

На шахматном поле (k, l) расположен конь. Угрожает ли он полю (m, n)? - Turbo Pascal
Поле шахмотной доски определяется парой натуральных чисел, каждое из которых не превосходит восьми: первое число - номер вертикали (при...

Угрожает ли конь полю - C (СИ)
программа должна определять угрожает ли конь стоящий на шахматной доске с некоторыми координатами, полю координаты которого так же задаются...


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

Или воспользуйтесь поиском по форуму:
6
Yandex
Объявления
12.05.2016, 16:59
Ответ Создать тему
Опции темы

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