Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
4aineg
0 / 0 / 0
Регистрация: 07.08.2008
Сообщений: 23
#1

Расстановка ферзей так, чтобы ни одна фигура не била другую - C++

16.11.2008, 20:42. Просмотров 573. Ответов 0
Метки нет (Все метки)

Здавствуйте, уважаемые эксперты. Пытаюсь решить задачу с расстановкой королев на доске 8*8. Необходимо расставить так, чтобы ни одна фигура не била другую.
Алгоритм вроде правильный, но Вылазит следующая ошибка:
C:\Documents and Settings\Диманчег\Мои документы\Visual Studio 2005\Projects\Chess_Queen(modificated)\Debug\Chess_Queen(modificated).exe : fatal error LNK1120: 1 unresolved externals
и еще
MSVCRTD.lib(crtexe.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup


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
#pragma once
#include <iostream>
using namespace std;
 
class Queen
{
 
private:
 
    int *Place;
    int length;
 
public:
 
    Queen(int l)
    {
        l = length;
        Place = new int [length];
        for (int i=0; i<length; i++)
            Place[i] = 0;
    }
 
    bool GoodPosition(int len);
    void Insert();
 
    ~Queen()
    {
        delete [] Place;
    }
 
};
 
// Functions.h
 
#pragma once
#include "Queen.h"
 
bool Queen::GoodPosition(int len)
{
    bool t = true;
    int i = 0;
    while (t&&(i < len))
    {
        t = t && (Place[len] != Place[i]) &&
            (abs(Place[len] - Place[i]) != (len - 1));
        i++;
    }
 
    return t;
}
 
void Queen::Insert()
{
    if (length > 1)
    {
        Place[0] = 0;
        int k = 1;
        int S = 0;
        while(k >= 0)
        {
            Place[k]++;
            if (Place[k] == length)
            {
                Place[k] = -1;
                k--;
            }
            else
                if(GoodPosition(k))
                    k++;
            if (k == length)
            {
                S++;
                cout << "Decision: ";
                for (int i = 0; i < length; i++)
                    cout << Place[i];
                k--;
            }
        }
        cout << endl;
        cout << "Amount of decisions: " << S << endl;
    }
 
    else
        if (length == 1)
            cout << "1 decision" << endl;
        else 
            cout << "no decisions, please enter length >1" <<endl;
}
 
#pragma once
#include "Queen.h"
#include "Functions.h"
 
int Main()
{
    Queen q(8);
    q.Insert();
 
    return 0;
}
заранее благодарю
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.11.2008, 20:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Расстановка ферзей так, чтобы ни одна фигура не била другую (C++):

Расстановка восьми ферзей на шахматной доске так, чтобы ни один не угрожал другому - C++
5. Расстановка восьми ферзей на шахматной доске так, чтобы ни один не угрожал другому.

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

Расстановка 8 ферзей - C++
Привет всем, слушайте, вот исходник на С++ задача &lt;&lt;о восьми ферзях&gt;&gt;: #include&lt;iostream&gt; #include&lt;cmath&gt; #include&quot;pent&quot; void...

Расставить на доске N ферзей так, чтобы они не били друг друга - C++
смысл в том чтобы расставить на шахматной доске размером N*N, N ферзей так, чтобы они не били друг друна. пыиался сделать что то методом...

Рекурсия: расставить 5 ферзей так, чтобы все поле 8*8 находилось под ударом - C++
на шахматной доске (8*8) требуется расставить 5 ферзей так, чтобы все поле находилось под ударом. Будьте добры, помогите, пожалуйста найти...

Сделать так, чтобы после ввода одного значения массива, не перескакивало на другую строку - C++
Возможно ли, и если возможно, то как, сделать так, чтобы после ввода одного значения массива, не перескакивало на другую строку? for...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.11.2008, 20:42
Привет! Вот еще темы с ответами:

Вставка элементов одной последовательности в другую так, чтобы вторая последовательность осталась невозрастающей - C++
vector &lt;int&gt; vctavka(vector &lt;int&gt; posledovatelnost, vector &lt;int&gt; b) { for(unsigned i=0;i&lt;=posledovatelnost.size()-1;i++) { ...

Изменить класс Proxy так, чтобы он позволял динамически переключаться с одной реализации на другую - C++
В этом упражнении используется архитектурная идиома, в которой задействован так называемый заместитель (ргоху). Начните с создания базового...

Сделать так, чтобы одна процедура вызывала другую - C++/CLI WinForms
Всем добрый. Я все продолжаю рисовать Вселенную, темы...

Задача про ферзей (расставить n ферзей так, чтобы они не били друг друга) - C (СИ)
помогите,пожалуйста,с задачей, битый час сижу над ней-ничего не получается:пользователь задает размеры шахматной доски m*k и количество...


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

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

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