-
+56
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
int GUIFont::getTextSize (std::string::iterator &begin, std::string::iterator &end ) {
int size = 0;
while(begin != end ) {
uint32_t id = utf8::unchecked::next (begin );
CharDescriptor *cd = chars- >getChar(id);
size += cd- >xadvance;
}
return size;
}
int GUIFont::getTextSize (std::string &text ) {
return getTextSize (text.begin (), text.end ());
}
int GUIFont::getTextSize (std::wstring &text ) {
std::string utf8text;
utf8::utf16to8 (text.begin (), text.end (), back_inserter (utf8text ));
return getTextSize (utf8text.begin (), utf8text.end ());
}
Вот так я зафейлил...
И что самое главное - студия сожрала и даже ворнинга не кинула, а эклипс ни в какую.
Без добрых людей на гейдеве не допер бы что к чему.
Pythoner,
15 Декабря 2014
-
+57
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
if (this->IsWhiteFigure())
{
if (abs(position_x - this->GetPositionX()) == 1 && position_y - this->GetPositionY() == -1)
{
this->SetPositionX(position_x);
this->SetPositionY(position_y);
}
else
{
throw IncorrectMoveException();
}
}
else
{
if (abs(position_x - this->GetPositionX() == 1) && position_y - this->GetPositionY() == 1)
{
this->SetPositionX(position_x);
this->SetPositionY(position_y);
}
else
{
throw IncorrectMoveException();
}
}
Тест на внимательность. Сможете ли вы догадаться почему это не работает ?
GreatMASTERcpp,
13 Декабря 2014
-
+63
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 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
int day (char* input, int begin, int number, int year)
{
switch (input[begin])
{
case 65:
if (input[begin+1] == 112)
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) return 91 + number;
else return 90 + number;
else if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) return 213 + number;
else return 212 + number;
break;
case 68:
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) return 335 + number;
else return 334 + number;
break;
case 70:
return 31+number;
break;
case 74:
switch (input[begin+3])
{
case 117:
return number;
break;
case 101:
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) return 152 + number; else return 151 + number;
break;
case 121:
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) return 182 + number; else return 181 + number;
break;
}
break;
case 77:
switch (input[begin+2])
{
case 114:
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) return 60 + number; else return 59 + number;
break;
case 121:
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) return 121 + number; else return 120 + number;
break;
}
break;
case 78:
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) return 305 + number; else return 304 + number;
break;
case 79:
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) return 274 + number; else return 273 + number;
break;
case 83:
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) return 244 + number; else return 243 + number;
break;
}
}
Преобразование название месяца в его продолжительность.
mottoper,
12 Декабря 2014
-
+58
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 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
if(is_ai_on && !white_move)
{
int tries;
start:
srand (time(NULL));
select_figure:
int figure = rand() % (game_field.figures.size() - 1) + 0;
if(game_field.figures[figure]->IsWhiteFigure()) goto select_figure;
int pos_x;
int pos_y;
tries = 0;
try_move:
try
{
switch(game_field.figures[figure]->GetType())
{
case PawnType:
{
pos_x = rand() % (game_field.figures[figure]->GetPositionX() + 2) + (game_field.figures[figure]->GetPositionX() - 2);
if(pos_x < 0) pos_x = 0;
if(pos_x >= game_field.size) pos_x = game_field.size - 1;
pos_y = game_field.figures[figure]->GetPositionY() + 1;
if(pos_x == game_field.figures[figure]->GetPositionX() &&
pos_y == game_field.figures[figure]->GetPositionY())
{
if(tries < 6)
{
tries++;
goto try_move;
}
else
{
goto select_figure;
}
}
}break;
default:
{
pos_x = rand() % (game_field.figures[figure]->GetPositionX() + 5) + (game_field.figures[figure]->GetPositionX() - 5);
pos_y = rand() % (game_field.figures[figure]->GetPositionY() + 5) + (game_field.figures[figure]->GetPositionY() - 5);
if(pos_x < 0) pos_x = 0;
if(pos_x >= game_field.size) pos_x = game_field.size - 1;
if(pos_y < 0) pos_y = 0;
if(pos_y >= game_field.size) pos_y= game_field.size - 1;
if(pos_x == game_field.figures[figure]->GetPositionX() &&
pos_y == game_field.figures[figure]->GetPositionY())
{
if(tries < 6)
{
tries++;
goto try_move;
}
else
{
goto select_figure;
}
}
}break;
}
game_field.DoMove(figure, pos_x, pos_y, this->white_move);
}
catch(...)
{
if(tries < 6)
{
tries++;
goto try_move;
}
else
{
goto select_figure;
}
}
this->white_move = true;
}
Скайнет - версия 0.0000000000000000000000000000000001
GreatMASTERcpp,
12 Декабря 2014
-
+56
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
if(i%2==0)
{
for(j=int (l);j<n+int (l);j++)
{
A[i][j]=B1[k];
k++;
}
}
else if(i%2!=0)
{
for(j=int (l);j<n+int (l);j++)
{
A[i][j]=B2[k];
k++;
}
}
Когда-то один однокурсник спросил у препода:
- А как добавить код в ИНАЧЕ от ИНАЧЕ.
Что-то подобное увидел и в этом коде.
FalseCoder,
11 Декабря 2014
-
+57
- 1
http://pastebin.ru/IvyLrrEr
так и живём, реализация "зоопарка" на С++ после прочтения "банды четырёх"
bitchboy,
10 Декабря 2014
-
+68
- 1
- 2
- 3
- 4
- 5
- 6
- 7
// Возвращает квадрат натурального числа
// 4^2 = 1 + 3 + 5 + 7
int sqr(int n) {
int result = 0;
for(int i = 1, a = 1; i <= n; i++, a = a + 2) result += a;
return result;
}
Нестандартные решения - залог успешности проекта.
Gouvere,
08 Декабря 2014
-
+49
pewppy,
07 Декабря 2014
-
+49
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 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
#include <stdio.h>
#include <math.h>
#include "determinant.h"
double det(double **matrix, int size)
{
if(size==2)
{
return matrix[0][0]*matrix[1][1]-matrix[0][1]*matrix[1][0];
}
else if(size==1)
{
return matrix[0][0];
}
int result = 0;
for(int j=0; j<size; j++)
{
if(matrix[0][j]!=0)
{
result+=matrix[0][j]*(unsigned)pow(-1.f,(unsigned)j)*det(minor(matrix, size, 0, j), size-1);
}
}
return result;
}
double **minor(double **matrix, int size, int str, int col)
{
double **minor=new double *[size-1];
int m_str = 0;
int m_col;
for(int i=0; i<size; i++)
{
if(i!=str)
{
m_col = 0;
minor[m_str]=new double[size-1];
for(int j=0; j<size; j++)
{
if(j!=col)
{
minor[m_str][m_col]=matrix[i][j];
m_col++;
}
}
m_col++;
}
}
return minor;
}
Считаю определитель рекурсией, во время теста в этом сорце вылетает ошибка EXC_BAD_ACCESS(code=1, access=0x8),
после одного прохода рекурсии, с чем это связано? Помогите разобраться :)
aesc_smirnov,
07 Декабря 2014
-
+53
- 1
- 2
- 3
- 4
- 5
class ParseError : public std::exception{
string s;
explicit ParseError(const std::string& s) : s(s) {}
const char* what() const throw() { return s.c_str(); }
};
Это мне нужно в своём исключении-потомке обязательно перегрузить what и добавить свою строку для хранения, чтобы данные, переданные в конструктор s по указателю обязательно выжили после размотки стека.
LispGovno,
06 Декабря 2014