Другие языки программирования и технологии
Помогите пожалуйста, очень нужно....
Вот условие: Поле шахматной доски определяется парой натуральных чисел: первое число - номер вертикали, второе - номер горизонтали (вертикали нумеруются слева направо, горизонтали - снизу вверх). Шахматная доска имеет размер 8х8. Даны натуральные числа i, j, k, l. Определить, можно ли с поля (i,j) одним ходом коня попасть на поле (k,l). Если нет, то выяснить, можно ли это сделать за два хода, если можно, то указать поле, на которое приводит первый ход (конь ходит буквой Г) Решение(1ход) Что дальше делать? Как записать 2 ход? #include <stdio.h> #include <math.h> #include <conio.h> int main() { //Ввод исходных данных unsigned int i, j, k, l; i = j = k = l = 0; printf("i= "); scanf("%d", &i); printf("j= "); scanf("%d", &j); printf("k= "); scanf("%d", &k); printf("l= "); scanf("%d", &l); if (i>0 && i<9 && j>0 && j<9 && k>0 && k<9 && l>0 && l<9) { //Если введенные координаты не выходят за рамки доски if ((k==i+2 && (l==j+1 || l==j-1)) || (k==i-2 && (l==j+1 || l==j-1)) || (k==i+1 && (l==j+2 || l==j-2)) || (k==i-1 && (l==j+2 || l==j-2))) printf("Можно в попасть в клетку %d-%d за 1 ход\n", k, l); else printf("Совершить данное перемещение за 1 ход невозможно!\n"); } else printf("Одна или более координат не принадлежат шахматной доске. Решение задачи невозможно!\n"); getch(); //Возвращает ноль при правильном return 0; //завершении програмы }
Может поможет подаю идею с кодом сама разберешься
х-по горизонтали
у-по вертикали
а-конь по горизонталь
б-конь по вертикали
1-й когда конь доходит за один ход. Смещение по координатам может быть либо на 2 либо на 1 - >
Можно организовать проверку : (прим. |а|-число по модулю)
Если (|а-х| = 1 и |б-у| = 2) или (|а-х| = 2 и |б-у| = 1) то Конь доходит за один ход
2-й конь за два хода здесь получается всевозможные смещения на 2 хода 1:1, 3:3, 1:3, 0:2, 4:2,4:0 и наоборот 1:1, 3:3, 3:1, 2:0, 2:4,0:4
Проверки
Если (|а-х| = 1 и |б-у| = 1) или
(|а-х| = 3 и |б-у| = 3) или
(|а-х| = 1 и |б-у| = 3) или
(|а-х| = 3 и |б-у| = 1) или
(|а-х| = 0 и |б-у| = 2) или
(|а-х| = 2 и |б-у| = 0) или
(|а-х| = 4 и |б-у| = 2) или
(|а-х| = 2 и |б-у| = 4) или
(|а-х| = 4 и |б-у| = 0) или
(|а-х| = 0 и |б-у| = 4) то за 2 хода
х-по горизонтали
у-по вертикали
а-конь по горизонталь
б-конь по вертикали
1-й когда конь доходит за один ход. Смещение по координатам может быть либо на 2 либо на 1 - >
Можно организовать проверку : (прим. |а|-число по модулю)
Если (|а-х| = 1 и |б-у| = 2) или (|а-х| = 2 и |б-у| = 1) то Конь доходит за один ход
2-й конь за два хода здесь получается всевозможные смещения на 2 хода 1:1, 3:3, 1:3, 0:2, 4:2,4:0 и наоборот 1:1, 3:3, 3:1, 2:0, 2:4,0:4
Проверки
Если (|а-х| = 1 и |б-у| = 1) или
(|а-х| = 3 и |б-у| = 3) или
(|а-х| = 1 и |б-у| = 3) или
(|а-х| = 3 и |б-у| = 1) или
(|а-х| = 0 и |б-у| = 2) или
(|а-х| = 2 и |б-у| = 0) или
(|а-х| = 4 и |б-у| = 2) или
(|а-х| = 2 и |б-у| = 4) или
(|а-х| = 4 и |б-у| = 0) или
(|а-х| = 0 и |б-у| = 4) то за 2 хода
Вообще в таких случаях надо информировать о достигнутом уровне. Совершенно непонятно, вы уже проходили массивы иди нет, функции, а то приходится корячиться с ветвлением, а вдруг вам ещё и циклы не давали, то вообще засада! Ну а логика здесь для школы сложная, кто же вам такие задачки-то задаёт?
ну тут, на самом деле, все варианты высчитывать программно нужды нет: ) просто на тетрадке клетчатой нарисуй такую доску. Пусть стартовая позиция коня будет где-нибудь ближе к центру доски. Проставь точки или галочки для всех возможных ходов коня. Затем цветными карандашами (для наглядности) заштрихуй все клеточки для второго хода - для каждой из позиций после первого хода отдельным цветом. Когда закончишь, останется не так много клеток свободных - вот их и надо будет проверять как координаты поля, на которое мы попадаем после второго хода. Не в безусловных координатах, конечно, а в виде (и-1)||(и+1)||(ж-1)||(ж+1) и. т. д
И еще, сразу можно ввести ограничение, что если |и-к| или |ж-л| > 4, то не попадаем, как ни старайся:)
И еще, сразу можно ввести ограничение, что если |и-к| или |ж-л| > 4, то не попадаем, как ни старайся:)
Это у вас такое в школе о_0
Похожие вопросы
- Нужен скрипт, бинд, прога, макрос, хоткей. Что угодно. Помогите, пожалуйста, очень нужно.
- Пожалуйста,помогите решить!Очень нужно!
- «Помогите пожалуйста! Очень надо!! ! Нужно написать на языке Си (именно на СИ) . Заранее СПАСИБО!!!»
- Напишите пожалуйста программу на visual basic 2010(Пожалуйста очень нужно)
- помогите, пожалуйста, очень срочно нужно как отсортировать число 1079011205 методом пузырька ???
- Помогите пожалуйста, очень срочно нужно решить задачу по информатике. Сама не понимаю, есть ли вообще решение.
- Задача в паскале. помогите пожалуйста... очень срочно нужно!
- Программисты, подскажите алгоритм, пожалуйста, очень нужно(Паскаль)!
- Кто может помочь?Нужны комментарии к каждой строчке программы...Помогите пожалуйста! оч нужно!!!
- Вы будете долго смеяться, но помогите пожалуйста! Очень забавная ситуация, но мне нужна помощь.