Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 09.01.2015
Сообщений: 8
1

Ходы коня. с++

13.01.2015, 20:14. Показов 901. Ответов 0
Метки нет (Все метки)

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

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
#include "stdafx.h"
#include <iostream>
 
using namespace std;
void BeginHorse(int MAS[10][10], int N, int x0, int y0)
{
    for (int y = 0; y <= N; y++)
    for (int x = 0; x <= N; x++)
    {
        if ((x == x0) && (y == y0))
            MAS[y][x] = 1;
        else
            MAS[y][x] = 0;
    }
}
void OutMAS(int MAS[10][10], int N)
{
    cout << "\n\n";
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < N; j++)
            cout << MAS[i][j] << "  ";
        cout << "\n";
    }
 
}
void PossibleMoves(int movex, int movey, int MAS[10][10], int x, int y, int N)
{
    if (((x + movex <= N) && (x + movex >= 0)) && ((y + movey <= N) && (y + movey >= 0)) && (MAS[x + movex][y + movey] != 1))
    {
        x += movex;
        y += movey;
        MAS[x][y] = 1;
    }
}
 
void main()
{
    setlocale(LC_ALL, "rus");
    cout << "Введите размер поля ( не больше 1-10): ";
    int n, x0, y0;
    cin >> n;
    n -= 1;
    cout << "Введите начальную координату x (x0): ";
    cin >> x0;
    x0 -= 1;
    cout << "Введите начальную координату y (y0): ";
    cin >> y0;
    y0 -= 1;
    int pole[10][10];
    int x, y;
    x = x0;
    y = y0;
    BeginHorse(pole, n, x0, y0);
    int stepx[8] = { 2, 2, -2, -2, 1, 1, -1, -1 };
    int stepy[8] = { 1, -1, 1, -1, 2, -2, 1, -1 };
    int l=0, varx, vary;
    int writestepx[99];
    int writestepy[99];
    int a, b;
    while (l < (n+1)*(n+1) - 1)
    {
        varx = x;
        vary = y;
        for (int step = 0; step < 8; step++)
        {
            a = stepx[step];
            b = stepy[step];
            PossibleMoves(a, b, pole, varx, vary, n);
            if ((varx != x) && (vary != y))
            {
                writestepx[l] = varx;
                writestepy[l] = vary;
                l++;
                break;
            }
        }
    }
    OutMAS(pole, n);
    cout << "\n\n";
    for (int i = 0; i < (n+1)*(n+1) - 1; i++)
    {
        for (int j = 0; j < 10; j++)
        {
            cout << "{" << stepx[i] << ";" << stepy[i];
        }
        cout << "\n";
    }
}
Код пытался сделать максимально понятным. Прошу прощения, если не особо получилось.


Текст задачи.
Кликните здесь для просмотра всего текста
Разработать программу, решающую задачу о ходе коня. Дана доска
размером n x n (n<=10). На поле с координатами x0, y0 помещается конь
(правила перемещения этой фигуры как в шахматах). Задача заключается в
поиске последовательности ходов (если она существует), при которой конь
точно один раз побывает на всех полях доски (обойдет доску), т. е. нужно
вычислить n2
-1 ходов. Полученную в качестве результата последовательность
ходов отобразить на экране.


Ошибка
Кликните здесь для просмотра всего текста
Программа просто стопится и не идет дальше
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Миниатюры
Ходы коня. с++  
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.01.2015, 20:14
Ответы с готовыми решениями:

Ходы шахматного коня
Задача заключается в том, чтобы найти минимальное количество ходов для перехода шахматного коня с...

Найти доступные ходы для пользователя
Пишу простую консольную игру на C++. Углубляться в правила не буду, расскажу о проблеме. Игровая...

Определить все ходы для белой шашки.
Вот сижу и думаю как эту рекурсию использовать и в каком месте.Что это такое я интуитивно...

Реализовать интерактивное размещение шахмат на доске и подсветить возможные ходы
Дано поле 8х8 в виде 2хмерного массива. Все свободные поля обозначаются запятой . Пользователь...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.01.2015, 20:14

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Ход коня
Здравствуйте, уважаемые форумчане!!! у меня возникла проблема с задачей про коня!!! Дело в том...

Похождения коня
Добрый день! Пишу программу для решения шахматной задачи &quot;Похождения коня,&quot; ( Условие :...

Путешесвтие коня.
Я написал программу про ход коня. Мне надо доделать, если ход сделать нельзя (выходит за размер...

Головоломка о путешествии коня
Задача - составить такую последовательность ходов, при которой конь может обойти всю шахматную...


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

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

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