Форум программистов, компьютерный форум, киберфорум
anaschu
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  

сукцессия 16. Общий обзор, в основном что бы другие ии поняли

Запись от anaschu размещена 29.06.2026 в 23:34
Показов 1101 Комментарии 0

# Передаточный документ: модель микоризной сукцессии (для нового чата)

Этот документ предназначен для того, чтобы новый чат Claude мог продолжить
работу без необходимости заново разбираться в истории и без риска повторить
уже закрытые вопросы или принять черновики за финальные решения.

---

## 0. Кто что хочет и в каком стиле работать

Пользователь — научный сотрудник, разрабатывает экосистемную модель
микоризной сукцессии (переход растительных сообществ луг → кустарники →
широколиственный лес → хвойный лес, опосредованный сменой типа микоризы
AM → EcM → возможно ErM). Не имеет опыта программирования на Python и
прямо просил двигаться через тестирование, без угадывания параметров.

**Важно для тона работы:** пользователь — соавтор реальных научных статей
по моделированию роста мицелия (клеточные автоматы, кинетика
Михаэлиса-Ментен, см. раздел 4). Это не любитель, а профессионал в своей
области, который учится конкретно Python и конкретно TDD-практикам.
Относиться к его гипотезам нужно с тем же уровнем критической проверки,
что и к любым научным гипотезам — не отбрасывать с порога, но и не
принимать без проверки на внутреннюю непротиворечивость и согласие с
литературой.

**Важно про риторический стиль некоторых материалов:** часть текстов
пользователя (см. раздел 5) написана в нарративном, антропоморфизирующем
стиле ("грибной эгоизм", "фосфорные войны", "предательство", "сейф
полифосфатов"). Пользователь явно подтвердил, что это **мнемонический
приём**, а не претензия на буквальную агентность гриба. Не нужно повторно
поднимать этот вопрос как этическую проблему — он закрыт. Но при переносе
этих идей в код или формулы стоит по умолчанию использовать нейтральные
термины (избирательная передача ресурса, истощение пула, переключение
партнёра), оставляя цветистые названия только как пояснительные синонимы.

---

## 1. Структура файлов и где что искать

В разговоре фигурировали следующие исходники (если они не приложены к
новому чату, нужно явно попросить пользователя прислать их снова):

- **`a.alp`** (`integralModel_base9_mycoryzae/integralModel_base9.alp`) —
САМЫЙ ПЕРВЫЙ AnyLogic-проект, на основе которого делался Python-перевод.
Содержит классическую кинетику Чантера-Торнли/Топажа с явным потолком
биомассы. См. раздел 3 — оттуда извлечены все параметры роста.
- **`b.alp`** — более новая версия той же AnyLogic-модели, ближе к текущему
Python-коду по структуре синтеза фермента (зависимость от `W_Fung`
напрямую, не от `dWm`, как в `a`).
- **`params.py`, `sd_core.py`, `agents.py`, `cycle.py`, `main.py`** —
ОСНОВНОЙ Python-перевод EcM-ядра (пятиагентная модель: гриб, MHB-помощник,
сапротроф-конкурент, фауна, растение). Это то, что подвергалось
рефакторингу в разделе 2. **Статус: рефакторинг начат, но НЕ завершён**
(см. раздел 2.4 — критическая находка про calibration-баг).
- **`fungus_core.py`** (из архива `fungal-succession.zip`, вместе с
параллельными `agents.py`, `cycle.py`, `main.py`, `params.py`) —
ОТДЕЛЬНОЕ, более новое черновое **AM-ядро** (арбускулярная микориза),
написанное пользователем как намеренный "шаг 1" перед добавлением
перехода AM→EcM. Использует `solve_ivp(method='Radau')` — неявную схему,
уже без явного Эйлера. **Статус: черновик, по признанию пользователя
нуждается в той же проверке, что EcM-ядро** (см. раздел 3.4).
- **Список инвариантов и проверок** — зафиксирован в артефакте
`checks_list.md` (создан в ходе разговора, есть приоритетный раздел 0
про clipping и явную схему — см. раздел 2 ниже, там же текст целиком
воспроизведён по смыслу).

Если у пользователя сохранились другие материалы (упоминались "записи",
возможно в экспорте старых чатов) — стоит спросить прямо, не предполагая,
что они релевантны без проверки (был случай, когда присланный архив
оказался экспортом личных данных другого аккаунта, не относящимся к делу
— такие файлы открывать не нужно, только если пользователь явно укажет
конкретный нужный фрагмент текстом).

---

## 2. EcM-ядро (`sd_core.py` и связанные файлы): статус рефакторинга

### 2.1. Что было найдено изначально (баги, подтверждённые экспериментально)

1. **4-кратная зависимость результата от шага интегрирования.** При
dt=1.0ч модель давала W_Fungus≈130г за 500ч, при dt=0.1ч — ≈488г за тот
же интервал. Причина — явный метод Эйлера на жёсткой системе (резкие
пороговые события + насыщающая кинетика Михаэлиса-Ментен).
2. **Накопитель `W_lyg_pol` застревал на нижнем ограничителе (50г)**
практически весь 500-часовой прогон — clipping-защита от ухода в минус
маскировала то, что реальный поток разложения был равен нулю
необоснованно долго.
3. **Разрыв связи:** `SaprotrophAgent.step()` принимает параметр
`W_lyg_pol_total`, но `cycle.py` никогда его не передаёт (всегда `None`)
— сапротроф изолирован от общего пула лигнина, конкуренции с грибом нет.
4. **pH статичен:** `H_plus_out` от гриба копится в `f.H_plus_total`, но
pH среды — фиксированный параметр, не накопитель. Закисление считается,
но не влияет обратно на систему.

### 2.2. Принятые решения по рефакторингу (зафиксированы, не отменены)

- **Приоритет 0 (выше всех остальных правок):**
- Не использовать произвольный clipping (`max(0, x)` с порогом вроде
`70.0`) как защиту от минуса. Заменить проверкой по машинной точности
(`~1e-9` относительно масштаба величины) — ловит только погрешность
округления, не маскирует ошибки величиной в десятки грамм.
- Перейти с явного метода Эйлера на неявную схему через
`scipy.integrate.solve_ivp` с методом `'Radau'` или `'BDF'`.
- Балансовый тест (conservation check): сумма потоков должна совпадать с
дельтой накопителей на каждом шаге.
- Полный список из 23 пунктов проверок + раздел "Приоритет 0" зафиксирован
в артефакте `checks_list.md` — стоит запросить у пользователя этот файл
или восстановить по смыслу из этого документа, если файл недоступен.

### 2.3. Что было РЕАЛЬНО переписано в `sd_core.py`

Код был переписан на `solve_ivp(method='Radau')`, с явным разделением
накопителей (`STATE_VARS`) и правой частью `_rhs()`. Clipping заменён на
проверку машинной точности с явным исключением (`ValueError`) при
нарушении баланса за её пределами. `k_lag` сделан функцией абсолютного
времени, а не накопителем-событием.

### 2.4. КРИТИЧЕСКАЯ НАХОДКА — рефакторинг вскрыл, что число 109.6г было артефактом

После устранения clipping модель **перестала воспроизводить эксперимент
Анненкова** (целевое 109.6г за 500ч). Без читерского скачка `W_lyg_mon`
к 70г на первом шаге, гриб в честной версии практически не растёт —
теряет массу на опад, рост близок к нулю.

**Причина, установленная диагностически (не предположение):**
old-версия (явный Эйлер + clipping) на первом шаге материализовала 70г
мономерного лигнина "из ниоткуда" через `max(70.0, ...)`, и именно этот
фиктивный резервуар кормил весь дальнейший рост гриба через формулу
`growth`. Без этого артефакта реальная скорость диффузии фермента
(`Z_flac_mc`) и синтеза (`MF_flacc_m`) в текущей параметризации
недостаточны для значимого роста за 500 часов.

Проверено и исключено: увеличение `Z_flac_mc` на 3 порядка не помогает —
бутылочное горлышко не в скорости диффузии, а в том, что сам источник
фермента (`W_flac_m`, пропорциональный текущей `W_Fung`) истощается
синхронно с падающей биомассой гриба — система входит в самоусиливающуюся
спираль убывания с первого шага.

**Вывод: верификация против эксперимента Анненкова в исходной модели
держалась на баге, а не на физике.** Это означает, что простая починка
clipping недостаточна — нужна **повторная калибровка** нескольких
параметров вместе, или (что выяснилось позже, см. раздел 3) — нужно
вернуть в формулу роста структуру с логистическим потолком по Топажу
(`Am`), которой не было в текущем Python-переводе вовсе.

**СТАТУС НА МОМЕНТ ПЕРЕДАЧИ: рефакторинг `sd_core.py` приостановлен на
этом месте.** Следующий шаг — не "доделать", а пересмотреть структуру
формулы роста с учётом раздела 3 ниже, прежде чем калибровать заново.

---

## 3. Параметры из `a.alp` (первоисточник) — извлечены, но не перенесены в код

При сравнении текущего Python-кода с исходным AnyLogic-проектом `a.alp`
обнаружено, что Python-перевод структурно ближе к **`b.alp`** (более
позднему упрощению), а не к `a.alp`. В `a.alp` использовалась полная
структура роста Чантера-Торнли/Топажа с явным потолком, которая при
упрощении в `b` и далее в Python была утрачена.

### 3.1. Извлечённые формулы и параметры из `a.alp` (формула роста мицелия)

```
dWm = (Um - Wm*Mm) * YGm

Um[гриб] = ( (Wm*q*Sm*(Am-Wm)/Am) / YGm + Mm*Wm/(1+alpha/Sm) )
* TFunct_Ucc * error_Vmax_ph_Ucc * Um_K_err
```

Где:
- `Wm` — текущая биомасса мицелия
- `Am = Wc/200` — **динамический потолок биомассы**, пропорциональный
текущему запасу субстрата в среде (`Wc`). НЕ фиксированная константа.
- `YGm = 0.83` — эффективность роста (г мицелия / г сахара)
- `Mm = 0.041/24 ≈ 0.00171` ч⁻¹ — базовое дыхание поддержания
- `q = 0.000024/24 ≈ 1e-6` м³/(г·ч) — коэффициент субстрат-лимитированного
роста
- `Sm = Smg/V_m` — концентрация субстрата в мицелии (с защитой от деления
на 0 в самом исходнике — хороший прецедент для наших же инвариантов)
- `alpha = 2000` — смягчающий делитель в члене поддержания.
**ВАЖНО: сам автор оригинальной модели (предположительно пользователь
в прошлом) оставил в `a.alp` комментарий: "Нечто странное и непонятное.
Присвоим-ка пока это нулю"** — то есть это не доверенная калибровочная
константа, а признанная автором слабость модели. НЕ переносить
механически без переосмысления.
- `TFunct_Ucc`, `error_Vmax_ph_Ucc`, `Um_K_err` — температурная и pH-
корректирующие функции, в этом документе формулы не извлечены, нужно
искать в `a.alp` дополнительно при необходимости.

### 3.2. Прямое следствие для рефакторинга EcM-ядра

Член `(Am-Wm)/Am` — это логистическое торможение роста при приближении
к динамическому потолку. Его ОТСУТСТВИЕ в текущем Python-коде — вероятная
структурная причина (помимо самого clipping-бага), почему модель без
костыля скатывается в нисходящую спираль, а не выходит на устойчивый
рост: без верхнего ограничителя система либо взрывообразно растёт, либо
(при недостаточном начальном импульсе) затухает, без промежуточного
устойчивого режима, который давала бы логистика.

**Рекомендация для следующего шага:** при возвращении к EcM-ядру —
сначала восстановить структуру `(Am-Wm)/Am` с `Am`, зависящим от
доступного субстрата, и только потом заниматься повторной калибровкой
`Z_flac_mc`/`MF_flacc_m`. Делать это в обратном порядке (калибровать
параметры без структуры потолка) пользователь уже пробовал неявно —
именно это и привело к зависимости от clipping-бага.

### 3.3. Трёхзонная структура мицелия (для EcM) — согласована, не реализована в коде

В ходе разговора (независимо от находок в `a.alp`) была согласована
биологически обоснованная структура EcM-мицелия из трёх зон:

1. **`W_core`** — ядро под чехлом эктомикоризы, наивысший метаболизм,
основной продуцент ферментов, питается углеродом (сахаром) от
растения-хозяина.
2. **`W_tips`** — кончики гиф, неинкапсулированы, метаболически активны
(хотя ниже, чем ядро), добывают минеральные ресурсы из среды.
3. **`W_old`** — старые внечехольные гифы, инкапсулированы, метаболизм
на порядки ниже (см. раздел 4 — статья 2017г даёт количественную
оценку: внешние/молодые гифы потребляют ресурсы на ПЯТЬ ПОРЯДКОВ
быстрее внутренних/старых из-за инкапсуляции).

**Потоки между зонами (согласовано):**
- `W_core → W_tips`: снабжение периферии (рост), пропорционально притоку
сахара и текущей массе.
- `W_tips → W_old`: естественное старение/инкапсуляция (характерное время
— недели).
- `W_old → опад`: физическое удаление старых внечехольных гиф (характерное
время — около МЕСЯЦА — это отдельный механизм от инкапсуляции, не то
же самое, что переход tips→old).
- **`W_tips ↔ W_core`: двунаправленный градиентный перенос** (по аналогии
с материнско-дочерним механизмом из статьи автора 2017г, см. раздел
4.1) — направление и скорость зависят от разности концентраций ресурса
между зонами, БЕЗ участия порога, работает всегда.
- **Поверх градиентного переноса — редкий активный механизм ресорбции**:
триггер — относительный (не абсолютный!) дефицит `W_core` ниже
фиксированной доли от "нормального" уровня. По договорённости с
пользователем, "нормальный уровень" = `Am/10` (десятая часть от
динамического потолка Топажа, см. 3.1). Делитель (10) — открытый
параметр калибровки, может быть позже изменён на 5 или 20.
При срабатывании триггера масса забирается из `W_tips`/`W_old` напрямую
в `W_core`, минуя обычный градиентный механизм.
- Порог дефицита — **по уровню, не по скорости** (явно подтверждено
пользователем, со ссылкой на прецедент из статьи Рахимовой и др. 2018г
про Aspergillus, см. раздел 4.2, где авторы тоже выбрали пороговый
уровень, а не сравнение скоростей, и явно объяснили почему).

**СТАТУС: эта структура согласована словесно и математически (формулы
потоков обсуждены), но НЕ реализована в коде ни для одного файла.**
Следующий шаг в работе — написать `sd_core_v2.py` (или аналогично
названный) с этой трёхзонной архитектурой, объединяющей находки из
разделов 3.1–3.3, на неявной схеме `solve_ivp`.

### 3.4. Та же структура для AM-ядра (`fungus_core.py`) — с поправкой пользователя

Пользователь подтвердил: AM-микориза тоже должна иметь:
- **Потолок роста** (аналог `Am` из Топажа) — это универсальное свойство,
не специфичное для типа микоризы.
- **Структуру `W_core`/`W_tips`**, НО с явным архитектурным ограничением:
у AM нет развитого внешнего мицелия (в отличие от EcM), значит должен
быть **дополнительный жёсткий потолок на `W_tips`** (или на отношение
`W_tips/W_core`) — у AM эта зона по определению малая, ограниченная по
объёму, в отличие от EcM, где `W_tips` может расти намного свободнее
(там это основной объём внешнего мицелия).

**Признание пользователя:** `fungus_core.py` в текущем виде написан на
чистой кинетике Михаэлиса-Ментен БЕЗ ограничения сверху по Топажу —
это было намеренное упрощение, которое, по итогам разговора о находках
в EcM-ядре, признано недостаточным. **Нужно вернуть структуру по Топажу
и в AM-ядро.**

**СТАТУС: `fungus_core.py` — черновик шага "1" в плане
AM→переход→EcM, нуждается в том же наборе проверок (балансовый тест,
граничные сценарии, добавление потолка по Топажу с AM-специфичным
ограничением на `W_tips`), что и EcM-ядро.**

---

## 4. Научная литература, использованная как опора (не голословные гипотезы)

### 4.1. Шумилов, Благодатский (2017). "Моделирование роста грибного
мицелия с помощью клеточного непрерывного стохастического автомата
четвёртого класса..." — Самарский научный вестник.

Ключевые находки, использованные в разговоре:
- **Материнско-дочерний механизм**: некоторые зрелые гифы становятся
"материнскими клетками", куда соседние клетки транспортируют ресурсы
при избытке, или откуда забирают при недостатке — двунаправленный,
автоматический градиентный перенос, без необходимости "решения" центра.
Это прямая опора для механизма `W_tips ↔ W_core` в разделе 3.3.
- **Количественная оценка асимметрии зон**: внешние (молодые,
неинкапсулированные) гифы потребляют ресурсы на ПЯТЬ ПОРЯДКОВ быстрее
внутренних (старых, инкапсулированных).
- Активный транспорт описывается кинетикой Михаэлиса-Ментен; пассивное
всасывание — отдельно.
- Модель верифицирована качественно (паттерны роста: крест в системе
агар-ловушки, "ведьмины кольца") но автор сам отмечает: "наиболее
детальные [биохимически-ориентированные] модели редки и не
верифицированы" — то есть степень количественной обоснованности
ограничена, это не повод считать всё точно откалиброванным.

### 4.2. Рахимова, Канин, Скичко (2018). "Анализ и математическое
моделирование процесса роста грибов рода Aspergillus" — Успехи в химии
и химической технологии.

Ключевая находка, использованная в разговоре:
- Авторы реализуют переключение режима метаболизма через
**кусочно-заданную индикаторную функцию** `m(t)`, привязанную к
пороговому **уровню** концентрации субстрата (`s ≤ s_min`), а не к
скорости его изменения. Явно объясняют: порог по уровню выбран, чтобы
механизм "не оказывал воздействия на фазы роста культуры" до
достижения порога — предсказуемая, не скрытая логика.
- Также используют относительный, не абсолютный показатель: `β`
(скорость отмирания) модулируется нелинейной функцией от `(x/x_max)`
— то есть относительно собственного максимума, а не фиксированного
числа. Это прямой прецедент для решения в разделе 3.3 про
"нормальный уровень = доля от потолка", а не фиксированная константа.
- Авторы используют явный метод Эйлера (Excel-реализация) — то есть та
же потенциальная проблема жёсткости, что мы нашли в EcM-ядре, может
присутствовать и здесь, хотя у них переключение случается один раз за
весь эксперимент, что менее катастрофично, чем повторяющиеся пороговые
события в нашей модели.

### 4.3. Чертов, Припутина, Шанин, Фролов (2024). "Роль эктомикоризы
древесных растений в динамике органического вещества лесных почв" —
Вопросы лесной науки.

Использовалась в начале разговора как опора для понимания биологии
азотного майнинга ЭМ: гриб разлагает устойчивое ПОВ ради азота для
СВОЕГО мицелия, не передавая его напрямую растению; передача азота
растению происходит только через промежуточный пул экскретов почвенной
фауны после поедания опада мицелия фауной ("триада Чертова": растение —
микориза — почвенная биота). Опад внешнего мицелия — 62% от всего опада
лесных сообществ (количественный факт, не гипотеза).

**Важное предостережение, зафиксированное в разговоре:** статья Чертова
не утверждает и не подтверждает более сильные тезисы пользователя про
"гриб как агент сукцессии, управляющий растением" — это отдельная,
не подтверждённая статьёй Чертова гипотеза (подробно разобрана и не
закрыта окончательно в начале разговора, см. раздел 6 — там приведены
аргументы за и против, баланс склоняется к "асимметрия скорости отбора
и монополия на фосфор — правдоподобные механизмы, но не доказанные
данными из присланных статей").

---

## 5. "Фосфорные войны" — содержательный механизм, очищенный от риторики

Пользователь подтвердил: антропоморфизирующая терминология
("эгоизм", "предательство", "сейф", "ядерное оружие") — мнемонический
приём для удержания сложной системы в голове, не претензия на буквальную
агентность. Дальше — механизм на нейтральном языке.

**Гипотеза перехода AM → EcM (для будущей реализации, после того как оба
ядра по отдельности пройдут проверку):**

1. Растение с "гибкой" стратегией аллокации углерода (привязывает отдачу
сахара к текущей доступности фосфора в почве) первоначально
поддерживает AM-симбиоз, потому что легкодоступный фосфор есть.
2. По мере истощения легкодоступного (растворимого) пула фосфора в почве,
растение с гибкой стратегией не увеличивает отдачу углерода грибу
(по своей экономной природе), что не даёт AM-грибу энергетической базы
для более затратной добычи фосфора из устойчивых минеральных форм.
3. Альтернативная растительная стратегия — стабильная, негибкая аллокация
фиксированной доли углерода грибу независимо от текущей обеспеченности
фосфором — даёт партнёрскому грибу (EcM) устойчивый энергетический
бюджет, достаточный для запуска более затратного механизма добычи
фосфора (растворение первичных минералов органическими кислотами —
оксалатный механизм, биологически документированная геомикология,
не гипотеза).
4. Гриб с таким устойчивым бюджетом способен избирательно направлять
добытый фосфор тому партнёру, который обеспечивает стабильный приток
углерода — что создаёт конкурентное преимущество для растений со
"стабильной" стратегией (типично — хвойные) в условиях, где
легкодоступный фосфор истощён.
5. Параллельно — закисление почвы (побочный продукт активности гриба,
количественный механизм у Чертова, см. 4.3) подавляет минерализацию
азота бактериями-сапротрофами, создавая дополнительный барьер для
растений, не связанных с этим устойчивым типом микоризного партнёра.

**Что в этой цепочке — документированная биология, а что — гипотеза
пользователя, требующая отдельной проверки:**
- Документировано: способность EcM растворять минералы через органические
кислоты (геомикология); закисление почвы и его влияние на
минерализацию N; разная "цена" разных микоризных партнёров для
растения (биологический рынок — реальная область исследований,
упоминалась в конце основного разговора как способ проверки).
- Гипотеза, требующая проверки: что переключение партнёра происходит
именно по сценарию "истощение → переключение → блокада" как
целостный, направленный сукцессионный механизм, а не как побочный
эффект независимых процессов. Документ из раздела 4.3 (Чертов и др.)
явно НЕ подтверждает более сильную версию этого тезиса.

---

## 6. Открытые мировоззренческие вопросы — НЕ требуют повторного обсуждения,
если пользователь не поднимет их сам

В начале разговора подробно обсуждался вопрос "управляет ли сукцессией
растение или гриб" — баланс аргументов: асимметрия скорости эволюционного
отбора (мицелий — дни/недели, дерево — десятилетия/века) и монопольный
характер доступа к фосфору через гриба на бедных почвах — это
правдоподобные механизмы, дающие грибу структурное преимущество в
"переговорной позиции", но это не было и не может быть окончательно
доказано на основе имеющихся текстовых источников (требует
эмпирических данных, которых не было предоставлено). Если новый чат
увидит этот вопрос всплывающим снова — стоит относиться к нему как к
открытому, не как к решённому в одну или другую сторону.

---

## 7. Рекомендуемый порядок действий для нового чата

1. Уточнить у пользователя, какие из файлов (раздел 1) у него есть под
рукой для текущей сессии — не предполагать, что всё будет переслано
автоматически.
2. Решить с пользователем: продолжать ли с EcM-ядра (раздел 2.4 —
незавершённый рефакторинг, требует структуры по Топажу из раздела 3.1)
или с AM-ядра (раздел 3.4 — черновик, тоже требует структуры по
Топажу плюс AM-специфичное ограничение на `W_tips`).
3. В любом случае — НЕ калибровать параметры до того, как структура
логистического потолка `(Am-W)/Am` встроена в формулу роста. Раздел
2.4 — прямое предупреждение о том, что происходит при калибровке без
этой структуры (зависимость от случайного бага).
4. Для трёхзонной структуры (раздел 3.3) — реализовывать на
`scipy.integrate.solve_ivp(method='Radau ')` с самого начала, не
откладывать переход на неявную схему на потом.
5. Балансовый тест и проверка на машинную точность (раздел 2.2) — должны
сопровождать каждое изменение кода, а не быть финальным шагом.
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 0
Комментарии
 
Новые блоги и статьи
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru