Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 03.11.2022
Сообщений: 140

На шахматной доске определите поля, в которые может попасть конь за n ходов из указанной позиции

16.03.2023, 16:43. Показов 2744. Ответов 22

Студворк — интернет-сервис помощи студентам
Задание: На шахматной доске определите поля, в которые может попасть конь за n ходов из указанной позиции.
У меня почему-то выходит неправильно, если я считаю сама на шахматной доске.
Мне нужно распечатать с х и у , а также как на доске это выглядит. Шаги все отражать, включая последний n шаг.
Подскажите, в чем ошибка, уже кучу литературы прочитала, как надо описывать, себе пометила комментарии (может я неправильно пометила комментарии, подскажите). Еще если неверно введен шаг или еще что-то у меня почему-то не работает while, как это сделать. Всем буду благодарна за помощь, уже давно бьюсь с этой программой.

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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#include <iostream>
#include <math.h>
using namespace std;
 
bool prov(int x, int y, int razm) //проверяем правильную позицию квадратов коня
{
return ((x >= 0) && (y >= 0) && (x < razm) && (y < razm));
}
 
void func(int** doska, int kon_x, int kon_y, int razm, int step)
{
// Условие выхода из рекурсии
if (step == 0)
{
doska[kon_y][kon_x] = 1;
return;// Не нужно возвращать значение функции, так как меняется только состояние доски, а доска одна
}
 
// Количество возможных ходов 8
int new_x[8] = { -2, -2, -1, -1, 1, 1, 2, 2 };
int new_y[8] = { -1, 1, -2, 2, -2, 2, -1, 1 };
 
// А теперь их перебираем
for (int i = 0; i < 8; i++)
{
int x = kon_x + new_x[i];
int y = kon_y + new_y[i];
 
// Если новая позиция корректная
if (prov(x, y, razm))
{
//doska[y][x] = 1, то делаем рекурсивный вызов
func(doska, x, y, razm, step - 1);
}
}
}
int main()
{
setlocale(LC_ALL, "Russian");
int n, kon_x, kon_y, step;
 
cout << "Введите размер поля: " ;
cin >> n;
while (n <= 0)
{
cin.clear();
while (cin.get() != '\n');
cout << "Неверно. Введите размер поля снова: ";
}
int** doska = new int* [n];
for (int i = 0; i < n; i++)
doska[i] = new int[n];
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
doska[i][j] = 0;
}
cout << "Введите позицию лошади:" << endl;
cout << "номер строки x = ";
cin >> kon_x;
cout << "номер столбца y = ";
cin >> kon_y;
while ((kon_x <= 0) || (kon_y <= 0))
{
cin.clear();
while (cin.get() != '\n');
cout << "Неверно. Введите положение лошади снова: ";
}
// Уменьшается на единицу каждый индекс, так как пользователь считает с 1, а я с 0
kon_x--;
kon_y--;
cout << "Введите количество шагов: ";
cin >> step;
while (step <= 0)
{
cin.clear();
while (cin.get() != '\n');
cout << "Неверно. Введите количество шагов снова: ";
}
 
func(doska, kon_x, kon_y, n, step); // печать с х и у
for (int i = 0; i < n; i++)
{
cout << " " << endl;
for (int j = 0; j < n; j++)
{
if (doska[i][j] == 1)
cout << "x = " << j + 1 << " " << "y = " << i + 1 << endl;
 
}
cout << endl;
}
 
func(doska, kon_x, kon_y, n, step); // печать как на шахматной доске
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
cout << doska[i][j] << " ";
}
cout << endl;
}
 
system("pause");
return 0;
}
Добавлено через 1 час 29 минут
Например выбираю размер поля 5
Х=3, У=5
Шагов n 5

У меня, если сама пробую на бумаге номер получается например х=7 и у=7
В этой программе такого ответа не выходит, а вывод в виде шахматной доски выходит
01010
10101
01010
10101
01010

Как исправить
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.03.2023, 16:43
Ответы с готовыми решениями:

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

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

На шахматной доске определите поля, в которые может попасть конь за n ходов из указанной позиции
Задание: На шахматной доске определите поля, в которые может попасть конь за n ходов из указанной позиции. У меня почему-то выходит...

22
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
18.03.2023, 13:14
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от alexu_007 Посмотреть сообщение
Через 7 ходов конь может оказаться в любой клетке
Цитата Сообщение от SmallEvil Посмотреть сообщение
Не может в любой, такая вот попа у коня. )
Видимо, имелось в виду "не более чем за 7 ходов" ибо ровно за 7 ходов конь окажется с клетке с противоположным цветом.
0
Заблокирован
18.03.2023, 14:17
именно так, x=3, y=4,
при n=6 - 31 финальная клетка,а при n=7 - 32
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
18.03.2023, 14:25
ТС такой активный, ни остановить ни остудить, уже на трехмерной доске коней гонит.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.03.2023, 14:25

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

Найти количество шагов, которые может сделать конь на шахматной доске для прохождения всего поля
не получается сделать код программы на си шарп. условие: программа должна находить количество шагов, которые может сделать шахматная фигура...

Найти количество шагов, которые может сделать конь на шахматной доске для прохождения всего поля
не получается сделать код программы: программа должна находить количество шагов, которые может сделать шахматная фигура конь на шахматной...

Вычислить позиции, на которые конь может попасть за 2 хода
Вся задача сводится к тому, чтобы вычислить позиции на которые конь может попасть за 2 хода(и расставить в порядке возрастания): ...

Список всех клеток, на которые может попасть конь с указанной клетки за один ход
Вам дана строка, содержащая координату клетки на шахматном поле (например, “A2”). Напишите функцию possible_turns(cell), которая будет по...


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

Или воспользуйтесь поиском по форуму:
23
Ответ Создать тему
Новые блоги и статьи
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru