С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.70/40: Рейтинг темы: голосов - 40, средняя оценка - 4.70
262 / 151 / 33
Регистрация: 29.06.2019
Сообщений: 1,515

Указатель указателя или Наследовать

14.08.2020, 12:42. Показов 8568. Ответов 111
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
здесь
я вот тоже подумала (про своих баранов) - если у меня 2 thread'a (gui и secondary) и в secondary задан классом (как здесь), в котором работает функция, которая отдаёт массив в класс, ход обработки массива методом этого (куда отдаёт) класса - отразить в gui хочется... !?!
вот передаю указатель на Form из класса gui в класс secondary worker thread... (как по примеру #222)
а дальше?..
указатель на указатель параметром в др класс передавать? (что-то не проходит)?
передаю банально:
C++
1
2
3
4
5
6
public:
    const Vector<Vector<String>> & m_vUrls;
    MyAppWindow* m_pw;
    
    // Constructor  
    loadV(const Vector<Vector<String>>& spisok, MyAppWindow* m_pw);
ну или **
как не пытаюсь передать указатель на указатель или тот же указатель на gui в др класс - выдаёт, что инициализация gui возможна только в первичном потоке...
- а ведь только передать хочу указатель на то, что уже было проинициализировано в первичном потоке... т.е. на сам gui
ИЛИ ???
может, мне лучше наследовать 2-й класс (loadV) от класса worker и в нём поле "принятый из gui указатель" сделать protected?
(чтобы не заморачиваться передачей указателя на gui и уж тем более транслированием в gui поток из класса, куда передаём массив после его сбора в классе worker - который во вторично потоке от gui)...
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.08.2020, 12:42
Ответы с готовыми решениями:

Сохранить адрес из указателя в другой указатель, а потом первый указатель удалить
Добрый день всем. Возмём простейший пример: #include &lt;iostream&gt; using namespace std; int main() { int* p1 = new...

Передача умного указателя в функцию принимающую указатель на указатель
Итак имеется функция со следующим параметром: HRESULT __stdcall Function(SomeClass **param); В случае, когда создаём обычный...

Как получить ссылку на указатель или указатель на указатель в массиве?
В процессе реализации сортировки пузырьком натолкнулся на такую проблему: как поменять значения указателей, передаваемых в функцию. Если...

111
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
19.08.2020, 23:16
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от JeyCi Посмотреть сообщение
хотя она всё-таки анонимная функция(-объект)
Функтор - это общее понятие.
Частные случаи функтора в С++:
* Лямбда
* Указатель\ссылка на функцию
* Класс с переопределенным оператором ()
1
262 / 151 / 33
Регистрация: 29.06.2019
Сообщений: 1,515
20.08.2020, 10:42  [ТС]
Цитата Сообщение от JeyCi Посмотреть сообщение
захватить [this] в workerthread() попробую завтра... чтобы попробовать в лямбде поработать с классом loadV...
это пока сложновато для меня... да и усложнения, наверно, не принесут доп. удобств в кодировании, а в сопровождении тем более -- если делать такой ход конём - функтор в конструкторе loadV подрядить... пока не вижу ни возможности (ни обоснования её отсутствия ) ... думается всё-таки, что в таком варианте (1 рабочая абстракция с 2мя потоками - 1 для view и 1 для логики) - функтор - это лишнее усложнение будет
===
P.S.
Цитата Сообщение от JeyCi Посмотреть сообщение
беру в оборот её инстанс => могу(должна) использовать его
поправила #36 - передала параметром pointer на экземпляр того MyAppWindow, в котором надо отразить в листбокс (т.е. текущий рабочий настоящий объект)... (по желанию можно pointer на MyAppWindow упростить до pointer'a на ArrayCtrl)...
абстракции с функтором ещё буду учиться писать - если класс MyAppWindow всё-таки разрастётся настолько, что, действительно, потребует быть декомпозированным...
P.P.S.
пока во вложении как-то так
MyAppWindow::WorkerThread
C++
1
2
3
4
5
6
7
8
9
10
11
12
void MyAppWindow::WorkerThread ( )
{   
    // ЗДЕСЬ из др класса вернули вектор... упрощённо:
    const Vector<String>&  MyVector = {"A","B","C","D"};
    loadV d(MyVector);
    ArrayCtrl* pl=&arrV;
    d.showDone(this);   // тестово обработка массива - доступ есть...
        
    PostCallback([=] { 
        btnLoad.Enable();
    }); 
}

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void loadV::showDone(MyAppWindow* w) { 
    MyAppWindow* m_w=w;
    size_t n=m_spisok.GetCount(); 
    for(int i = 0; i < n; i++) {
        String s=m_spisok[i];
        {
            GuiLock __; 
            Ctrl::Call([=] {                
                std::function<void(MyAppWindow*, String)> f = &MyAppWindow::AddItem;            
                PromptOK(s);
                f(w, s);        
            });
        }       
    }
}
с "фэн-шуем" ещё на вы ...
думаю, на практике приложится...
ну хоть с абстракцией и объектом, созданным ей, разобрались - где, что и как...
функтор впридачу
Вложения
Тип файла: zip mv_Without_Decompose_With_Functor.zip (4.2 Кб, 1 просмотров)
0
262 / 151 / 33
Регистрация: 29.06.2019
Сообщений: 1,515
20.08.2020, 10:50  [ТС]
за пример - спасибо...
0
736 / 700 / 110
Регистрация: 29.05.2015
Сообщений: 4,267
20.08.2020, 11:42
Qt. Программа: цыплята (20 шт - 20 потоков) с разной скоростью клюют по зёрнышку с тарелки. На тарелке 100 зернышек. Когда тарелка пустеет, цыплята зовут маму, она приходит и наполняет тарелку. 20 потоков шлют сигналы в окно, и в окне отображается процесс поедания зёрен. Это то, что вы хотите?
Миниатюры
Указатель указателя или Наследовать  
Вложения
Тип файла: zip 123.zip (5.11 Мб, 3 просмотров)
0
262 / 151 / 33
Регистрация: 29.06.2019
Сообщений: 1,515
20.08.2020, 16:42  [ТС]
Цитата Сообщение от alexu_007 Посмотреть сообщение
Qt. Программа: цыплята (20 шт - 20 потоков)
alexu_007, спасибо, я уже поняла, что самый простой путь упрощения - смена Фреймворка на Qt (для Event-driven Architecture разработки)... но пока основы познавать - всё равно где - даже больше вопросов можно покрутить на более простом Фреймворке - ради практики и знакомства с основами...


Добавлено через 9 минут
Цитата Сообщение от alexu_007 Посмотреть сообщение
Когда тарелка пустеет, цыплята зовут маму, она приходит и наполняет тарелку. 20 потоков шлют сигналы в окно, и в окне отображается процесс поедания зёрен. Это то, что вы хотите?
не совсем...
возможно, 1 producer и будет несколько consumer'ов (в ооочень будущем)... пока producer'a просто сливать в txt... consumer'ы параллельно парсят и льют куда скажешь (txt или db или даже просто msgBox общее количество байт или потоков обработанных... ну и в gui gridview)...
ну и обслуживающие всё это дело классы...
в окно можно то, что от producer'а пока... потом то, что от consumer'ов (~600 шт), но главное - ключевые Exception'ы (даже по каждому row потоку, если будут)... и общую кнопку остановить всё и всех...

Не по теме:

вобщем, чтобы цыплята ещё сообщали, если у них несварение желудка или просто зёрна несъедобные...
и чтобы по команде переставали есть все сразу...
сам по себе процесс поедания не интересует - лишь результат... ;) async устроит с его .get()


Добавлено через 11 минут
Цитата Сообщение от JeyCi Посмотреть сообщение
потом то, что от consumer'ов (~600 шт),
хотя на 2ядра cpu - многовато потоков... посмотрю - если consumer'ов удастся настроить в основном на работу с кучей, то пусть бы там каждый и ковырялся в своём участке динамически выделенной памяти... надо подумать ещё
p.s.
(пока на распутье по-др нюансу [даже не этой ветки] - поэтому к этому тз ещё вернусь потом)

Добавлено через 3 часа 0 минут
Цитата Сообщение от JeyCi Посмотреть сообщение
1 producer и будет несколько consumer'ов (в ооочень будущем)...
через ConditionVariable...
или Semaphores (и для WindowsXP)
0
415 / 150 / 48
Регистрация: 02.06.2016
Сообщений: 364
20.08.2020, 21:15
Лучший ответ Сообщение было отмечено JeyCi как решение

Решение

C++
1
2
3
4
5
6
7
8
void loadV::showDone ( Function < void ( String ) > f )
{
 
    int n = m_spisok.GetCount();
 
    for ( int i = 0; i < n; i++ )
        f ( m_spisok[i] );
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void MyAppWindow::AddItem ( String strItem )
{
    GuiLock __;
    
    PromptOK ( strItem );   
    arrV.Add ( ~strItem );  // The ~ operator calls the object's GetData() function
    //strItem <<= Null;     // Manually clear the item
}
...
void MyAppWindow::WorkerThread ( )
{
    // ЗДЕСЬ из др класса вернули вектор... упрощённо:
    const Vector<String>&  MyVector = {"A", "B", "C", "D"};
    loadV d ( MyVector );
 
    //Метод текущего класса можем передать с помощью макроса без лямбды:
    d.showDone ( THISFN ( AddItem ) );  // тестово обработка массива - доступ есть...
    
    PostCallback ( [=]
    {
        btnLoad.Enable();
    } );
}
1
262 / 151 / 33
Регистрация: 29.06.2019
Сообщений: 1,515
21.08.2020, 16:57  [ТС]
Цитата Сообщение от GoshaM Посмотреть сообщение
//Метод текущего класса можем передать с помощью макроса без лямбды:
d.showDone ( THISFN ( AddItem ) );
вот, действительно, надо зннать, где искать
Despide the power of C++11, there are still situations where it is better to put the callable code into member function. C++11 lamda syntax can be tedious in that case. MemFn template function and THISFN serve to reduce typing overhead.
... как читать, и как использовать...
Благодарю! именно там и хотела GuiLock использовать по логике, где вы его указали...
(слова коллбэки и макросы для меня ещё звучат страшно и по-новому - оттого и читаю по-диагонали в надежде найти знакомые для моей незрелой в ооп логики вырианты - вот и не обращаю внимание на главное, когда оно новое)

Добавлено через 12 минут
P.S.
кстати с таким макросом формулировка "Callback Hell", вероятно, отпадает сама собой... THISFN - красиво и локанично
0
262 / 151 / 33
Регистрация: 29.06.2019
Сообщений: 1,515
22.08.2020, 10:04  [ТС]
Оптимальный путь новичка в мире C++
(подборка книг)
автор №5 - "любитель разрывать зависимости"
0
262 / 151 / 33
Регистрация: 29.06.2019
Сообщений: 1,515
22.08.2020, 18:50  [ТС]
для инфо -
Особенности Qt: слоты и сигналы, описание QObject и QApplication, виды окон и т.д.
0
262 / 151 / 33
Регистрация: 29.06.2019
Сообщений: 1,515
28.08.2020, 07:27  [ТС]
и дочитать...
0
736 / 700 / 110
Регистрация: 29.05.2015
Сообщений: 4,267
28.08.2020, 11:05
Цитата Сообщение от JeyCi Посмотреть сообщение
не совсем...
возможно, 1 producer и будет несколько consumer'ов (в ооочень будущем)... пока producer'a просто сливать в txt... consumer'ы параллельно парсят и льют куда скажешь (txt или db или даже просто msgBox общее количество байт или потоков обработанных... ну и в gui gridview)...
ну и обслуживающие всё это дело классы...
в окно можно то, что от producer'а пока... потом то, что от consumer'ов (~600 шт), но главное - ключевые Exception'ы (даже по каждому row потоку, если будут)... и общую кнопку остановить всё и всех...
Вначале вы вроде хотели, что-бы поток(и) слал информацию о процессе выполнения, а форма (gui) это отображала. Теперь у вас как-то всё немного усложнилось, так что вас стало трудно понять. Я обычно разбиваю задачу на части, и решаю по частям (не знаю, может гуру программирования сразу пишут код от начала до конца?). То есть как я понял вашу задачу:

1. Запустить несколько (много) потоков
2. Отобразить ход выполнения потоков на форме
3. По нажатию кнопки останавливать процессы (ставить на паузу)

Вот в такой последовательности я бы и действовал. Нет смысла заниматься визуализацией потоков, если у вас не получается их запускать. Нет смысла заниматься остановкой процессов, если вы не видите их работу, и не можете проконтролировать старт/стоп. Ну и так далее.

Начал бы я с одного потока, потом можно два, потом много. Нет смысла сразу бросаться в омут многих потоков (и получать множество ошибок), пока не отлажен хоть один.

Добавлено через 1 минуту
Цитата Сообщение от JeyCi Посмотреть сообщение
не совсем...
возможно, 1 producer и будет несколько consumer'ов (в ооочень будущем)... пока producer'a просто сливать в txt... consumer'ы параллельно парсят и льют куда скажешь (txt или db или даже просто msgBox общее количество байт или потоков обработанных... ну и в gui gridview)...
ну и обслуживающие всё это дело классы...
в окно можно то, что от producer'а пока... потом то, что от consumer'ов (~600 шт), но главное - ключевые Exception'ы (даже по каждому row потоку, если будут)... и общую кнопку остановить всё и всех...
Вначале вы вроде хотели, что-бы поток(и) слал информацию о процессе выполнения, а форма (gui) это отображала. Теперь у вас как-то всё немного усложнилось, так что вас стало трудно понять. Я обычно разбиваю задачу на части, и решаю по частям (не знаю, может гуру программирования сразу пишут код от начала до конца?). То есть как я понял вашу задачу:

1. Запустить несколько (много) потоков
2. Отобразить ход выполнения каждого потока на форме
3. По нажатию кнопки останавливать процессы (ставить на паузу)

Вот в такой последовательности я бы и действовал. Нет смысла заниматься визуализацией потоков, если у вас не получается их запускать. Нет смысла заниматься остановкой процессов, если вы не видите их работу, и не можете проконтролировать старт/стоп. Ну и так далее.

Начал бы я с одного потока, потом можно два, потом много. Нет смысла сразу бросаться в омут многих потоков (и получать множество ошибок), пока не отлажен хоть один.
0
262 / 151 / 33
Регистрация: 29.06.2019
Сообщений: 1,515
28.08.2020, 21:01  [ТС]
Цитата Сообщение от alexu_007 Посмотреть сообщение
Вначале вы вроде хотели, что-бы поток(и) слал информацию о процессе выполнения,... Теперь у вас как-то всё немного усложнилось, ... Я обычно разбиваю задачу на части
так же... поэтому понятное дело - усложняется со временем...
Цитата Сообщение от alexu_007 Посмотреть сообщение
1. Запустить несколько (много) потоков
вы приложили пример откомпилированный, поэтому я НЕ вижу исходников => я не знаю, какова была ваша реализация цыплят... и были ли цыплята - потоками-consumer'ами?... и была ли их мама потоком-producer'ом?... и, если да, то как была настроена синхронизация? (вероятно, 1 мьютекс и 1 condition variable)?... или вообще др. механизм?...
а вообще очень много потоков лучше в thread-pool'e запускать (уже обсудили это на моей прежней ветке)...
===
Цитата Сообщение от alexu_007 Посмотреть сообщение
Нет смысла сразу бросаться в омут многих потоков
пока (уже) не в потоках проблема, а в общей иерархии классов (да и нужна ли иерархия...)... поэтому передали функтор - и то замечательно - асинхронная подгрузка member-method'ом налажена - уже шаг вперёд... кнопка bStopped пока нет - надеюсь, не будет шага назад... но о продолжении "линии жизни" рабочего потока ещё думаю... многое можно скинуть на сторону в др. классы... и даже др. потоки... сраслось бы всё общим планом в итоге всей архитектуры
===
Цитата Сообщение от alexu_007 Посмотреть сообщение
Нет смысла заниматься визуализацией потоков, если у вас не получается их запускать.
но запускать то, что пока не надо (или надо в др. виде) - тоже не comme il faut...
вот видела сегодня интересную ветку - Многопоточность и сигналы/слоты - про время жизни потока и способ его коммуникации с GUI (там линк есть)... странно оно всё как-то в Qt - переварить ещё надо
Thus, a developer who wishes to invoke slots in the new thread must use the worker-object approach; new slots should not be implemented directly into a subclassed QThread.
что за the worker-object approach?..
= пытаюсь прикинуть параллели с Event'ами в U++ ...
и для U++фреймворка - с кнопкой для bool &bStopped - пока только такой вариант передачи или захвата вижу... - по ссылке &

Добавлено через 5 минут
но голова пока забита "раскадровкой" подзадач по классам... 1 класс - 1 ответственность
0
262 / 151 / 33
Регистрация: 29.06.2019
Сообщений: 1,515
29.08.2020, 11:07  [ТС]
Цитата Сообщение от JeyCi Посмотреть сообщение
worker-object approach?..
- здесь;
и здесь;
Два способа использования QThread
и там же совет:
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
смотри на обобщенные функторы Александреску, а в C++11 есть чудесные лямбда выражения.
глава 5
P.S.
споткнулась вчера об эту ветку (Function) - вариант
MySource(double data) : FuncSource(&Calc), data(data) {} // COMPILER ERROR
так и не заработал... наследование функторов как-то синтаксически не знаю, как выразить?.. (init по линку у меня не срабатывает)

Добавлено через 1 час 52 минуты
только если так (без ссылки на member-function, а лямбдой)
Кликните здесь для просмотра всего текста
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
#include <Core/Core.h>
 
using namespace Upp;
 
class FuncSource {
protected:
    Function <double(double)> function;
 
public:
    // Constructor of Parent - with functor as param
    FuncSource(Function <double(double)> function) : function(function) {}
    double f(double x)  {return function(x);}
};
 
class MySource : public FuncSource {
public:
    // Constructor of Child - with double data as param 
    MySource(double data) : FuncSource([=](double x) {return Calc(x);}), data(data) {} 
    
    double Calc(double x) {return x + data/10;}
    
private:
    double data;
 
};
 
CONSOLE_APP_MAIN
{       
    double d=10.0;
    MySource a(d);
    double b=a.Calc(5.0);
    Cout()  << DblStr(b) <<  '\n';
}
0
262 / 151 / 33
Регистрация: 29.06.2019
Сообщений: 1,515
30.08.2020, 21:27  [ТС]
и всё-таки класс Event<> и Gate в U++ ещё поковырять...
Цитата Сообщение от DrOffset Посмотреть сообщение
JeyCi, в общем случае - это не очень хорошая идея дергать GUI из другого потока напрямую, даже под локом. Лучше, когда библиотека дает возможность отправить "запрос" на изменение GUI. Т.е. в вашем поточном методе вы могли бы создать "событие" изменения GUI, и отправить его основному потоку. А тот уже когда это возможно и безопасно выполнил бы его на своей стороне. Тогда лочить GUI не пришлось бы, и проблемы бы вашей не возникло.
deadlock

Добавлено через 2 минуты
ProcessEvents
0
736 / 700 / 110
Регистрация: 29.05.2015
Сообщений: 4,267
30.08.2020, 22:37
Допилил кнопки пауза и стоп, но работают нестабильно, иногда приложение вылетает с кодом 3 (не знаю что такое):
Вложения
Тип файла: zip deti.zip (547.8 Кб, 3 просмотров)
1
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
30.08.2020, 23:09
alexu_007, как минимум неверный тип соединения сигнала и слота и отсутствует синхронизация разделяемых ресурсов - массива и двух булевых переменных.
0
736 / 700 / 110
Регистрация: 29.05.2015
Сообщений: 4,267
30.08.2020, 23:26
А какая там нужна синхронизация? Потоки никак не зависят друг от друга, результаты вычислений не передаются и никак не используются. Вся задача - нарисовать циферку на экране. Включилась переменная (флаг) в true - поток даже не останавливается, только перестает генерить сигналы. Уж это действительно пауза. Потоки флаг не переключают. Почему там возникает аварийное завершение - я не понимаю.
0
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
30.08.2020, 23:51
Цитата Сообщение от alexu_007 Посмотреть сообщение
результаты вычислений не передаются и никак не используются.
Как же не передаются? Мама у вас работает в основном потоке с общим для всех с контейнером tarelka, а детки меняют его у себя. Контейнеру нужна синхронизация.

Тоже самое касается булевых переменных. У них изменение в основном потоке, и чтение во всех дочерних.
0
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
31.08.2020, 00:06
Вот, исправил очевидные недочеты. Код особо не менял, чтобы он был для вас узнаваем.

deti.zip
1
262 / 151 / 33
Регистрация: 29.06.2019
Сообщений: 1,515
31.08.2020, 18:15  [ТС]
?? вот всё-таки чисто технически:
если событие - это сигнал (отправляемый в GUI, например),
например макросом коллбэка, как в примере GoshaM...
слот (в Qt) надо настроить в GUI...
в U++ просто запускаем member-function от gui...
в C# "события - это сигналы, делегаты - это слоты"
=== И ОБРАТНО:
в Qt при обратном запуске сигнала (из gui в поток), например, смены флага isInterruptionRequested - на стороне workerthread'a надо настроить, полагаю, слот для его приёма и обработки... имхо
?? а в U++ если кнопкой запускаем Event в btnStopped смены флага isInterruptionRequested - как правильно по уму отловить в потоке? синхронизация через мьютекс?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.08.2020, 18:15
Помогаю со студенческими работами здесь

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

Разыменование указателя на указатель
в функцию передается указатель на указатель класса, что бы получить доступ к методам класса нужно разименовать указатель так ? MyClass...

Инкремент указателя на указатель
Добрый день!!! Ребят, подскажите пожалуста, как выполнить инкремент указателя на указатель. Программа аварийно завершается. Я так понимаю,...

Передача указателя на указатель в функцию
Вопрос к знатокам: Есть абстрактный класс(Symbol) и его производный (Cross). Создаю указатель этого абстрактного класса(Symbol *first) ,...

Передача в функцию указателя на указатель
Добавление нового элемента в начало списка: void Add_Beg(List **u, Data &amp;x) // Почему в 1 аргументе функции указатель на указатель? { ...


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru