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

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

27.03.2014, 19:24. Показов 6724. Ответов 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
33448 / 21548 / 8248
Регистрация: 22.10.2011
Сообщений: 36,997
Записей в блоге: 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
33448 / 21548 / 8248
Регистрация: 22.10.2011
Сообщений: 36,997
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
[golang] Конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов.
alhaos 10.06.2026
Задача Реализовать конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов. Сигнатура func Fetch(urls string, maxConcurrent int) Result Пример urls :=. . .
[golang] Состояние гонки (race condition)
alhaos 10.06.2026
Состояние гонки (race condition) Состояние гонки (Race Condition) — это ошибка, возникающая при одновременном доступе нескольких горутин к одним и тем же данным без должной синхронизации. При этом. . .
Взрослые отношения, и почему они не получаются
kumehtar 09.06.2026
Когда в детстве ребёнок не получает от родителей чего-то важного, он лишается не просто приятных переживаний, а основы для формирования определённых внутренних качеств и навыков. Если ребёнок не. . .
[golang] Worker Pool
alhaos 09.06.2026
Worker Pool Worker Pool — паттерн конкурентной обработки задач в Go. Суть: фиксированное количество горутин-воркеров читают задачи из общего канала и пишут результаты в общий канал результатов. . . .
[golang] Pipeline
alhaos 08.06.2026
Pipeline Pipeline — паттерн конкурентной обработки данных в Go. Суть: данные проходят через цепочку независимых стадий, каждая из которых работает в своей горутине и общается с соседями через. . .
Свет внутри себя
kumehtar 07.06.2026
Пусть это будет здесь lIs4oanZS9Y
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу. До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru