Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.90/10: Рейтинг темы: голосов - 10, средняя оценка - 4.90
sirserik
3 / 3 / 0
Регистрация: 12.05.2011
Сообщений: 157
1

Шахматная доска

14.06.2011, 16:59. Просмотров 1799. Ответов 5
Метки нет (Все метки)

Даны координаты двух различных полей шахматной доски x1,x2,y1,y2(Целые числа лежащие в диапазоне от 1 до 8). Проверить истинность высказывания Король за один ход может перейти с одного поля на другое. Решать только через бул Всем спасибо заранее
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.06.2011, 16:59
Ответы с готовыми решениями:

Шахматная доска
Шахматная доска содержит 8x8 клеток. Горизонтали и вертикали обозначаются...

шахматная доска
Поле шахматной доски определяется парой натуральных чисел, каждое из которых не...

шахматная доска
помогите написать программу, которая отображает на экране следующий рисунок...

шахматная доска
Здравствуйте! Есть задача: дана шахматная доска размером NxN, нужно...

Шахматная доска
Заполнить двумерный массив единицами и нулями таким образом, чтобы единицы...

5
ValeryLaptev
Эксперт С++
1050 / 829 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
14.06.2011, 17:10 2
Ну ты уж совсем что-то...
Пусть координаты короля x1,y1.
Король может сходить:
x1+1, y1
x1-1, y1
x1, y1+1
x1, y1-1
x1+1, y1+1
x1-1, y1+1
x1+1, y1-1
x1-1, y1-1

Это если он не краю доски стоит, то есть x1<8 и y1<8

Соответственно, надо проверять
а) равенство x2 и выражений с х1,
б) равенство y2 и выражений с y1,
0
sirserik
3 / 3 / 0
Регистрация: 12.05.2011
Сообщений: 157
15.06.2011, 15:57  [ТС] 3
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
Ну ты уж совсем что-то...
Пусть координаты короля x1,y1.
Король может сходить:
x1+1, y1
x1-1, y1
x1, y1+1
x1, y1-1
x1+1, y1+1
x1-1, y1+1
x1+1, y1-1
x1-1, y1-1

Это если он не краю доски стоит, то есть x1<8 и y1<8

Соответственно, надо проверять
а) равенство x2 и выражений с х1,
б) равенство y2 и выражений с y1,
я решил вот таким вот способом но все равно ошибка почему исправьте пожалуйста

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <math.h>
#include <iostream>
using namespace std;
void main()
{
    int x1,x2,y1,y2;
    cin>>x1>>x2>>y1>>y2;
    bool d,e,f,g,h;
    d =((x1-x2==1)&&(y2-y1==1))||((x1-x2==0)&&(y2-y1==1)); 
    e =((x2-x1==1)&&(y2-y1==1))||((x2-x1==1)&&(y2-y1==0));
    f = ((x2-x1==1)&&(y1-y2==1))||((x2-x1==0)&&(y1-y2==1));
    g = ((x1-x2==1)&&(y1-y2==1))||((x1-x2==1)&&(y1-y2==0));
    h = (d||e||f||g);
    cout<<h;
    cin.get();
cin.get();
}
Добавлено через 8 минут
ValeryLaptev, Здравствуйте я решил задачу про шахматы так как вы советовали но что не выходит исправьте и помогите пожалуйста.
Даны координаты двух различных полей шахматной доски x1,x2,y1,y2(Целые числа лежащие в диапазоне от 1 до 8). Проверить истинность высказывания Король за один ход может перейти с одного поля на другое. Решать только через бул

Мое решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <math.h>
#include <iostream>
using namespace std;
void main()
{
        int x1,x2,y1,y2;
        cin>>x1>>x2>>y1>>y2;
        bool d,e,f,g,h;
        d =((x1-x2==1)&&(y2-y1==1))||((x1-x2==0)&&(y2-y1==1)); 
        e =((x2-x1==1)&&(y2-y1==1))||((x2-x1==1)&&(y2-y1==0));
        f = ((x2-x1==1)&&(y1-y2==1))||((x2-x1==0)&&(y1-y2==1));
        g = ((x1-x2==1)&&(y1-y2==1))||((x1-x2==1)&&(y1-y2==0));
        h = (d||e||f||g);
        cout<<h;
        cin.get();
cin.get();
}
0
ValeryLaptev
Эксперт С++
1050 / 829 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
15.06.2011, 20:46 4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <cmath>
#include <iostream>
using namespace std;
int main()
{
        int x1,x2,y1,y2;
        cout << "Get Coord King :_"; cin >> x1 >> y1;  
        cout << "Get Coord Place:_"; cin >> x2 >> y2;  
        bool dx, dy;
        int x = abs(x2-x1);
        int y = abs(y2-y1);
        dx =(0<=x)&&(x < 2);  
        dy =(0<=y)&&(y < 2);
        bool yes = dx && dy;
        if(yes) cout << "Yes!" << endl; else cout << "No!" << endl;
        system("pause");
        return 0;
}
Внимание! Не проверяется корректность координат!
0
slice
63 / 78 / 6
Регистрация: 04.11.2010
Сообщений: 249
16.06.2011, 14:49 5
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
int x = abs(x2-x1);
int y = abs(y2-y1);
dx =(0<=x)&&(x < 2);
dy =(0<=y)&&(y < 2);
Пипец. Сначала делаешь abs, а затем проверяешь, что результат не получился меньше нуля.
То же мне "Эксперт C++". Я уж не говорю про дурацкие имена переменных.
0
ValeryLaptev
Эксперт С++
1050 / 829 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
17.06.2011, 07:38 6
Цитата Сообщение от slice Посмотреть сообщение
Пипец. Сначала делаешь abs, а затем проверяешь, что результат не получился меньше нуля.
То же мне "Эксперт C++". Я уж не говорю про дурацкие имена переменных.
Родной, а ты не видишь тут равенство?
Проверяется не больше нуля, а разница, которая должна быть 0 или 1.
Сначала разуй глаза, а потом комментируй.
0
17.06.2011, 07:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.06.2011, 07:38

Шахматная доска
Есть шахматная доска (8*8). Нужно с помощью фигуры &quot;конь&quot; обойти все 64 клетки...

Шахматная доска
Ребят, сейчас друг сидит на собеседовании, ему досталась какая-то слишком...

С++ Шахматная доска
Помогите пожалуйста с заданием. Нужно сделать шахматную доску 16*16 и...


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

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

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