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

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

Войти
Регистрация
Восстановить пароль
 
sirserik
3 / 3 / 0
Регистрация: 12.05.2011
Сообщений: 156
#1

ферзь - C++

16.06.2011, 15:32. Просмотров 730. Ответов 6
Метки нет (Все метки)

Всем доброго времени суток помогите найти ошибку в решений задачи
Даны координаты доски 2-х различных полей шахматной доски x1,y1,x2,y2;(Целые числа в диапозоне от 1 до 8) Проверить истинность высказывания. Ферзь за один ход может перейти с одного поля на другоеВсем спасибо заранееРешать только через бул

Пример 7.8-3.4 -Истина
Вот мой код

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
#include <math.h>
#include <iostream>
using namespace std;
void main()
{
    int x1,y1,x2,y2,w,z,a,b,m,n;
    cin>>x1,y1,x2,y2;
    w = x2-x1;
    z = y2-y1;
    a = (x1+y1)%2;
    b = (x2+y2)%2;
    m = (x2-x1);
    n = (y2-y1);
    bool d,e,f,g,h,l;
    d = ((x1-x2==0))&&((z<=7)||(z>=7));
    e = ((z==0))&&((w<=7)||(w>=-7));
    f = ((a==0)&&(b==0))||((a==1)&&(b==1));
    g = (m==n)&&((m!=0)||(n!=0));
    h = m==-n;
    l = ((d)&&(e))||((f)&&(g)||(f)&&(h));
    cout<<l;
    cin.get();
cin.get();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.06.2011, 15:32     ферзь
Посмотрите здесь:

C++ Определить, угрожает ли ферзь фигуре
Шахматная доска: угрожает ли ферзь, стоящий на поле (k, l), полю (m, n)? C++
C++ Проверить истинность высказывания: «Ферзь за один ход может перейти с одного поля на другое»
Шахматы. Каждый ферзь бьет ровного одного ферзя C++
Проверить, что ферзь за один ход может перейти с одного поля на другое C++
C++ Необходимо выяснить:если на клетке (a,b) расположен ферзь,угрожает ли он полю (c,d)
C++ Шахматы. Ферзь
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lamed
297 / 297 / 71
Регистрация: 07.05.2011
Сообщений: 592
16.06.2011, 15:51     ферзь #2
Добрый день! Встречный вопрос? Доска пустая? Или могут быть другие фигуры?

Добавлено через 11 минут
Для пустой доски. Обработки ошибок нет
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// Даны координаты доски 2-х различных полей шахматной доски x1,y1,x2,y2;
// (Целые числа в диапозоне от 1 до 8) Проверить истинность высказывания.
//Ферзь за один ход может перейти с одного поля на другое
//  Пример 7.8-3.4 -Истина
#include <iostream>
using namespace std;
int main()
{
    int x1,y1,x2,y2;
    bool d;
 
 
    cin>>x1>>y1>>x2>>y2;
    d = x1==x2 || y1==y2 || x1-y1==x2-y2 || x1+y1==x2+y2;
    cout<<d;
    cin.get();
 
    return 0;
}
sirserik
3 / 3 / 0
Регистрация: 12.05.2011
Сообщений: 156
16.06.2011, 15:55  [ТС]     ферзь #3
Доска пустая но при попытке скомпелировать данный код выдает что у меня не определены переменные х2 и у2 не пойму
lamed
297 / 297 / 71
Регистрация: 07.05.2011
Сообщений: 592
16.06.2011, 16:04     ферзь #4
G++/Code::Blocks. Какая у Вас среда, компилятор?
sirserik
3 / 3 / 0
Регистрация: 12.05.2011
Сообщений: 156
16.06.2011, 16:15  [ТС]     ферзь #5
Цитата Сообщение от lamed Посмотреть сообщение
G++/Code::Blocks. Какая у Вас среда, компилятор?
все ошибку сам нашел cin>>x1,y1,x2,y2;
а надо было x1>>y1>>x2>>y2;
lamed
297 / 297 / 71
Регистрация: 07.05.2011
Сообщений: 592
16.06.2011, 16:19     ферзь #6
Нет, это не причина ошибки компилятора. Я запускал Вашу программу. Компилировалась нормально. Это логическая ошибка. Вполне легальный оператор "запятая".
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.06.2011, 16:23     ферзь
Еще ссылки по теме:

C++ Проверить, угрожает ли ферзь фигуре на шахматной доске
Определить, угрожает ли ферзь полю с заданными координатами C++
C++ Определить класс «Шахматная фигура» и производные классы «Ферзь»
C++ Определить, может ли черный ферзь сбить всех белых ферзей за пять ходов
Определить, бьет ли ферзь, находящийся в клетке (xy, y1) клетку (x2, y2) C++

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

Или воспользуйтесь поиском по форуму:
sirserik
3 / 3 / 0
Регистрация: 12.05.2011
Сообщений: 156
16.06.2011, 16:23  [ТС]     ферзь #7
Цитата Сообщение от lamed Посмотреть сообщение
Нет, это не причина ошибки компилятора. Я запускал Вашу программу. Компилировалась нормально. Это логическая ошибка. Вполне легальный оператор "запятая".
у меня mvc++ 2010 там только из за этой ошибки не вводлась вторая переменная
Yandex
Объявления
16.06.2011, 16:23     ферзь
Ответ Создать тему
Опции темы

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