0 / 0 / 0
Регистрация: 06.06.2017
Сообщений: 15
1

Сможет ли слон попасть с первой клетки на вторую одним ходом

13.06.2017, 08:31. Показов 5419. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребята, помогите!!! Нужно задачку к экзамену решить, а я вообще не понимаю с чего начать даже!!! Задача: шахматный слон ходит по диагонали. Ввести с клавы 2 разные клетки шахматной доски, и вывести на экран сможет ли слон попасть с первой клетки на вторую одним ходом. Ребята, надеюсь на вас!!!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.06.2017, 08:31
Ответы с готовыми решениями:

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

Может ли ферзь попасть с первой клетки на вторую одним ходом
Доброго времени суток! Условие задачи следующее:Шахматный ферзь ходит по диагонали, горизонтали...

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

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

14
28 / 28 / 4
Регистрация: 07.06.2017
Сообщений: 166
13.06.2017, 09:45 2
Если вкратце. Надо решать систему уравнений: y=x+b и y=-x+b для конкретных координат.
0
185 / 183 / 31
Регистрация: 11.10.2016
Сообщений: 599
13.06.2017, 10:49 3
никаких систем уравнений решать не надо. Шахматную доску можно представить в виде двумерного массива Chess(x, y). Шахматный слон, как мы знаем, ходит по диагонали, то есть, с каждым ходом перемещается на одинаковое количество клеток по вертикали и горизонтали. Поэтому всё, что надо - это получить разницу между текущим положением слона (x1, y1) и новой позицией (x2, y2). Если разница для x и для y одинакова, следовательно, слон может переместится на эту клетку.

Visual Basic
1
2
3
Function CanMove(x1%, y1%, x2%, y2%) as Boolean
     CanMove = (Abs(y2 - y1) = Abs(x2 - x1))
End Function
1
0 / 0 / 0
Регистрация: 06.06.2017
Сообщений: 15
13.06.2017, 10:56  [ТС] 4
Цитата Сообщение от _shark Посмотреть сообщение
никаких систем уравнений решать не надо. Шахматную доску можно представить в виде двумерного массива Chess(x, y). Шахматный слон, как мы знаем, ходит по диагонали, то есть, с каждым ходом перемещается на одинаковое количество клеток по вертикали и горизонтали. Поэтому всё, что надо - это получить разницу между текущим положением слона (x1, y1) и новой позицией (x2, y2). Если разница для x и для y одинакова, следовательно, слон может переместится на эту клетку.
Visual BasicВыделить код
1
2
3
Function CanMove(x1%, y1%, x2%, y2%) as Boolean
* * *CanMove = (Abs(y2 - y1) = Abs(x2 - x1))
End Function
это не через кнопку? А куда inputbox вставить? Хотелось бы конкретики, но и за это спасибо)
0
28 / 28 / 4
Регистрация: 07.06.2017
Сообщений: 166
13.06.2017, 11:23 5
Цитата Сообщение от Надежда_2017 Посмотреть сообщение
это не через кнопку? А куда inputbox вставить? Хотелось бы конкретики, но и за это спасибо)
Вот в кнопку и вставьте 4 инпутбокса.
Затем "в кнопке" вызов функции canmove сделайте с переменными.
Функция возвратит логическое значение (истину - ход слоном возможен, ложь - слон не может так пойти).
0
0 / 0 / 0
Регистрация: 06.06.2017
Сообщений: 15
13.06.2017, 11:56  [ТС] 6
Цитата Сообщение от vice4 Посмотреть сообщение
Вот в кнопку и вставьте 4 инпутбокса.
Затем "в кнопке" вызов функции canmove сделайте с переменными.
Функция возвратит логическое значение (истину - ход слоном возможен, ложь - слон не может так пойти).
Что-то я лошара(( Я чего-то не доганяю и ... не работает кароче
Visual Basic
1
2
3
4
5
6
7
Private Sub Command1_Click()
Dim a As Integer, b As Integer
a = InputBox("Введите местоположение слона")
b = InputBox("Введите местоназначение слона")
Function CanMove(x1%, y1%, x2%, y2%) As Boolean
     CanMove = (Abs(y2 - y1) = Abs(x2 - x1))
End Function
0
28 / 28 / 4
Регистрация: 07.06.2017
Сообщений: 166
13.06.2017, 12:08 7
Лучший ответ Сообщение было отмечено Надежда_2017 как решение

Решение

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub Command1_Click()
    Dim a1 As Integer, b1 As Integer, a2 As Integer, b2 As Integer
    a1 = InputBox("Введите текущее положение слона (X)")
    b1 = InputBox("Введите текущее положение слона (Y)")
    a2 = InputBox(Введите местоназначение слона (X)")
    b2 = InputBox("Введите местоназначение слона (Y)")
    If CanMove(a1, b1, a2, b2) Then MsgBox "Ход возможен" Else MsgBox "Ход невозможен"
End Sub
 
Function CanMove(x1%, y1%, x2%, y2%) As Boolean
    CanMove = (Abs(y2 - y1) = Abs(x2 - x1))
End Function
1
0 / 0 / 0
Регистрация: 06.06.2017
Сообщений: 15
13.06.2017, 12:23  [ТС] 8
Цитата Сообщение от vice4 Посмотреть сообщение
Private Sub Command1_Click()
* * Dim a1 As Integer, b1 As Integer, a2 As Integer, b2 As Integer
* * a1 = InputBox("Введите текущее положение слона (X)")
* * b1 = InputBox("Введите текущее положение слона (Y)")
* * a2 = InputBox(Введите местоназначение слона (X)")
* *b2 = InputBox("Введите местоназначение слона (Y)")
* *If CanMove(a1, b1, a2, b2) Then MsgBox "Ход возможен" Else MsgBox "Ход невозможен"
End Sub
Function CanMove(x1%, y1%, x2%, y2%) As Boolean
* *CanMove = (Abs(y2 - y1) = Abs(x2 - x1))
End Function
Спасибочки большое!!! А если двигаться не по диагонали, а по горизонтали и вертикали, какая формула должна быть, не подскажите?
0
28 / 28 / 4
Регистрация: 07.06.2017
Сообщений: 166
13.06.2017, 12:29 9
Это для ладьи что ли?

Visual Basic
1
2
3
Function CanMoveTura(x1%, y1%, x2%, y2%) As Boolean
CanMoveTura = (x1 =x2 OR y1=y2)
End Function
1
198 / 23 / 12
Регистрация: 07.02.2014
Сообщений: 221
13.06.2017, 12:33 10
Если вводить координаты слона так, как принято в шахматной нотации - т.е. типа f3, h8, c5 и т.д., то будет вот такая программа:
PureBasic
1
2
3
4
5
6
7
8
9
10
Sub Slon()
alf = "abcdefgh"
a = InputBox("Начальная клетка (например, с5)")
x1 = InStr(alf, Mid(a, 1, 1))
y1 = Mid(a, 2)
a = InputBox("Конечная клетка")
x2 = InStr(alf, Mid(a, 1, 1))
y2 = Mid(a, 2)
If Abs(x2 - x1) = Abs(y2 - y1) Then MsgBox ("Да, сможет") Else MsgBox ("Нет, не сможет")
End Sub
0
28 / 28 / 4
Регистрация: 07.06.2017
Сообщений: 166
13.06.2017, 12:38 11
Цитата Сообщение от AlexDeSex Посмотреть сообщение
x1 = InStr(alf, Mid(a, 1, 1))
А так не проще?

Visual Basic
1
2
x1 = Left(a,1)
y1=Right(a,1)
1
198 / 23 / 12
Регистрация: 07.02.2014
Сообщений: 221
13.06.2017, 12:39 12
vice4, Немного не так, у нас же первая координата в виде буквы идет

Хотя соглашусь, что вместо Mid использовать Left, Right лучше будет.
0
28 / 28 / 4
Регистрация: 07.06.2017
Сообщений: 166
13.06.2017, 12:47 13
Цитата Сообщение от AlexDeSex Посмотреть сообщение
у нас же первая координата в виде буквы идет
Согласен.

Visual Basic
1
2
x1 = InStr(alf, Left(a, 1))
y1 = Right(a, 1)
1
198 / 23 / 12
Регистрация: 07.02.2014
Сообщений: 221
13.06.2017, 12:58 14
vice4, да, так красивее, спасибо!
0
0 / 0 / 0
Регистрация: 06.06.2017
Сообщений: 15
13.06.2017, 16:23  [ТС] 15
Цитата Сообщение от AlexDeSex Посмотреть сообщение
Если вводить координаты слона так, как принято в шахматной нотации - т.е. типа f3, h8, c5 и т.д., то будет вот такая программа:
Просто добавила это - Введите текущее положение слона, если A=1;B=2;C=3; D=4;E=5;F=6;G=7;H=8 (X)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.06.2017, 16:23
Помогаю со студенческими работами здесь

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

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

Определить, может ли ферзь попасть с первой клетки на вторую одним ходом
Всем привет Начал изучать питон Засел на задачке про ферзя, условие такие: "Шахматный ферзь...

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


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

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

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