Форум программистов, компьютерный форум CyberForum.ru

Замена фигур на шахматной доске - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Генератор слов http://www.cyberforum.ru/cpp-beginners/thread635012.html
Здравствуйте! Хочу написать программу по генерированию слов из набора букв, но даже не представляю с чего начать... Может кто-нибудь посоветовать с чего начать? Спасибо большое... Опишу немного программу: Пользователь вводит в строку буквы НО?А и нажимает кнопку, программа должна подобрать все возможные слова и вывести. Знаком вопроса заменяются неизвестные буквы...
C++ Очередь с приоритетом /* ПОМОГИТЕ пож. в задаче не могу реализовать статистику печати, т.е. вывода на экран времени когда кто вошёл в очередь и не получается отсортировать по приориттам клиентов, др. словами у меня сортируется только приоритет а клиент нет, у клиента меняется только приоритет*/ /* 3. Разработать приложение, имитирующее очередь печати принтера. Должны быть клиенты, посылающие запросы на принтер, у... http://www.cyberforum.ru/cpp-beginners/thread635009.html
C++ Класс матриц с арифметическими операциями С++
Я создаю класс матриц с операциями сложения, умножения, вычитания матриц, умножения на константу, транспонирования на С++. Почему-то не работает умножение матриц. Помогите пожалуйста. Вот код. #include<iostream> using namespace std; class Matrix{ friend Matrix operator * (Matrix, Matrix); public: void SetMatrix();
C++ Директива препроцессора #if
Вобще при коспиляции файла взятого с офф сайта микрософт endian.h Получаю вот такие ошибки 17|error: operator '==' has no left operand 95|error: operator '==' has no left operand 131|error: operator '!=' has no left operand соответствено на строки #if (BIT_ORDER == BYTE_ORDER) // 17 #if BYTE_ORDER==BIG_ENDIAN // 95 #if (BYTE_ORDER != DEVICE_ORDER) // 131 Почему они возникают? Обе...
C++ Класс: создать класс "Person" http://www.cyberforum.ru/cpp-beginners/thread634988.html
1,2 #include <iostream> #include <string> class Person { Person() : name("Alex"), address("Texas") {} private: std::string name;
C++ Что лучше С++ 6 или С++ 2010 Что выбрать, мое мнение Что лучше С++ 6 или С++ 2010 Что выбрать, мое мнение Вот я тут на днях думал и пришел к выводу, например если вы хотите чтобы ваша прога работала на windows xp или рание версии то лучше выбрать с++ 6 но к сожалинию у этой версии есть баг виснет она при написании кода. Лично я пробовал писать в с++ 2010 только лучше галочку на анси кодировку в студии поставить т.к. 2010 анси и юникод - по... подробнее

Показать сообщение отдельно
SubTerran
8 / 8 / 0
Регистрация: 13.08.2012
Сообщений: 18
13.08.2012, 20:50     Замена фигур на шахматной доске
Библиотека: Matrix.h
http://www.stroustrup.com/Programming/Matrix/Matrix.h

Библиотека: MatrixIO.h
http://www.stroustrup.com/Programming/Matrix/MatrixIO.h


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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
//
// 
// 
//
 
#include<iostream>
#include<fstream>
#include<sstream>
#include<cmath>
#include<cstdlib>
#include<string>
#include<list>
#include<vector>
#include<algorithm>
#include<stdexcept>
#include "Matrix.h"
#include "MatrixIO.h"
 
using namespace Numeric_lib;
using namespace std;
 
//------------------------------------------------------------------------------
 
enum Horses { none, white, black, fight_w1, fight_w2, fight_b1, fight_b2 };
 
//------------------------------------------------------------------------------
 
struct One_cell
{
    One_cell(int aa, int bb, Horses h1, Horses h2) :a(aa), b(bb) 
    { oc.first = h1; oc.second = h2; }
    int a;
    int b;
    pair<Horses, Horses> oc;
};
 
//------------------------------------------------------------------------------
 
vector<One_cell> one_cell;
 
//------------------------------------------------------------------------------
 
void f(Matrix<Horses, 2>& mtrx, int i, int j)
{
    string s;
    int f;
    if (mtrx(i, j) == white)
    {
        static int i2 = i;
        static int j2 = j;
        int k = 1;
        if (i != i2 || j != j2)
            k = 2;
        if (k == 1)
            s = "w1";
        else
            s = "w2";
        cout << "Поля под боем " << k << " белого коня\n";
    }
    else if (mtrx(i, j) == black)
    {
        static int i2 = i;
        static int j2 = j;
        int k = 1;
        if (i != i2 || j != j2)
            k = 2;
        if (k == 1)
            s = "b1";
        else
            s = "b2";
        cout << "Поля под боем " << k << " черного коня\n";
    }
 
    if (s == "w1")
        f = 3;
    else if (s == "w2")
        f = 4;
    else if (s == "b1")
        f = 5;
    else if (s == "b2")
        f = 6;
 
    if (i > 1 && j < 7)
    {
        if (mtrx(i - 2, j + 1) != none)
            one_cell.push_back(One_cell(i - 2, j + 1, mtrx(i - 2, j + 1), Horses(f)));
        mtrx(i - 2, j + 1) = Horses(f);
        cout << '(' << i - 2 << ',' << j + 1 << ") ";
    }
    if (j < 7 && j < 6)
    {
        if (mtrx(i + 1, j + 2) != none)
            one_cell.push_back(One_cell(i + 1, j + 2, mtrx(i - 2, j + 1), Horses(f)));
        mtrx(i + 1, j + 2) = Horses(f);
        cout << '(' << i + 1 << ',' << j + 2 << ") ";
    }
    if (j != 0 && i < 6)
    {
        if (mtrx(i + 2, j - 1) != none)
            one_cell.push_back(One_cell(i + 2, j - 1, mtrx(i - 2, j + 1), Horses(f)));
        mtrx(i + 2, j - 1) = Horses(f);
        cout << '(' << i + 2 << ',' << j - 1 << ") ";
    }
    if (i != 0 && j > 1)
    {
        if (mtrx(i - 1, j - 2) != none)
            one_cell.push_back(One_cell(i - 1, j - 2, mtrx(i - 2, j + 1), Horses(f)));
        mtrx(i - 1, j - 2) = Horses(f);
        cout << '(' << i - 1 << ',' << j - 2 << ") ";
    }
    cout << '\n';
}
 
//------------------------------------------------------------------------------
 
inline void keep_window_open()
{
    cin.clear();
    cout << "Please enter a character to exit\n";
    char ch;
    cin >> ch;
    return;
}
 
//------------------------------------------------------------------------------
 
inline int randint(int max) { return rand()%max; }
 
//------------------------------------------------------------------------------
 
int main()
    try
{
    setlocale( LC_ALL, "Russian" );
 
    Matrix<Horses, 2> mtrx(8, 8);
 
    srand(8);
 
    int n = 0;
    int k = 0;
    int p = 0;
 
    while(p != 2)
    {
        n = randint(8);
        k = randint(8);
        if (mtrx(n, k) != white)
        {
            mtrx(n, k) = white;
            ++p;
        }
    }
 
    p = 0;
 
    while(p != 2)
    {
        n = randint(8);
        k = randint(8);
        if (mtrx(n, k) != white && 
            mtrx(n, k) != black)
        {
            mtrx(n, k) = black;
            ++p;
        }
    }
 
    cout << mtrx << '\n';
 
    for (Index i = 0; i < 8; ++i)
        for (Index j = 0; j < 8; ++j)
        {
            if (mtrx(i, j) == white)
                f(mtrx, i ,j);
            else if (mtrx(i, j) == black)
                f(mtrx, i, j);
        }
 
    cout << "Поля не под боем ни одного из четырех: \n";
 
    for (Index i = 0; i < 8; ++i)
        for (Index j = 0; j < 8; ++j)
            if (mtrx(i, j) == none)
                cout << '(' << i << ',' << j << ") ";
 
    if (one_cell.size())
    cout << "\nСписок полей под боем нескольких: \n";
 
    for (int i = 0; i < one_cell.size(); ++i)
    {
        cout << '\n';
        if (one_cell[i].oc.first != one_cell[i].oc.second)
        {
        switch(one_cell[i].oc.first)
        {
        case 3:
            cout << "Белый конь 1\n";
            break;
        case 4:
            cout << "Белый конь 2\n";
            break;
        case 5:
            cout << "Черный конь 1\n";
            break;
        case 6:
            cout << "Черный конь 2\n";
            break;
        }
        switch(one_cell[i].oc.second)
        {
        case 3:
            cout << "Белый конь 1\n";
            break;
        case 4:
            cout << "Белый конь 2\n";
            break;
        case 5:
            cout << "Черный конь 1\n";
            break;
        case 6:
            cout << "Черный конь 2\n";
            break;
        }
        cout << '(' << one_cell[i].a << ',' << one_cell[i].b << ") ";
        }
    }
 
    cout << '\n' << mtrx << '\n';
 
    keep_window_open();
    return 0;
}
catch (exception& e) {
    cerr << "error: " << e.what() << '\n'; 
    keep_window_open();
    return 1;
}
catch (...) {
    cerr << "Oops: unknown exception!\n"; 
    keep_window_open();
    return 2;
}
 
//------------------------------------------------------------------------------
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru