forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   C++ (http://forum.boolean.name/forumdisplay.php?f=22)
-   -   треугольник паскаля на C++ (http://forum.boolean.name/showthread.php?t=803)

jimon 23.03.2006 22:07

вообщем всякий там гемор мы проходим
и в лом мне было расписовать его...
и было так зделано что произошла мысля :))

короче алгоритм я свел к другому представлению треугольника
тоесть стандарт
---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;
}

песемисты - напишите прогу меньше :)


Часовой пояс GMT +4, время: 13:56.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot