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

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

27.03.2014, 19:24. Показов 6815. Ответов 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
33455 / 21555 / 8248
Регистрация: 22.10.2011
Сообщений: 37,008
Записей в блоге: 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
33455 / 21555 / 8248
Регистрация: 22.10.2011
Сообщений: 37,008
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы Всем привет! Хочу поделиться свежим (и довольно. . .
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения: - добавлена многоязычность - добавлено снятие скриншотов - добавлено поддержание бафов хождения по воде (для жреца, дк и шамана) - и так, по. . .
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу))) Критические ошибки, мешающие компиляции и. . .
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата) Этот документ предназначен для того, чтобы новый чат Claude мог продолжить работу без необходимости заново разбираться в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru