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

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

Войти
Регистрация
Восстановить пароль
 
farrodey
0 / 0 / 0
Регистрация: 23.01.2014
Сообщений: 35
#1

Определить поля, на которые может пойти белая ладья - C++

23.01.2014, 19:49. Просмотров 435. Ответов 11
Метки нет (Все метки)

Шахматную доску представить в виде квадратного символьного массива размером 8х8. Позиция каждой фигуры определяется парой натуральных числе, каждое из которых не превосходит 8: первое число - номер вертикале(при счете слева направо
), второе - номер горизонтали (при счете снизу вверх). Даны натуральные числа - a,b,c,d, каждое из которых не превосходит 8. Определить поля(отметить их символом +), на которые может пойти белая ладья, расположенная на поле (a,b), не попав при этом под удар черного коня, находящегося на поле (c,d)

Заранее всем, кто откликнулся, ОГРОМНОЕ спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.01.2014, 19:49     Определить поля, на которые может пойти белая ладья
Посмотрите здесь:

Определить, может ли белая фигура пойти на поле C++
Может ли белая фигура пойти на поле (e,f), не попав при этом под удар черной фигуры C++
Определить поля, на которые может пройти белый конь C++
Определить сможет ли белый слон расположенный на поле (a,b),одним ходом пойти на поле (e,f),не попав при этом под удар чёрного коня нах.(c,d) C++
C++ Не может найти конструктор для иниц поля класса
Вывести все возможные поля, на которые может попасть шахматный конь за один прыжок из данной клетки C++
C++ На доске стоят два ферзя. Указать поля, на которые может пойти белый ферзь, чтобы не попасть под удар черного
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,587
Записей в блоге: 12
23.01.2014, 20:21     Определить поля, на которые может пойти белая ладья #2
farrodey, я смотрю вы совсем не хотите ничего сами делать, [вырезано]
farrodey
0 / 0 / 0
Регистрация: 23.01.2014
Сообщений: 35
23.01.2014, 20:28  [ТС]     Определить поля, на которые может пойти белая ладья #3
Van111, нет,вы ошибаетесь...у меня 10 заданий и по ним нужно составить отчет к завтрашнему дню,все какие смог я сделал и решил обратиться за помощью к более знающим людям в этой области
Ev[G]eN
23.01.2014, 20:28
  #4
 Комментарий модератора 
Van111, ознакомьтесь с Правилами форума. Особое внимание обратите на пункт №5.9: "Запрещено отсылать пользователей из тематических разделов в разделы фриланса, а также рекламировать свои услуги или просить/требовать оплату за помощь, кроме разделов для платных услуг."
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,587
Записей в блоге: 12
23.01.2014, 20:36     Определить поля, на которые может пойти белая ладья #5
farrodey, не вижу ваших наработок, щас пришлю код
farrodey
0 / 0 / 0
Регистрация: 23.01.2014
Сообщений: 35
23.01.2014, 20:39  [ТС]     Определить поля, на которые может пойти белая ладья #6
Van111, спасибо, могу скинуть мною написанные программы, если вы не верите словам бедного студента
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,587
Записей в блоге: 12
23.01.2014, 20:50     Определить поля, на которые может пойти белая ладья #7
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
#include <iostream>
using namespace std;
 
int main() {
    const int n = 8;
    char matrix[n][n];
    for(int i = 0; i < n; i++)
        for(int j = 0; j < n; j++)
            matrix[i][j] = '0'; 
    int a = 1,b = 1,c = 2,d = 3;
    a = n - a ;
    a--;b--;c--;d--;
    for(int i = 0; i < n; i++)
        matrix[a][i] ='+';
    for(int i = 0; i < n; i++)
        matrix[i][b] ='+';
 
 
    matrix[a][b] = 'L';
    matrix[c][d] = 'H';
    
    int x,y;
 
    x = c + 2; y = d + 1;if(x >= 0 && x <= n-1 && y >= 0 && y<= n-1) matrix[x][y] = 'X';
    x = c + 2; y = d - 1;if(x >= 0 && x <= n-1 && y >= 0 && y<= n-1) matrix[x][y] = 'X';
    x = c - 2; y = d + 1;if(x >= 0 && x <= n-1 && y >= 0 && y<= n-1) matrix[x][y] = 'X';
    x = c - 2; y = d - 1;if(x >= 0 && x <= n-1 && y >= 0 && y<= n-1) matrix[x][y] = 'X';
    
    x = c + 1; y = d + 2;if(x >= 0 && x <= n-1 && y >= 0 && y<= n-1) matrix[x][y] = 'X';
    x = c + 1; y = d - 2;if(x >= 0 && x <= n-1 && y >= 0 && y<= n-1) matrix[x][y] = 'X';
    x = c - 1; y = d + 2;if(x >= 0 && x <= n-1 && y >= 0 && y<= n-1) matrix[x][y] = 'X';
    x = c - 1; y = d - 2;if(x >= 0 && x <= n-1 && y >= 0 && y<= n-1) matrix[x][y] = 'X';
 
    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < n; j++)
            cout <<matrix[i][j];
        cout <<endl;
    }
    
}
Добавлено через 29 секунд
Цитата Сообщение от Van111 Посмотреть сообщение
x = c + 2; y = d + 1;if(x >= 0 && x <= n-1 && y >= 0 && y<= n-1) matrix[x][y] = 'X';
* * x = c + 2; y = d - 1;if(x >= 0 && x <= n-1 && y >= 0 && y<= n-1) matrix[x][y] = 'X';
* * x = c - 2; y = d + 1;if(x >= 0 && x <= n-1 && y >= 0 && y<= n-1) matrix[x][y] = 'X';
* * x = c - 2; y = d - 1;if(x >= 0 && x <= n-1 && y >= 0 && y<= n-1) matrix[x][y] = 'X';
x = c + 1; y = d + 2;if(x >= 0 && x <= n-1 && y >= 0 && y<= n-1) matrix[x][y] = 'X';
* * x = c + 1; y = d - 2;if(x >= 0 && x <= n-1 && y >= 0 && y<= n-1) matrix[x][y] = 'X';
* * x = c - 1; y = d + 2;if(x >= 0 && x <= n-1 && y >= 0 && y<= n-1) matrix[x][y] = 'X';
* * x = c - 1; y = d - 2;if(x >= 0 && x <= n-1 && y >= 0 && y<= n-1) matrix[x][y] = 'X';
это похожу на быдло код, но умней я сделать не смог
farrodey
0 / 0 / 0
Регистрация: 23.01.2014
Сообщений: 35
23.01.2014, 20:51  [ТС]     Определить поля, на которые может пойти белая ладья #8
Van111, ого,я ожидал что код большой..но не думал что на столько. Спасибо большое,сейчас буду сидеть разбираться в его тонкостях
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,587
Записей в блоге: 12
23.01.2014, 20:51     Определить поля, на которые может пойти белая ладья #9
задача решена с расчётом, что изначально конь не бьёт ладью
farrodey
0 / 0 / 0
Регистрация: 23.01.2014
Сообщений: 35
23.01.2014, 20:51  [ТС]     Определить поля, на которые может пойти белая ладья #10
Van111, да,так и есть. Коню нужно только добраться до заданной точки
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,587
Записей в блоге: 12
23.01.2014, 20:55     Определить поля, на которые может пойти белая ладья #11
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
#include <iostream>
using namespace std;
 
int main() {
    const int n = 8;
    char matrix[n][n];
    for(int i = 0; i < n; i++)
        for(int j = 0; j < n; j++)
            matrix[i][j] = '0'; // поле свободно
    int a = 1,b = 1,c = 2,d = 3;
    a = n - a ; // конвертировали в привычную систему координат
    a--;b--;c--;d--;
    for(int i = 0; i < n; i++)
        matrix[a][i] ='+'; // проставили плюсы по горизонтали
    for(int i = 0; i < n; i++)
        matrix[i][b] ='+'; // проставили плюсы по вертикали
 
 
    matrix[a][b] = 'L'; // ладья
    matrix[c][d] = 'H'; // конь
    
    int x,y;
    // лево - верх низ, право -верх низ 
    //формирование клетки по кторой конь может ударить, 
    x = c + 2; y = d + 1;
    //проверка её координат на выход за границы
    if(x >= 0 && x <= n-1 && y >= 0 && y<= n-1) matrix[x][y] = 'X'; 
 
    x = c + 2; y = d - 1;if(x >= 0 && x <= n-1 && y >= 0 && y<= n-1) matrix[x][y] = 'X';
    x = c - 2; y = d + 1;if(x >= 0 && x <= n-1 && y >= 0 && y<= n-1) matrix[x][y] = 'X';
    x = c - 2; y = d - 1;if(x >= 0 && x <= n-1 && y >= 0 && y<= n-1) matrix[x][y] = 'X';
    // низ - право лево , верх - право лево
    x = c + 1; y = d + 2;if(x >= 0 && x <= n-1 && y >= 0 && y<= n-1) matrix[x][y] = 'X';
    x = c + 1; y = d - 2;if(x >= 0 && x <= n-1 && y >= 0 && y<= n-1) matrix[x][y] = 'X';
    x = c - 1; y = d + 2;if(x >= 0 && x <= n-1 && y >= 0 && y<= n-1) matrix[x][y] = 'X';
    x = c - 1; y = d - 2;if(x >= 0 && x <= n-1 && y >= 0 && y<= n-1) matrix[x][y] = 'X';
 
    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < n; j++)
            cout <<matrix[i][j]; // вывод
        cout <<endl;
    }
    
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.01.2014, 21:11     Определить поля, на которые может пойти белая ладья
Еще ссылки по теме:

C++ Может ли шахматный конь за один ход попасть из одного поля в другое?
Проверить, что ферзь за один ход может перейти с одного поля на другое C++
Определить, может ли конь за один ход перейти с одного поля на другое C++
C++ На шахматной доске стоят черный король и белые ладья и слон (ладья бьет по горизонтали и вертикали, слон – по
C++ Может ли шахматный конь за один ход попасть из одного поля в другое?

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

Или воспользуйтесь поиском по форуму:
farrodey
0 / 0 / 0
Регистрация: 23.01.2014
Сообщений: 35
23.01.2014, 21:11  [ТС]     Определить поля, на которые может пойти белая ладья #12
Van111, огромное спасибо за пояснения
Yandex
Объявления
23.01.2014, 21:11     Определить поля, на которые может пойти белая ладья
Ответ Создать тему
Опции темы

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