19 / 11 / 9
Регистрация: 11.06.2019
Сообщений: 151
1

Задача с шахматами на c++

01.12.2019, 22:18. Показов 1961. Ответов 2
Метки нет (Все метки)

Задача звучит так: Известно, что на поле 8х8 существует такая расстановка, при которой 8 ферзей не бьют друг друга. Если такая расстановка существует, то вывести на экран NO, иначе YES.
Входные данные:
x y
1 7
2 4
3 2
4 8
5 6
6 1
7 3
8 5

В моем коде, у меня результат выдается 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
#include <iostream>
#include <cmath>
using namespace std;
 
int main() {
    int i, u;
    bool a = false;
    int x[8], y[8];
    for (i = 0; i < 8; i++) {
        cout << "Enter value x: ";
        cin >> x[i];
        cout << endl;
        cout << "Enter value y: ";
        cin >> y[i];
        cout << endl;
    }
    for (i = 0; i < 7; i++) {
        for (u = i + 1; u < 8; u++) {
            if (abs(x[i] - x[u]) == abs(y[i] - y[u]) || x[i] == x[u] || y[i] == x[u]) a = true;
        }
    }
    if (a) cout << "YES" << endl;
    else cout << "NO" << endl;
    system("pause");
 
}
Вот скрин расстановки, если нужно. Буду признателен за помощь))
Задача с шахматами на c++
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.12.2019, 22:18
Ответы с готовыми решениями:

Задача с шахматами
На шахматной доске расставлены три фигуры. Используя стандартные правила шахматной игры, определить...

Помощь с шахматами
Вобщем задали нам задания с помощью условных операторов запрограммировать данные задачи. А так как...

Задача с шахматами
12.Шахівниця представлена у вигляді двовимірного масиву розміру 8*8. Задано натуральні числа v1 і...

Олимпиадная задача по программированию. PascalABC.NET. Задача L. Переключение между окнами
Когда пользователь работает в операционной системе Winux, у него часто запущено несколько...

2
19 / 11 / 9
Регистрация: 11.06.2019
Сообщений: 151
01.12.2019, 22:49  [ТС] 2
Ошибка найдена, в условии перепутаны координаты, в
C++
1
 y[i] == x[u])
должно быть
C++
1
 y[i] == y[u])
, окончательный код:
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
#include <iostream>
#include <cmath>
using namespace std;
 
int main() {
    int i, u;
    bool a = false;
    int x[8], y[8];
    for (i = 0; i < 8; i++) {
        cout << "Enter value x: ";
        cin >> x[i];
        cout << endl;
        cout << "Enter value y: ";
        cin >> y[i];
        cout << endl;
    }
    for (i = 0; i < 7; i++) {
        for (u = i + 1; u < 8; u++) {
            if (abs(x[i] - x[u]) == abs(y[i] - y[u]) || x[i] == x[u] || y[i] == y[u]) a = true;
        }
    }
    if (a) cout << "YES" << endl;
    else cout << "NO" << endl;
    system("pause");
 
}
0
3652 / 2989 / 828
Регистрация: 25.03.2012
Сообщений: 11,021
Записей в блоге: 1
02.12.2019, 01:06 3
Лучший ответ Сообщение было отмечено zytia как решение

Решение

слишком много циклов, в моей программе всего 1
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
#include <iostream>
using namespace std;
int with(const char* msg) {
    cout << msg;
    system("pause");
    return 0;
}
int main() {
    int hor[9] = { 0 }, ver[9] = { 0 }, dia[17] = { 0 }, dib[15] = { 0 };
    for (int i = 0; i < 8; i++) {
        int x, y;
        cout << "Enter value x: ";
        cin >> x;
        cout << endl;
        cout << "Enter value y: ";
        cin >> y;
        cout << endl;
        if (hor[x]) return with("YES");
        hor[x] = 1;
        if (ver[y]) return with("YES");
        ver[y] = 1;
        if (dia[x+y]) return with("YES");
        dia[x + y] = 1;
        if (dib[7 + x - y]) return with("YES");
        dib[7 + x - y] = 1;
    }
    return with("NO");
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.12.2019, 01:06
Помогаю со студенческими работами здесь

Васильев C# Глава 8 задача 2 (Просьба объяснить формулировку(задача внутри)
Текст задачи Написать программу , в которой есть класс с полем, являющимся ссылкой на одномерный...

Задача: В некотором государстве ввели компьютерный паспорт гражданина.(задача)
Доброго времени суток,форумчане. Хотелось бы попросить помощи в решении одной задачи от умных...

Васильев C# Глава 7 задача 8 (Просьба объяснить формулировку(задача внутри)
Текст задачи Напишите программу с классом, у которого есть текстовое поле. Значение текстовому...

Задача на k-тую цифру последовательности, задача на схему Горнера.
Ну, собственно опять прошу помощи... Задача 1: Определить k-тую цифру последовательности...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru