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

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

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

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

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

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

Заранее всем, кто откликнулся, ОГРОМНОЕ спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.01.2014, 19:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Определить поля, на которые может пойти белая ладья (C++):

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

Определить может ли белая фигура пойти на указанное поле - C++
Даны натуральные числа a,b,c,d,e,f каждое из которых не превосходит восьми.На поле(a,b) шахматной доски расположена белая фигура, на поле...

Определить поля(отметить символом +), на которые может пойти первая фигура, не попав под удар второй фигуры - C++
Шахматную доску будем представлять в виде квадратного символьного массива размерность 8 на 8. Дано натуральные числа v1 и g1, которые...

На доске стоят два ферзя. Указать поля, на которые может пойти белый ферзь, чтобы не попасть под удар черного - C++
ПОМОГИТЕ ПОЖАЛУЙСТА!!!!! :wall: Поле шахматной доски задается парой натуральных чисел: первое указывает номер вертикали при счете...

Может ли белая фигура пойти на поле (e,f), не попав при этом под удар черной фигуры - C++
Дураку уж помогите(((( 1. Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит восьми: первое...

Определить поля, на которые может пройти белый конь - C++
Даны натуральные числа a,b,c,d, каждое из которых не превосходит восьми. Определить поля(отметить их символом +), на кот-е может пройти...

11
Van111
209 / 188 / 4
Регистрация: 03.08.2011
Сообщений: 2,597
Записей в блоге: 12
23.01.2014, 20:21 #2
farrodey, я смотрю вы совсем не хотите ничего сами делать, [вырезано]
0
farrodey
0 / 0 / 0
Регистрация: 23.01.2014
Сообщений: 35
23.01.2014, 20:28  [ТС] #3
Van111, нет,вы ошибаетесь...у меня 10 заданий и по ним нужно составить отчет к завтрашнему дню,все какие смог я сделал и решил обратиться за помощью к более знающим людям в этой области
0
Ev[G]eN
23.01.2014, 20:28
  #4
 Комментарий модератора 
Van111, ознакомьтесь с Правилами форума. Особое внимание обратите на пункт №5.9: "Запрещено отсылать пользователей из тематических разделов в разделы фриланса, а также рекламировать свои услуги или просить/требовать оплату за помощь, кроме разделов для платных услуг."
1
Van111
209 / 188 / 4
Регистрация: 03.08.2011
Сообщений: 2,597
Записей в блоге: 12
23.01.2014, 20:36 #5
farrodey, не вижу ваших наработок, щас пришлю код
0
farrodey
0 / 0 / 0
Регистрация: 23.01.2014
Сообщений: 35
23.01.2014, 20:39  [ТС] #6
Van111, спасибо, могу скинуть мною написанные программы, если вы не верите словам бедного студента
0
Van111
209 / 188 / 4
Регистрация: 03.08.2011
Сообщений: 2,597
Записей в блоге: 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';
это похожу на быдло код, но умней я сделать не смог
2
farrodey
0 / 0 / 0
Регистрация: 23.01.2014
Сообщений: 35
23.01.2014, 20:51  [ТС] #8
Van111, ого,я ожидал что код большой..но не думал что на столько. Спасибо большое,сейчас буду сидеть разбираться в его тонкостях
0
Van111
209 / 188 / 4
Регистрация: 03.08.2011
Сообщений: 2,597
Записей в блоге: 12
23.01.2014, 20:51 #9
задача решена с расчётом, что изначально конь не бьёт ладью
0
farrodey
0 / 0 / 0
Регистрация: 23.01.2014
Сообщений: 35
23.01.2014, 20:51  [ТС] #10
Van111, да,так и есть. Коню нужно только добраться до заданной точки
0
Van111
209 / 188 / 4
Регистрация: 03.08.2011
Сообщений: 2,597
Записей в блоге: 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;
    }
    
}
1
farrodey
0 / 0 / 0
Регистрация: 23.01.2014
Сообщений: 35
23.01.2014, 21:11  [ТС] #12
Van111, огромное спасибо за пояснения
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.01.2014, 21:11
Привет! Вот еще темы с ответами:

Определить поля в которые может попасть конь за n ходов из указанной позиции - C++
помогите, пожалуйста!!! на шахматной доске определить поля в которые может попасть конь за n ходов из указанной позиции. я сделала пока...

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

На шахматной доске определить поля, в которые может попасть конь за n ходов из указанной позиции (рекурсия) - C++
На шахматной доске определить поля, в которые может попасть конь за n ходов из указанной позиции.Размер шахматной доски также вводится. ...

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


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

Или воспользуйтесь поиском по форуму:
12
Yandex
Объявления
23.01.2014, 21:11
Ответ Создать тему
Опции темы

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