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

Как создать запускающий файл? - C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.81
witalii
0 / 0 / 0
Регистрация: 16.05.2011
Сообщений: 13
16.05.2011, 19:05     Как создать запускающий файл? #1
недавно решил заняться программированием C++, начал делать шахматы, при запуске программы выдает что у меня отсутствует запускающий файл с расширением Как создать запускающий файл? .exe как мне сделать этот файл?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Хохол
Эксперт C++
 Аватар для Хохол
475 / 443 / 13
Регистрация: 20.11.2009
Сообщений: 1,292
16.05.2011, 19:08     Как создать запускающий файл? #2
Хелловорлд для начала запустить попробуй.
DeadRipper
64 / 70 / 3
Регистрация: 25.06.2009
Сообщений: 244
16.05.2011, 19:09     Как создать запускающий файл? #3
дело в том что он не создается, из за ошибок допущенных в коде, в нижнем окне где идет процесс компиляции все ошибки выводятся на экран
witalii
0 / 0 / 0
Регистрация: 16.05.2011
Сообщений: 13
16.05.2011, 19:35  [ТС]     Как создать запускающий файл? #4
я эту программку делаю по книге Корнилов "создание шахмат", уже исправил кучу ошибок связанных со скобками и т.д. вот вся программа:

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
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
// 2.cpp : Defines the entry point for the application.
//
#include "stdafx.h"
#include "2.h"
int static TMove; gMove; //сюда вернется лучший ход 
int Search(int alpha,int beta,int Depth, int ply); 
{
//пока не нашли лучшего хода
NoFindMove(retMove); 
if (Depth <= 0 | I TimeOverO()) return Evaluate (); 
TMove tmpMove; //стековая промежуточная переменная
//найдем лучший ход на меньшую глубину
Search(alpha,beta,Depth-2,retMove,ply); 
//если лучший ход найдем, попробуем его первым
if(findMove) 
}
{ 
MakeMove(retMove); 
int tmp = -Search(-beta,-alpha,Depth-1, 
&tmpMove, //нам не потребуется
ply+1); 
UnMakeMove(retMove); 
if(tmp > alpha) alpha = tmp; 
if(alpha >= beta) return alpha; 
} 
//основной счет 
{...} 
///допустим, нашли ход
{...} 
{
MakeMove (move) ; 
tmp = -Search(-beta,-alpha,Depth-1,&tmpMove,ply+1); 
UnMakeMove(move); 
if(tmp > alpha) 
{ 
alpha = tmp; 
if(!TimeOver() ) 
memcpy(retMove,move,sizeof(TMove)); 
} 
if(alpha >= beta) return alpha; 
{...} 
return alpha; 
} 
{
typedef struct _TMove{ 
int xl,yl,x2,y2; //откуда и куда пошла фигура
int f; //сама фигура 
int newF; //значение фигуры на новом месте
//пешка после превращения меняет значение
int eatFX, eatFY;//координаты съеденной фигуры
//при взятии пешкой через битое поле
//эти координаты не совпадают с новым
//местом фигуры
int eatF; //сама съеденная фигура
int score; //приращение оценки при ходе
bool isExtMoveKing; //рокировка? 
int Depth; //глубина счета
}TMove,*PMove; 
#define B BLACK 
#define W WHITE 
static unsigned char _pos [ 8 ] [ 8 ] = 
{ROOK|Р’,KNIGHT|Р’,BISHOP|Р’ }, 
{...}
}
//делает перемещение
(void MakeMove(PMove move));
{ 
if(!move->isExtMoveKing) 
{ 
_pos[move->yl][move->xl] = 0; 
_pos[move->eatFY][move->eatFX] = 0; 
_pos[move->y2][move->x2] = move->newF; 
}else{ 
//рокировка
    {...}
}
}
//восстанавливает позицию
(void UnMakeMove(PMove move));
{ 
//все в обратном порядке
    {...}
}
{
    //массивы со стратегической оценкой
typedef int TStBoard[8][8]; 
//стратегическая оценка 
//для верхних
static TStBoard _upSt = 
{ 
{ 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} 
}; 
//для нижних
static TStBoard _botSt = 
{ 
{64,63,62,61,60,59,58,57}, 
{56,55,54,53,52,51,50,49}, 
{48,47,46,45,44,43,42,41}, 
{40,39,38,37,36,35,34,33}, 
{32,31,30,29,28,27,26,25}, 
{24,23,22,21,20,19,18,17}, 
{16,15,14,13,12,11,10, 9}, 
{ 8, 7, 6, 5, 4, 3, 2, 1} 
};
//массив быстрой перекодировки кода фигуры в ее вес
static int _wf [7] = {0,W_KING,W_QUEEN,W_ROOK,W_BISHOP,W_KNIGHT,W_PAWN} ; 
//возвращает приращение оценки хода
int delRes( TStBoard *myB, //оценка наших фигур
TStBoard *opB, //противника
PMove move //описатель перемещения
)
{
int score; 
if(move->isExtMoveKing) 
{ 
//рокировка
{...} 
}else{ 
score = _wf[FIGURE(move->newF) - _wf[FIGURE(move->f)] + 
(*myB) [move->y2] [move->x2] - 
(*myB) [move->yl] [move->xl] ; 
if(eatF) 
{ 
score += _wf[FIGURE(move->eatF); 
score += (*opB)[move->eatFY][move->eatFX]; 
}
}
return score; 
} 
//цвет верхних фигур
static int _upFColor; 
//сама функция счета (схематично)
int Search(PMove node, //описатель хода в эту позицию
int Depth, //сколько полуходов осталось
int ply, //абсолютная глубина от 0 
int alpha, 
int beta, 
PMove retMove, //найденный ход
int score, //текущая оценка узла
bool isLazyEval, //идет сокращенный просчет
int color //цвет наших фигур
)
{
TStBoard *myB,*opB; 
int nextColor = color=BLACK?WHITE:BLACK; 
//инициализируем переменные
if(color != _upFColor) 
{ 
//если наши фигуры нижние
myB = &_botSt; opB = &_upSt; 
}else{ 
myB = &_upSt; opB = &_botSt; 
} 
retMove->f = 0; //нет пока лучшего хода
if(Depth <= 0 || TimeOver()) return score; 
int res = -INFINITY; //возвращаемая оценка
//в эту стековую переменную будет возвращен лучший ход
TMove tmpMove; 
//структура выборочного поиска
static int ext[100] = 
{-64,-64,-64,-64, 
-64,W_PAWN,W_BISHOP,W_ROOK,W_QUEEN,INFINITY,INFINITY,...}; 
//повышаем alpha текущей оценкой
if(ply > 0 && //если не первый полуход
node->score < ext[ply] && //ход не продлевается
!lnCheck(node) //не шах
)
{
res = score; 
if(res > alpha) alpha = res; 
if(alpha >= beta) return alpha; 
}
//переберем на глубину Depth-2 для получения
//лучшего хода 
int tmp = Search(node,Depth-2,ply,alpha,beta, 
retMove, 
score, 
ply==O?false:true, 
color 
); 
/// lazy eval ///// 
//если данный узел удовлетворяет некоторым требованиям, 
//мы можем отсечь его, основываясь на результате сокращенного счета
if(retMove->f && //если нашли лучший ход
retMove->Depth >= Depth-2 //достаточная глубина
ply != 0 && //не первый вызов
!isLazyEval && //не делаем сокращенного поиска
score - 64 >= beta && //оценка и поле роста >= beta 
tmp-64 >= beta && //проверка подтверждает
node->score < W_PAWN && //не взятие
!InCheck(node) //не шах
)
{
return beta; //целая ветвь подрезана!!! 
} 
//прежде, чем нашли перемещения,
//попробуем найденный лучший ход
if(retMove->f) //если такой ход найден
{ 
MakeMove(retMove); 
tmp = -Search( retMove, //описатель хода в эту позицию
Depth-1, //сколько полуходов осталось
ply+1, //абсолютная шлубина от 0
-beta, 
-alpha, 
&tmpMove, //найденный ход (нам не нужен)
-(score+retMove->score), //текущая оценка узла
isLazyEval, 
nextColor 
); 
UnMakeMove (retMove) ; 
if(tmp > res) res = tmp; 
if(res > alpha) 
{ 
//если не превышен лимит времени
if(ITimeOver()) 
{ 
//лучший ход тот же,
//только корректируем глубину
retMove->Depth = Depth; 
} 
alpha = res; 
} 
if(alpha >= beta) return alpha; 
}//endif 
///////// взятия ///////////////////////////// 
//нашли взятие - сразу в следующую позицию //// 
{...}
////// допустим, нашли ход //////////////////// 
{...} 
//приращение при ходе
ove->score = delRes(myB,opB,move); 
MakeMove(move); 
tmp = -Search( move, //описатель хода в эту позицию
Depth-1, //сколько полуходов осталось
ply+1, //абсолютная глубина от 0
-beta, 
-alpha, 
&tmpMove, //найденный ход (нам не нужен)
-(score+move->score), //текущая оценка узла
isLazyEval, 
nextColor 
); 
if(tmp > res) res = tmp; 
if(res > alpha) 
{ 
alpha = res; 
if(!TimeOver()) 
{ 
memcpy(retMove,move,sizeof(TMove)); 
retMove->Depth = Depth; 
}
}
if(alpha >= beta) return alpha; 
UnMakeMove(move); 
{...} 
(...) 
return res; 
}
}//end function
Добавлено через 1 минуту
здесь вроде еще нужно создать начальную функцию для PMove но у меня не получается(( подскажите что-нибудь

Добавлено через 22 минуты
попробовал сделать простую программу хелловорлд при запуске она появляется на долю секунды и исчезает, это что означает?

 Комментарий модератора 
Используйте теги форматирования кода!
Хохол
Эксперт C++
 Аватар для Хохол
475 / 443 / 13
Регистрация: 20.11.2009
Сообщений: 1,292
16.05.2011, 19:45     Как создать запускающий файл? #5
http://www.cyberforum.ru/cpp-beginners/thread10807.html
witalii
0 / 0 / 0
Регистрация: 16.05.2011
Сообщений: 13
16.05.2011, 20:05  [ТС]     Как создать запускающий файл? #6
попробовал все те способы но не в одном из них не разобрался, можете скопировать готовую хеловорлд с одним из способов приостанавливающим быстрое закрытие программы? хочется сам текст взглянуть
Хохол
Эксперт C++
 Аватар для Хохол
475 / 443 / 13
Регистрация: 20.11.2009
Сообщений: 1,292
16.05.2011, 20:24     Как создать запускающий файл? #7
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
 
using namespace std;
 
int main()
{
    cout << "Hello, world" << endl;
    system("pause");
}
panicwassano
591 / 559 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
16.05.2011, 20:29     Как создать запускающий файл? #8
автор тебе надо исправить ошибки чтобы он создался, с ошибками не создается и уж тем более не запускается
Mиxaил
 Аватар для Mиxaил
530 / 435 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
16.05.2011, 20:34     Как создать запускающий файл? #9
Скинь сюда ошибки... Что пишет?
witalii
0 / 0 / 0
Регистрация: 16.05.2011
Сообщений: 13
16.05.2011, 20:56  [ТС]     Как создать запускающий файл? #10
1>------ Build started: Project: 2, Configuration: Debug Win32 ------
1>Compiling...
1>2.cpp
1>c:\users\z\documents\visual studio 2005\projects\2\2\2.cpp(5) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\z\documents\visual studio 2005\projects\2\2\2.cpp(7) : error C2447: '{' : missing function header (old-style formal list?)
1>c:\users\z\documents\visual studio 2005\projects\2\2\2.cpp(17) : error C2447: '{' : missing function header (old-style formal list?)
1>c:\users\z\documents\visual studio 2005\projects\2\2\2.cpp(27) : error C2447: '{' : missing function header (old-style formal list?)
1>c:\users\z\documents\visual studio 2005\projects\2\2\2.cpp(29) : error C2447: '{' : missing function header (old-style formal list?)
1>c:\users\z\documents\visual studio 2005\projects\2\2\2.cpp(30) : error C2447: '{' : missing function header (old-style formal list?)
1>c:\users\z\documents\visual studio 2005\projects\2\2\2.cpp(44) : error C2447: '{' : missing function header (old-style formal list?)
1>c:\users\z\documents\visual studio 2005\projects\2\2\2.cpp(66) : error C2062: type 'void' unexpected
1>c:\users\z\documents\visual studio 2005\projects\2\2\2.cpp(67) : error C2447: '{' : missing function header (old-style formal list?)
1>c:\users\z\documents\visual studio 2005\projects\2\2\2.cpp(79) : error C2062: type 'void' unexpected
1>c:\users\z\documents\visual studio 2005\projects\2\2\2.cpp(80) : error C2447: '{' : missing function header (old-style formal list?)
1>c:\users\z\documents\visual studio 2005\projects\2\2\2.cpp(84) : error C2447: '{' : missing function header (old-style formal list?)
1>Build log was saved at "file://c:\Users\Z\Documents\Visual Studio 2005\Projects\2\2\Debug\BuildLog.htm"
1>2 - 12 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Добавлено через 2 минуты
как я понял мне нужно сделать заголовок для PMove пробовал несколько вариантов но все были неправильными, также пробовал вставлять путь к файлу в тулс оптионс проект анд солюшен инклуд и там печатал, все равно не помогает
Хохол
Эксперт C++
 Аватар для Хохол
475 / 443 / 13
Регистрация: 20.11.2009
Сообщений: 1,292
16.05.2011, 20:58     Как создать запускающий файл? #11
Если вызывает затруднения хелловорлд, стоит забить временно на шахматы и заняться программами попроще.
witalii
0 / 0 / 0
Регистрация: 16.05.2011
Сообщений: 13
16.05.2011, 21:14  [ТС]     Как создать запускающий файл? #12
удалил строку 27 стало 11 ошибок, но она вроде нужна?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.05.2011, 21:18     Как создать запускающий файл?
Еще ссылки по теме:

C++ Как создать файл в VS
C++ Как создать проверяющий файл?
Подскажите, нужно перегрузить оператор или создать метод(если создать то не понимаю как) записи в файл C++
C++ Как создать EXE файл?

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

Или воспользуйтесь поиском по форуму:
ValeryS
Модератор
6413 / 4879 / 448
Регистрация: 14.02.2011
Сообщений: 16,180
16.05.2011, 21:18     Как создать запускающий файл? #13
заплюхался со скобками ???
смотри вот это
Цитата Сообщение от witalii Посмотреть сообщение
int Search(int alpha,int beta,int Depth, int ply);
описание функции( точка с запятой)
объявление функции должно выглядеть так
C++
1
2
3
4
int Search(int alpha,int beta,int Depth, int ply)
{
/// что то делаем
}
нет точки с запятой
у тебя же

Цитата Сообщение от witalii Посмотреть сообщение
int Search(int alpha,int beta,int Depth, int ply);
{
//пока не нашли лучшего хода
после точки с запятой стоит фигурная скобка
что для компилятора является ошибкой
он не может связать тело функции с заголовком
1>c:\users\z\documents\visual studio 2005\projects\2\2\2.cpp(7) : error C2447: '{' : missing function header (old-style formal list?)
переписывай внимательнее
а еще лучше изучай синтаксис и тогда сам будешь видеть где ошибки

Добавлено через 4 минуты
27 строка не нужна
она показывает что в теле функции есть какие то команды
(функция свернута) делается для удобства чтения листинга
но компилятор такого не понимает
Цитата Сообщение от witalii Посмотреть сообщение
{...}
Yandex
Объявления
16.05.2011, 21:18     Как создать запускающий файл?
Ответ Создать тему
Опции темы

Текущее время: 03:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru