Показать сообщение отдельно
Старый 23.03.2006, 22:07   #1
jimon
 
Сообщений: n/a
вообщем всякий там гемор мы проходим
и в лом мне было расписовать его...
и было так зделано что произошла мысля )

короче алгоритм я свел к другому представлению треугольника
тоесть стандарт
---1
--1-1
-1-2-1
1-3-3-1

а я свел к
1
11
121
1331
что дало очень быстрое нахождение любой точки на линии

сначала думал ето зделать на блице - гемороя много, особено с линиями и масивами
ООП рулит , и масивы от irrlichtа ваще отпад

правда потом оказалось что преобразование такого треугольника в обратный - довольно геморойная чтука, и она у меня больше самого алгоритма получения треугольника

вообщем : прога генерит до тругольник до заданой глубины, раставляет все по местам и сохраняет в csv

#include <irrlicht.h>

class binom
{
public:
	irr::core::array<int> line;
	void generate_line (irr::core::array<int> line2)
	{
 line.push_back(1);
 for (int pos = 1; pos < (int)line2.size(); pos ++ ){line.push_back(line2[pos-1] + line2[pos]);}
 line.push_back(1);
	}
};

void main()
{
	int num = 30;

	binom pas[255];
	pas[0].line.push_back(1);
	for (int pos = 1; pos < num; pos++){pas[pos].generate_line(pas[pos-1].line);}

	FILE * out = fopen ("test.csv","wb");
	for (int pos = 0; pos < num; pos++)
	{
 for (int x = 0; x<pas[num-1].line.size()-pos-1;x++){fwrite(new char(59),sizeof(char),1,out);}
 for(int xx = 0; xx <pas[pos].line.size();xx++)
 {
 	irr::core::stringc st;
 	st+=pas[pos].line[xx];
 	fwrite(st.c_str(),st.size(),1,out);
 	fwrite(new char(59),sizeof(char),1,out);
 	fwrite(new char(59),sizeof(char),1,out);
 }
 fwrite(new char(13),sizeof(char),1,out);
 fwrite(new char(10),sizeof(char),1,out);

	}
	fclose(out);
	return;
}
песемисты - напишите прогу меньше
 
Ответить с цитированием