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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.83
Nata555
3 / 3 / 0
Регистрация: 23.01.2012
Сообщений: 17
#1

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

23.01.2012, 19:34. Просмотров 1563. Ответов 15
Метки нет (Все метки)

ребята помогите пожалуйста!я в с++ вообще не бум-бум! у меня 2-е задачи с шахматами!а я даже играть не умею в них!помогите пожалуйста!я буду вам очень признательна!

1.Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит восьми: первое число -номер вертикали( при счёте слева направо), второе- номер горизонтали (при счёте снизу вверх). Даны натуральные числа- a,b,c,d,e,f, каждое из которых не превосходит восьми.определить, сможет ли белый слон ,расположенный на поле (a,b),одним ходом пойти на поле (e,f),не попав при этом под удар чёрного коня находящегося на поле(c,d).
ХОТЯ БЫ ЭТУ ПОМОГИТЕ ПОЖАЛУЙСТА!

А вот вторая...ну это вообще сложная...если кто сможет то помогите и с ней.
2.Шахматную доску представить в виде квадратного символьного массива размером 8*8. Позиция каждой шахматной фигуры определяется парой натуральных чисел , каждое из которых не превосходит восьми :первое число -номер вертикали( при счёте слева направо), второе- номер горизонтали (при счёте снизу вверх). Даны натуральные числа- a,b,c,d, каждое из которых не превосходит восьми.определить поля (отметить их символом "+"), на которые может пойти белая ладья, расположенная на поле (a,b), не попав при этом под удар чёрного слона, находившегося на поле(c,d).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.01.2012, 19:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Определить сможет ли белый слон расположенный на поле (a,b),одним ходом пойти на поле (e,f),не попав при этом под удар чёрного коня нах.(c,d) (C++):

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

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

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

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

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

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

15
ШКІПЕР
94 / 94 / 7
Регистрация: 14.04.2010
Сообщений: 280
Записей в блоге: 9
Завершенные тесты: 1
23.01.2012, 20:53 #2
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
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
bool valid(const int a)
{
    if (
        a<=8 && a>=1
        )
      return true;
    else return false;
}
 
int main()
{
    int a[6]; /*здесь храним данные о расположении фигур*/
    for (int i=0; i<=5; ++i)
    {
        scanf("%d", &a[i]);     
        if (!valid(a[i]))
        {
            puts("Error! Try again!");
            --i;
        }
    }   /*считали, проверили*/
            if ( 
                abs( a[4] - a[0] ) + abs( a[5] - a[1] ) == 3    //      
                &&                                              //Работает по принцыпу "опа - и все готово"
                abs( a[4] - a[2] ) + abs( a[5] - a[3] ) != 3    //Идет проверка на возможность хода и есть ли данный ход общий для обох фигур.
            )                                                   //
                puts("YES");
            else 
                puts("NO");
 
    return EXIT_SUCCESS;
}
Немножко вариаций и первая задача готова
1
Nata555
3 / 3 / 0
Регистрация: 23.01.2012
Сообщений: 17
23.01.2012, 21:03  [ТС] #3
спасибооо огромное!!!!!!только вот экран быстро исчезает после ввода значений=(....как сделать чтоб задерживался экран? и какие значения можно ввести чтоб было да и нет? а то я ведь не умею играть
0
ШКІПЕР
94 / 94 / 7
Регистрация: 14.04.2010
Сообщений: 280
Записей в блоге: 9
Завершенные тесты: 1
23.01.2012, 21:15 #4
Цитата Сообщение от Nata555 Посмотреть сообщение
как сделать чтоб задерживался экран?
C++
1
2
3
4
5
6
/*****/
char ch;
scanf ("%c", &ch);
 
return EXIT_SUCCESS;
}
Примерно так или еще так:

C++
1
2
3
getchar();
return EXIT_SUCCESS;
}
Или так:

C++
1
2
3
4
5
6
7
#include <conio.h>
 
/*************/
 
_getch();
return EXIT_SUCCESS;
}


Цитата Сообщение от Nata555 Посмотреть сообщение
и какие значения можно ввести чтоб было да и нет?
Например:
2 1
7 7
3 3


и

2 1
5 2
3 3
1
Nata555
3 / 3 / 0
Регистрация: 23.01.2012
Сообщений: 17
23.01.2012, 22:20  [ТС] #5
ШКІПЕР- я тебя просто обожаю!!! спасибо тебе огромное!
0
ШКІПЕР
94 / 94 / 7
Регистрация: 14.04.2010
Сообщений: 280
Записей в блоге: 9
Завершенные тесты: 1
23.01.2012, 22:33 #6
Nata555, в таком случае вторая задача:

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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
 
bool valid(const int a)
{
    if (
        a<=8 && a>=1
        )
      return true;
    else return false;
}
 
bool elephant (const int x, const int y, const int a, const int b)
{
    if (abs(x-a) == abs(y-b))
        return true;
    else
        return false;
}
 
bool search_main(const int a, const int b, const int x, const int y)
{
    if (a == x || b==y)
        return true;
    else
        return false;
}
 
 
bool with_elephant(const int a0, const int a1, const int a2, const int a3, const int x, const int y)
{
    if (a0 == a2)
    {
        if (a2 - a3 > 0 && x < a3)
            return false;
        if (a2 - a3 < 0 && x > a3)
            return false;
    }
    else
 
    if (a1 == a3)
    {
        if (a0 - a2 > 0 && y < a2)
            return false;
        if (a0 - a2 < 0 && y > a2)
            return false;
    }
    else
    return true;
}
 
int main()
{
    int a[4]; /*здесь храним данные о расположении фигур*/
    for (int i=0; i<=3; ++i)
    {
        scanf("%d", &a[i]);     
        if (!valid(a[i]))
        {
            puts("Error! Try again!");
            --i;
        }
    }
 
 
    for (int x=8; x>=1; --x){
        for (int y=1; y<=8; ++y)
        {
            if (            
            !elephant(x, y, a[2], a[3])
            &&  
            search_main(a[0],a[1],x,y)
            &&
            with_elephant(a[0], a[1], a[2], a[3], x, y)
            )
            printf(" + ");
            else
                printf(" - ");
        }
        puts("\n");
    }
    _getch();
    return EXIT_SUCCESS;
}
1
Nata555
3 / 3 / 0
Регистрация: 23.01.2012
Сообщений: 17
23.01.2012, 22:39  [ТС] #7
Ты мой ангел-спаситель!!!! ОГРОМНЕЙШЕЕ СПАСИБО ТЕБЕ!я так рада что ты мне помог!!!!

Добавлено через 3 минуты
последний вопроскакие значения можно ввести чтоб было да и нет во второй задаче?
1
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
23.01.2012, 22:40 #8
Цитата Сообщение от Nata555 Посмотреть сообщение
только вот экран быстро исчезает после ввода значений=(...
http://www.cyberforum.ru/cpp-beginners/thread10807.html
0
ШКІПЕР
94 / 94 / 7
Регистрация: 14.04.2010
Сообщений: 280
Записей в блоге: 9
Завершенные тесты: 1
23.01.2012, 22:42 #9
Nata555, да нет за что
Вторую задачу только что поправил, вообщем смотри. Если есть вопросы - задавай.

Рад помочь!

последний вопроскакие значения можно ввести чтоб было да и нет во второй задаче?
Любые! ;-) В смысле не очень любые - те, что под условие попадают.
1
Nata555
3 / 3 / 0
Регистрация: 23.01.2012
Сообщений: 17
23.01.2012, 22:50  [ТС] #10
прости что я немного туплю...а какие условия???просто я вообще в шахматах не разбираюсь мне хоть любые примеры которые подходят под условиячтоб я тебя больше не беспокоилаещё раз огромное спасибо
0
ШКІПЕР
94 / 94 / 7
Регистрация: 14.04.2010
Сообщений: 280
Записей в блоге: 9
Завершенные тесты: 1
23.01.2012, 22:55 #11
Nata555, на самом деле все просто: lichess.org, рекомендую.
Во второй задачи: первое число - это как буква, например А1 на доске будет 1 1 в примере.

Примеры:
3 3
5 4


Нет никаких ограничений - можно вводить все числа от 1 до 8, но только координаты не должны совпадать (этого не предусмотрел, так как в условии вроде указано, что координаты разные у всех...).
1
Nata555
3 / 3 / 0
Регистрация: 23.01.2012
Сообщений: 17
23.01.2012, 22:59  [ТС] #12
спасибо огромное!пошутил ты на счёт шахматспасибо за совет ,может когда-нибудь научусь..но это мало вероятно
0
ШКІПЕР
94 / 94 / 7
Регистрация: 14.04.2010
Сообщений: 280
Записей в блоге: 9
Завершенные тесты: 1
23.01.2012, 23:09 #13
Nata555, весьма рад помочь Код, правда, можно еще упростить убрав в with_elephant ненужные аргументы и передавая туда ссылку на масив... Если есть желание - поправь...

P.S. И не забывай, что вторая задача слегка изменена.
1
Nata555
3 / 3 / 0
Регистрация: 23.01.2012
Сообщений: 17
23.01.2012, 23:17  [ТС] #14
неее=)вдруг что-нибудь не то уберуспасибо ещё раз!!!
0
ШКІПЕР
94 / 94 / 7
Регистрация: 14.04.2010
Сообщений: 280
Записей в блоге: 9
Завершенные тесты: 1
23.01.2012, 23:33 #15
Цитата Сообщение от Nata555 Посмотреть сообщение
вдруг что-нибудь не то уберу
Как же кодить собралась ? Всегда нужно пробовать - известно, что учатся на своих ошибках, во всяком случае есть оригинал в теме (если что-то пойдет не так).

P.S. На счет шахмат - это не шутка, есть желание - бросай в ЛС ссылку на партию, помогу и это освоить ;-)
1
23.01.2012, 23:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.01.2012, 23:33
Привет! Вот еще темы с ответами:

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

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

Шахматы: может ли белая фигура пойти на поле ef, не попав при этом под удар черной фигуры? - Pascal
Поле шахматной доски определяется парой чисел, каждое из которых не превосходит 8: 1е число - номер вертикали(слева на право) 2е - номер...

Определить, сможет ли шахматный слон попасть с одной клетки на другую одним ходом - Visual Basic
В общем,задача звучит так: шахматный слон ходит по диагонали. Ввести с клавиатуры 2 разные клетки шахматной доски, и вывести на экран...


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

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

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