Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.90/30: Рейтинг темы: голосов - 30, средняя оценка - 4.90
0 / 0 / 0
Регистрация: 27.03.2014
Сообщений: 41

Клеточный автомат блуждания частицы по поверхности фуллерена C60

27.03.2014, 19:24. Показов 6500. Ответов 74
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
всем доброго времени суток))) приехали в провинцию умные дяди из Москвы и задали создать клеточный автомат блуждания частицы по поверхности фуллерена C60!!! Моделирование процессов не особо проходили, про клеточные автоматы первый раз услышал, с комп. графика - VBA немного "просмотрели", про фуллерен тем более никогда не слышал - "с места в карьер"!!! осваивать новые технологии времени нет, да и спросить тоже особо не у кого((( это про фуллерен http://ru.wikipedia.org/wiki/%... 0%B5%D0%BD, а это развертка [cut]
Так что, если кто-то может помочь сделать или просто сделать - напишите)))
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.03.2014, 19:24
Ответы с готовыми решениями:

Клеточный автомат
Добрый день! Проблема: не знаю как сделать так, чтобы программа работала со StringGrig следующем образом. При нажатии кнопки...

Клеточный автомат
Никак не могу написать прогу. Если кто знает help me пожалуйста. А вот собственно и текст проги: Напишите прогу представляющую...

Клеточный автомат
Ребят снова я со своим лабвью. Задача отброзить клеточный автомат 2D диффузии. Кто подскажет формулу и в какой из циклов ее пихнуть? И еще...

74
0 / 0 / 0
Регистрация: 27.03.2014
Сообщений: 41
21.05.2014, 18:46  [ТС]
Студворк — интернет-сервис помощи студентам
Ах да - у меня ругается на ShellAnimations.hpp. Подскажите причину...
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
21.05.2014, 18:53
Цитата Сообщение от Дикинов Мурат Посмотреть сообщение
ругается на ShellAnimations.hpp.
Билдер старый, наверно. Просто удали этот инклуд, он не нужен, случайно остался с какого-то другого кода...
1
0 / 0 / 0
Регистрация: 27.03.2014
Сообщений: 41
23.05.2014, 15:51  [ТС]
здаров Владимир) инклуд удалил - все норм)) а где описать class в первом коде, который ты скинул - в отдельном unit или там же?
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
23.05.2014, 16:07
Это уж вопрос организации кода. По-хорошему - да, в отдельный модуль. Но так как задача небольшая, можно просто в хэдере формы разместить.
0
0 / 0 / 0
Регистрация: 27.03.2014
Сообщений: 41
23.05.2014, 19:30  [ТС]
ага, ясно)

Добавлено через 53 минуты
а на форму какие компоненты бросил, че то он говорит Unable to openfile "UNIT2.DFM".???

Добавлено через 5 минут
все-все компоненты врубился какие))

Добавлено через 2 часа 20 минут
все равно говорит говорит Unable to openfile "UNIT2.DFM", в чем может быть проблема?
0
0 / 0 / 0
Регистрация: 27.03.2014
Сообщений: 41
25.05.2014, 19:03  [ТС]
люди!!! help me! dfm это же расширение Delphi form? а в проге этого нет вроде...
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33399 / 21509 / 8236
Регистрация: 22.10.2011
Сообщений: 36,907
Записей в блоге: 12
25.05.2014, 20:49
Цитата Сообщение от Дикинов Мурат Посмотреть сообщение
dfm это же расширение Delphi form
Это расширение файла, содержащего описание формы. Не столь важно, Дельфи или Билдер, у них форматы одинаковые. У тебя просто нет этого файла, в результате IDE не знает, как сконструировать форму...
1
0 / 0 / 0
Регистрация: 27.03.2014
Сообщений: 41
25.05.2014, 21:19  [ТС]
спасибо за объяснение) а если форму самому сделать, как подключить ее вместо этого Unit2 ?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33399 / 21509 / 8236
Регистрация: 22.10.2011
Сообщений: 36,907
Записей в блоге: 12
25.05.2014, 21:29
Можно и так...
0
0 / 0 / 0
Регистрация: 27.03.2014
Сообщений: 41
25.05.2014, 21:35  [ТС]
а как лучше? и подключить тоже как?
0
0 / 0 / 0
Регистрация: 27.03.2014
Сообщений: 41
02.06.2014, 11:17  [ТС]
в инете спросил на счет этого Unit 2 - ошибка с путями, все по-русски было, сказали по этому!!! в другую папку сохранил, все по-английски - все равно не пашет!!!

Добавлено через 3 минуты
ошибка [Linker error] Unresolved external TForm2 referеnced from и путь
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
02.06.2014, 13:28
Гм... какая TForm2? Одна же форма была? Что вообще происходит на данный момент, пытаешься запустить мой код?
Тогда, раз уж нарисовались какие-то проблемы с импортом проекта, лучше создай новый проект и копи-пастом загони туда код - это устранит возможные проблемы импорта. Почти все же делается программно, в дизайне всего-то и нужно, что кинуть на форму кнопку и панель, да создать обработчик onclick кнопки. Дальше копи-паст кусков кода в соответствующие места.
1
0 / 0 / 0
Регистрация: 27.03.2014
Сообщений: 41
02.06.2014, 16:00  [ТС]
запустил кое-как)) не заметил что ты обозвал кнопку и панель btn_step и shapes_pnl соответственно в свойстве name

Добавлено через 40 минут
че тогда дальше предложишь Владимир - надо же прописать соседей всех и каждого..
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
06.06.2014, 21:48
Лучший ответ Сообщение было отмечено BRcr как решение

Решение

Вот улучшенная версия, старую можешь выкинуть, раз уж до ума не довел.
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
// ---------------------------------------------------------------------------
typedef std::vector < TShape * > t_neibs;
 
t_neibs & operator << ( t_neibs & v, TShape * s )
{
    v.push_back( s );
    return v;
}
 
// ---------------------------------------------------------------------------
class t_cell : public TComponent
{
 
public:
    bool charged, just_received;
    int rp, gp; // receive_priority, give_priority
    int charge_id;
    TShape * sh;
 
    t_neibs neibs;
 
    void __fastcall pass_charge_to( t_cell * receiver )
    {
        receiver->receive_charge( charge_id );
        charged = false;
        charge_id = 0;
        set_sh_params( );
    }
 
    void receive_charge( int _id )
    {
        charged = true;
        charge_id = _id;
        just_received = true;
        set_sh_params( );
    }
 
    void set_sh_params( )
    {
        sh->Brush->Color = charged ? ( gp == 3 ? clAqua : clSkyBlue ) : ( rp == 5 ? clGreen : clRed );
        sh->Repaint( );
    }
 
    void __fastcall toggle_charge( int _id )
    {
        if ( charged = !charged )
        {
            charge_id = _id;
        }
        else
        {
            charge_id = 0;
        }
        set_sh_params( );
    }
 
    __fastcall  t_cell( TComponent * Owner ) :
        TComponent( Owner ),
        charge_id( 0 ),
        just_received( false )
    {
    }
} ;
 
// ---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
 
    TImage * img1;
    TShape * shp1;
    TShape * shp1a;
    TShape * shp1b;
    TShape * shp1c;
    TShape * shp1d;
    TShape * shp1e;
    TButton * btn_step;
 
    void __fastcall btn_stepClick( TObject * Sender );
    void __fastcall shp1MouseDown( TObject * Sender, TMouseButton Button, TShiftState Shift, int X, int Y );
 
public: // User declarations
 
        typedef std::map < TShape *, t_cell * > t_cells;
 
    t_cells cells;
 
    __fastcall TForm1( TComponent * Owner );
    // __fastcall ~TForm1( );
} ;
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
__fastcall TForm1::TForm1( TComponent * Owner ) :
    TForm( Owner )
{
    std::srand( std::time( 0 ) );
 
    // блок заполнения окрестностей ячеек
    cells[ shp1 ] = new t_cell( this );
    cells[ shp1 ]->sh = shp1;
    cells[ shp1 ]->neibs << shp1a << shp1b << shp1c << shp1d << shp1e; // список соседей, оператор << перегружен в хедере
 
    // и тд в том же духе, для каждой ячейки :)
 
    // ...
 
    // конец блока заполнения окрестностей ячеек
 
    for ( t_cells::iterator it( cells.begin( ) ), end( cells.end( ) ); it != end; ++it )
    {
        it->second->rp = rand( ) % 100 > 50 ? 5 : 6;
        it->second->gp = rand( ) % 100 > 50 ? 3 : 4;
    }
}
 
// ---------------------------------------------------------------------------
void __fastcall TForm1::btn_stepClick( TObject * Sender )
{
    static int step( 0 );
    static_cast < TButton * > ( Sender )->Caption = "Шаг " + IntToStr( ++step );
    bool passed( false ), uncharged_exists( false );
    t_cell * last_uncharged;
 
    for ( t_cells::iterator it( cells.begin( ) ), end( cells.end( ) );
        it != end;
        ++it, passed = false, uncharged_exists = false )
    {
        t_cell * cell( it->second );
        for ( t_neibs::iterator neib( cell->neibs.begin( ) ), neib_end( cell->neibs.end( ) );
            cells[ * neib ]->charged && !cells[ * neib ]->just_received && ( neib != neib_end );
            ++neib )
        {
            t_cell * neib_cell( cells[ * neib ] );
            if ( !neib_cell->charged )
            {
                uncharged_exists = true;
                last_uncharged = neib_cell;
                if ( neib_cell->rp == 5 )
                {
                    cell->pass_charge_to( neib_cell );
                    passed = true;
                }
            }
        }
        if ( !passed && uncharged_exists && ( cell->gp == 3 ) )
        {
            cell->pass_charge_to( last_uncharged );
        }
    }
    for ( t_cells::iterator it( cells.begin( ) ), end( cells.end( ) );
        it != end;
        ++it )
    {
        it->second->rp = rand( ) % 100 > 50 ? 5 : 6;
        it->second->gp = rand( ) % 100 > 50 ? 3 : 4;
        it->second->set_sh_params( );
        it->second->just_received = false;
    }
}
 
// ---------------------------------------------------------------------------
void __fastcall TForm1::shp1MouseDown( TObject * Sender, TMouseButton Button, TShiftState Shift, int X, int Y )
{
    static int charge_id( 1 );
    cells[ static_cast < TShape * > ( Sender ) ]->toggle_charge( charge_id++ );
}
// ---------------------------------------------------------------------------
Система такая: на форме картинка с разверткой, в дизайне на нее накидываем обычные шейпы поверх каждой из ячеек. Именуем их соответственно shp1, shp1a, shp1b, shp1c и тд, согласно развертке.
Чтобы все заработало, накидай оставшиеся шейпы и заполни список окрестностей до конца, в коде есть комментарии, как это доделать.

Вот примерно, как это выглядит:

Шейпы так же меняют цвет, как и раньше, но текст больше не выводится.

Код компилируется, проверял - так что вперед, доделывай. Помимо этого надо тебе понять, как все это работает, иначе не защитишься - но это уже другая проблема, и для преодоления оной надо иметь время и хотеть учиться. Чего-то из этого тебе пока явно не хватает...
Вложения
Тип файла: rar VCL forms test app.rar (159.1 Кб, 6 просмотров)
1
0 / 0 / 0
Регистрация: 27.03.2014
Сообщений: 41
07.06.2014, 18:24  [ТС]
здаров Владимир)) ну ты и мастер, даже не знаю как тебя благодарить)))) а на счет чего-то мне не хватает - все вместе наверное выручил сильно ты меня)) буду стараться, чтоб хотя бы самому доделать

Добавлено через 8 часов 30 минут
ах да, забыл спросить - а можно ли переделать ее так, чтоб не жать на кнопку каждый шаг, а один раз нажать и ждать появления этой магической конфигурации (пункт 6 документа Word)??
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
07.06.2014, 20:19
Да, код с кнопки перемести в обработчик таймера. Естественно, таймер для начала надо добавить на форму.

Добавлено через 6 минут

Не по теме:

Цитата Сообщение от Дикинов Мурат Посмотреть сообщение
даже не знаю как тебя благодарить))))
Сходи в Баксанское ущелье и сфоткай самые красивые места, чтоб я к вам заехал в гости )

1
0 / 0 / 0
Регистрация: 27.03.2014
Сообщений: 41
08.06.2014, 12:26  [ТС]
Цитата Сообщение от BRcr Посмотреть сообщение
void __fastcall TForm1::shp1MouseDown(
здаров Владимир)) накинул шейпы, прописал все! только вот заряд ставится только на shp1? а на остальные нет! пробовал менять как в старом коде на cell_mouse_down - не выходит(((

Добавлено через 1 минуту
Цитата Сообщение от BRcr Посмотреть сообщение
Сходи в Баксанское ущелье и сфоткай самые красивые места, чтоб я к вам заехал в гости )
а на этот счет не могу обещать))
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
08.06.2014, 12:31
Цитата Сообщение от Дикинов Мурат Посмотреть сообщение
только вот заряд ставится только на shp1? а на остальные нет!
Всем шейпам в дизайне надо задать один и тот же обработчик нажатия - shp1MouseDown. Вкладка Events...
0
0 / 0 / 0
Регистрация: 27.03.2014
Сообщений: 41
08.06.2014, 14:47  [ТС]
сделал как ты и сказал - все равно не ставит, какая то ошибка, не мог ты посмотреть..
Вложения
Тип файла: rar Новая папка.rar (8.02 Мб, 5 просмотров)
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
08.06.2014, 14:50
Какая ошибка?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.06.2014, 14:50
Помогаю со студенческими работами здесь

Клеточный автомат на торе
Добрый день! Нужно сделать клеточный автомат, который натянут на тор. Движок уже имеется (с учёт безграничности тора), остаётся только...

клеточный автомат жизни
Нужна ваша помощь. Необходимо заполнить матрицу 25 на 25 0 и 1. По краям матрицы 0. 0 - мертвая клетка 1 - живая клетка Если у...

Одномерный клеточный автомат
На рисунке показано несколько поколений одномерного клеточного автомата. У каждой клетки только два соседа — слева и справа, а поле...

Доработать клеточный автомат
Здравствуйте. Есть задание сделать клеточный автомат. Проект прикреплю. Как сделать так , чтобы по нажатию кнопки клетки закрашивались...

Клеточный автомат Винера-Розенблюта
Рябят, сто не так с кодом? Где ошибка? Пишет &quot; Встречено '.', а ожидалось ';'&quot; это в самом конце где END. Может еще что -то не так. Кто...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru