Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/30: Рейтинг темы: голосов - 30, средняя оценка - 4.97
 Аватар для Kill100
434 / 299 / 82
Регистрация: 11.12.2010
Сообщений: 1,209

Определить сможет ли белый слон одним ходом пройти на поле

12.12.2010, 23:19. Показов 6251. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Поле шахматной доски определяется парой натуральных целых чисел, каждое из которых не превосходит восьми:
Первое число номер вертикали при счете слево на право
Второе номер горизонтали при счете с низу в верх
Даны натуральные числа - a, b, c, d, e, f, каждое из которых не превосходит восьми.
Определить сможет ли:
Белый слон (a, b) ОДНИМ ходом пройти на поле (e, f)
Не попав при этом под удар Чёрной ладьи (c, d)

В инете видел решение подобной программы но методами которые мы не проходили и проходить не будем (декан нас быстрее к С# всех гонит)

ТО что я сам пока надумал исходный код
Больше нечего да же чисто теоретически не придумывается...
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
#include "iostream.h"
 
int main()
{
   int**pole,q,w;
    eeee:cout<<"Введите размер поля от 1 до 8 \n";
    cin>>q>>w;
    if ((q<1)||(q>8) || (w<1)||(w>8)) goto eeee; // если не удовлетворяет суловию
    // что число не больше 8 то запрашиваем координты заново
    // если не удовлетвояет условию чот больше 1 то заново так как поле в 1 клетку слишком мало 
    // для 2х фигур. 
    pole=new int*[q]; //создаём массив q на w
         for (int i=0; i<q;i++){
            pole[i]=new int [w];};
    eee:cout<<"Введите координаты Слона (a, b) Ладьи (c, d) И координаты конечной точки слона (e, f) \n";
    int a, b, c, d, e, f;
    cin>> a >> b >> c >> d >> e >> f;
    
    if (a>8||b>8||c>8||d>8||e>8||f>8) goto eee;
        if ((a==c)&&(b==d)){
                             cout<<"фигуры не могут распологаться на 1 клетке\n"; 
                             goto eee ;
                             };
           if((a=e)&&(b==f))cout<<"Слон не совершает перемещения недопустимый ход \n";
              
    
    cout<<" \n";
    system("pause"); 
return 0;    
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.12.2010, 23:19
Ответы с готовыми решениями:

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

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

Выяснить, можно ли с заданного поля одним ходом слона попасть на другое заданное поле
Здравствуйте помогите пожалуйста, как это можно сделать за два хода Поле шахматной доски определяется парой натуральных чисел, каждое из...

12
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
13.12.2010, 00:27
В смысле, слон не должен при движении пересечь поле, которое может побить ладья? Или он не должен закончить ход на поле, которое может побить ладья?
В любом случае, надо лишь проверить, что ни одна из координат не совпадает с соответствующей координатой ладьи. В первом случае слон неправ, если (((c>a) && (c<e)) || ((c<a) && (c>e))) || (((d>b) && (d<f)) || ((d<b) && (d>f))), во втором случае нужно проверить только его финальную точку, слон прав, если ((с!=e) && (d!=f))
0
101 / 101 / 27
Регистрация: 10.09.2010
Сообщений: 267
13.12.2010, 00:46
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
#include <iostream>
using namespace std;
bool PutElephant(int x,int y)//Можно ли поставить слона
{
    if((x+y)%2==1) return true;
    else return false;
}
bool MoveElephant(int start_x,int start_y,int finish_x,int finish_y)//Можно ли переместить слона
{
    if ((start_x-start_y)==(finish_x-finish_y))
        return true;
    else return false;
}
bool MoveCastle(int start_x,int start_y,int finish_x,int finish_y)//Можно ли переместить ладью
{
    if ((start_x==finish_x)||(start_y==finish_y))
        return true;
    else return false;
}
int main()
{
    int a,b,c,d,e,f;
    cout << "a = "; cin >>a;
    cout << "b = "; cin >>b;
    cout << "c = "; cin >>c;
    cout << "d = "; cin >>d;
    cout << "e = "; cin >>e;
    cout << "f = "; cin >>f;
    if(PutElephant(a,b)&&MoveElephant(a,b,e,f)&&!MoveCastle(c,d,e,f)&&!(a==c&&b==d))
        cout << "Yes" << endl;
    else cout << "No"<< endl;
    cin.get();
    cin.get();
}
Как то так))
Я специально разбил на функции чтобы был понятнее!
+ условие мы не можем поставить слона на поле где стоит ладья!

Добавлено через 13 минут
Не когда не пользуйся этой командой!!!
C++
1
goto
1
 Аватар для Kill100
434 / 299 / 82
Регистрация: 11.12.2010
Сообщений: 1,209
13.12.2010, 00:57  [ТС]
Цитата Сообщение от lemegeton Посмотреть сообщение
В смысле, слон не должен при движении пересечь поле, которое может побить ладья? Или он не должен закончить ход на поле, которое может побить ладья?
В любом случае, надо лишь проверить, что ни одна из координат не совпадает с соответствующей координатой ладьи. В первом случае слон неправ, если (((c>a) && (c<e)) || ((c<a) && (c>e))) || (((d>b) && (d<f)) || ((d<b) && (d>f))), во втором случае нужно проверить только его финальную точку, слон прав, если ((с!=e) && (d!=f))
Как я понял если например слон прошел и встал на клетку (e, f) то надо проверить встанет ли туда за 1 ход лодья.
и если да то слон не может пойти на эту клетку
Цитата Сообщение от Overmind024
Добавлено через 2 минуты
Добавлено через 13 минут
Не когда не пользуйся этой командой!!!
C++
1
goto
Да она туда оч идет. И зачем её придумывали если нельзя пользоваться.
Тут она логику программы не портит в 2х строчках испортить нельзя.
А больше чем на расстоянии 4х строчек я её не юзаю.

Добавлено через 7 минут
как я понял если первую координату сложить со второй и число будет четное то поставить можно. а откуда такое условие. (PS в шахматы не когда не играл)
а
C++
1
((start_x-start_y)==(finish_x-finish_y))
это проверяет если из координаты (x-y) начала вычесть координаты конца (x1-y1) а почему вычитается из x у?
Большое спасибо за решение.
Но хотелось бы немного математических пояснений. На будущие что бы я знал...
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
13.12.2010, 01:00
Цитата Сообщение от Kill100 Посмотреть сообщение
Как я понял если например слон прошел и встал на клетку (e, f) то надо проверить встанет ли туда за 1 ход лодья.
и если да то слон не может пойти на эту клетку
Тогда тебе надо только проверить, что ни одно измерение финальной клетки слона не совпадает с измерением ладьи (если слон не бьет ладью и на доске только две фигуры).
C++
1
if ((с!=e) && (d!=f)) { /* слон может идти */ }
Цитата Сообщение от Kill100 Посмотреть сообщение
Да она туда оч идет. И зачем её придумывали если нельзя пользоваться.
Для обратной совместимости.
0
Day
 Аватар для Day
1180 / 990 / 83
Регистрация: 29.10.2009
Сообщений: 1,385
13.12.2010, 01:04
Цитата Сообщение от Overmind024 Посмотреть сообщение
Не когда не пользуйся этой командой!!!
А мне можно?
0
 Аватар для Kill100
434 / 299 / 82
Регистрация: 11.12.2010
Сообщений: 1,209
13.12.2010, 01:09  [ТС]
Цитата Сообщение от lemegeton Посмотреть сообщение
Тогда тебе надо только проверить, что ни одно измерение финальной клетки слона не совпадает с измерением ладьи (если слон не бьет ладью и на доске только две фигуры).
C++
1
if ((с!=e) && (d!=f)) { /* слон может идти */ }
ну ведь если с=e и d=f то слон просто срубит ладью...А если не равно то встать то он встать может но ври следующем ходе (то есть лодьи) лодья может его срубить следовательно ставить нельзя (В инете вычитал что лодья ходит по прямой а слон ( ходит по диагоналям. Слон, который может передвигатся по полям черного цвета, называется чернопольным(белые поля ему недоступны).Слон, который может передвигатся по полям белого цвета, называется белопольным(черные поля ему недоступны).)
ps сам не разу не играл так что...
0
Day
 Аватар для Day
1180 / 990 / 83
Регистрация: 29.10.2009
Сообщений: 1,385
13.12.2010, 01:09
Но конечно, я поклянусь на библии, что не буду делать из программы "спаггети"
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
13.12.2010, 01:34
Цитата Сообщение от Kill100 Посмотреть сообщение
В инете вычитал что лодья ходит по прямой а слон ( ходит по диагоналям.
Ах вот где собака порылась...
Цитата Сообщение от Day Посмотреть сообщение
А мне можно?
Цитата Сообщение от Day Посмотреть сообщение
Но конечно, я поклянусь на библии, что не буду делать из программы "спаггети"
Интересный вопрос. IMHO, с разрешения родителей, начальства, жены и детей, в письменном виде в двух экземплярах и нотариально заверенной копией... Пуркуа бы и не па?

Добавлено через 1 минуту
Только чтоб потом не спрашивал, почему вот такое собирается без ошибок:
Code
1
2
3
4
5
int main()
{
     https://www.cyberforum.ru/
     return 0;
}
1
Day
 Аватар для Day
1180 / 990 / 83
Регистрация: 29.10.2009
Сообщений: 1,385
13.12.2010, 01:52
Цитата Сообщение от lemegeton Посмотреть сообщение
Code
1
2
3
4
5
int main()
{
     https://www.cyberforum.ru/
     return 0;
}
А че? Error-ов нету, но Warring может проклюнуться(неиспользованная метка)
Просто иногда во внутренних циклах обнаруживается невозможность дальнейшей обработки, и тут самое время сказать "goto ..." А просто return - низзя, надоть еще память ослобонить. Конечно, существуют еще всякие прибамбассы типа "finaly", но это ж то же goto, только еще гоэтушней.
Но я не собирался этот симпатичный шахматный топик превращать в обсуждение этой старинной и тупиковой темы.
Играем дальше!
0
 Аватар для Kill100
434 / 299 / 82
Регистрация: 11.12.2010
Сообщений: 1,209
13.12.2010, 16:23  [ТС]
Overmind024,
Сей час поработал с кодом что то не нашёл не 1 такой 6терки чисел которые бы давали положительный результат... Да и 100% как математически это считается не догнал...
0
101 / 101 / 27
Регистрация: 10.09.2010
Сообщений: 267
13.12.2010, 19:58
такс)
во первых нельзя былово слона поставить на черное поле)))
у белого поля есть свойство суммы x+y координаты не четное отсюда и выплывает условие
C++
1
if((x+y)%2==1)
во вторых
C++
1
((start_x-start_y)==(finish_x-finish_y))
это условие на то что два поля находятся на одной диагонали(у каждой диагонали x-y константа).
в третьих
C++
1
goto
-это как яблоко в истории про Адама и Еву. Если ты собираешься стать хорошим программистом то забудь про эту команду!
в условии написано
Белый слон (a, b) ОДНИМ ходом пройти на поле (e, f)
Не попав при этом под удар Чёрной ладьи (c, d)
здесь ничего про правило битого поля не сказано!!
и еще 6 которая удовлетворяет условию 1 2 6 5 5 6!!
1
 Аватар для Kill100
434 / 299 / 82
Регистрация: 11.12.2010
Сообщений: 1,209
13.12.2010, 20:47  [ТС]
спасибо теперь прояснилась ситуация.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.12.2010, 20:47
Помогаю со студенческими работами здесь

Выяснить, можно ли с поля с координатами (k, l) одним ходом слона попасть на поле с координатами (m, n)
Долго думала над задачей, но так и не пришла к выводу, как можно это адекватно решить. Спасибо заранее за помощь Поле шахматной доски...

Выяснить, можно ли с поля с координатами (k, l) одним ходом ферзя попасть на поле с координатами (m, n)
Поле шахматной доски определяется парой натуральных чисел, первое число – номер вертикали, второе – номер горизонтали. Даны натуральные...

Определить может ли конь попасть с первой клетки на вторую одним ходом?
Добрый день. Задача: Шахматный конь ходит буквой “Г” — на две клетки по вертикали в любом направлении и на одну клетку по горизонтали,...

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

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


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru