Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
1 / 1 / 0
Регистрация: 23.11.2010
Сообщений: 136

Присвоение значения переменной vector of tuple

19.06.2019, 08:04. Показов 2965. Ответов 15

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
    Elevator::current_floor = 8;
    std::get<1>(loaded_users[0])=  Elevator::current_floor; 
    Elevator::current_floor = 17;
 
    for (const auto &i : loaded_users)
        std::cout<< std::get<1>(i) << std::endl;
Выдаст 8. А надо 17.

Как сделать так, чтобы при изменении Elevator::current_floor менялось и значение вектора loaded_users? Да, знаю про указатели, но что-то не допру.
Да, та Elevator::current_floor объявлена как static. Но если в данном примере абстрагироваться и создать не static переменную, а int причем конкретно в данном scope, будет тот же результат.

Хочется, чтобы при изменении Elevator::current_floor автоматом менялось значение одного из tuple вектора loaded_users.
А так же, чтобы можно было потом отключить это изменение.

Добавлено через 26 минут
Пожалуй, добавлю сюда прототип кода. Это урезанный псевдокод. Идея такая, что когда лифт достигает определенного этажа, он берет с собой ползьзователя. Я для этого создал вектрр таплов Elevator::loaded_users. Данные в него записываются из вектора таплов active_users. Но пока я чисто проверяю на active_users, как бы это сработало. Этот код не заработает, я его пока писал чисто в блокноте для логического представления, так как раньше прога работала лишь с одним пассажиром. (прототип программы), теперь перехожу к нескольким.



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
....while ()
 
int Elevation::Loaded_Pass_to_Dest(std::vector< std::tuple<int, int, int> >& active_users, int dst_floor_end)
{
    int *ucf = &std::get<1>(active_users[0]);
    
    
    
    for (int j=0;j<active_users.size();j++)
    {   
    int *u_begin[k] = &std::get<1>(active_users[k]);    
    int *u_dest[k] = &std::get<2>(active_users[k]);
    }
    
//  while (Elevator::current_floor!=dst_floor_end) {....
    
    
    if (Elevator::current_floor > dst_floor_end)
    {
        direction= DOWN;
        El_Move(direction); // set dir 
    }
    
    if (Elevator::current_floor < dst_floor_end) // set dir
    {   direction= DOWN;
        El_Move(direction);
    }
    
    
        for (int k=0;k<active_users.size();k++)
    {   
       if (Elevator::current_floor==&std::get<1>(active_users[k])) 
           {
       El_Move(LOAD);    
     [B]  // std::get<1>(active_users[k]=& Elevator::current_floor;[/B]
 
       
       
       Elevator::loaded.push_back({ std::get<0>(active_users[k]),std::get<1>(active_users[k]),std::get<2>(active_users[k) });
           }
            if (Elevator::current_floor==&std::get<2>(active_users[k])) 
           {
       El_Move(UNLOAD);    
       &std::get<1>(active_users[k]=Elevator::current_floor;
       Elevator::loaded.push_back({ std::get<0>(active_users[k]),std::get<1>(active_users[k]),std::get<2>(active_users[k) });
           }
           
    }
    }
    int Elevation:: El_Move(direction dir, & active_users )
 
{
    switch (dir)
    {
    case UP:
        Elevator::current_floor = Elevator::current_floor++;
        std::cout << "Elevator moves to " << Elevator::current_floor << std::endl;
        timer = timer + 5;
        break;
    case DOWN:
        Elevator::current_floor = --Elevator::current_floor;
        std::cout << "Elevator moves to " << Elevator::current_floor << std::endl;
        timer = timer + 5;
        break;
    case LOAD:
        Elevator::User_Open_Door_Load();
        timer = timer + 6;
        
        break;
    case UNLOAD:
        Elevator::User_Open_Door_UnLoad();
        timer = timer + 6;
        break;
    }
    return Elevator::current_floor;
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.06.2019, 08:04
Ответы с готовыми решениями:

Присвоение значения переменной из функции
Доброго времени суток!!! Например в Pascal можно так: procedure myinc(var a:integer); begin a:=a+1; end; begin ...

Присвоение переменной случайного значения
Нашел такой рабочий код #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;ctime&gt; using namespace std; int main(int...

Присвоение значения переменной в классе
возможно ли присвоение значения переменной в классе? class xxx { public : void rrr(); public : int x=5; // ??? };

15
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
19.06.2019, 08:31
Цитата Сообщение от streamc Посмотреть сообщение
C++
1
Elevator::current_floor = 8; std::get<1>(loaded_users[0])= Elevator::current_floor; Elevator::current_floor = 17;
Цитата Сообщение от streamc Посмотреть сообщение
Как сделать так, чтобы при изменении Elevator::current_floor менялось и значение вектора loaded_users? Да, знаю про указатели, но что-то не допру.
streamc, а если бы было:
C++
1
2
3
4
5
6
7
//где-то 
loaded_users[10];
////////////////
////////////////
int current_floor = 8;
loaded_users[0]=current_floor;
current_floor = 17;
Вы бы тоже спросили
Как сделать так, чтобы при изменении Elevator::current_floor менялось и значение элемента массива loaded_users?
?
0
1 / 1 / 0
Регистрация: 23.11.2010
Сообщений: 136
19.06.2019, 09:17  [ТС]
IGPIGP, ну ясен пень - нет. Но в том и дело, как это бы связать указателем.
Хочется сразу связать вектор таплов с переменной Elevator::current_floor, чтобы по возможности эту связь отключить потом.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
19.06.2019, 09:49
Лучший ответ Сообщение было отмечено streamc как решение

Решение

streamc, туплы хороши для простых вещей типа литеральных классов. Делать на них сложные зависимости, вряд ли хорошая идея. Я красивых вариантов не знаю.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <vector>
#include <tuple>
#include <functional>
using namespace std;
int main()
{
 tuple<int, int, int> tupa[]{{1,2,3}, {4,5,6}};
 vector<reference_wrapper<tuple<int, int, int>>> tupV(begin(tupa), end(tupa));
get<0>(tupa[0])=345;
 tuple<int, int, int> &tupo=tupV[0];
 cout<<get<0>(tupo);
 cout<<endl;
get<0>(tupa[0])=456;
 cout<<get<0>(tupo);
 
cin.get();
return 0;
}
может кто-то подкинет по-лучше вариант. Но я бы не стал с этим заморачиваться. Написал бы класс который биндит одно на другое и было бы хоть и более многословно, но и более понятно.
1
1 / 1 / 0
Регистрация: 23.11.2010
Сообщений: 136
19.06.2019, 10:09  [ТС]
IGPIGP, спасибо ,ваш код почитаю. Сейчас сам подумаю над алгоритмом, так как та задача все-равно из него возникла. Есть в голове, скажу так, варианты, реализации, но не сформированные. Сделаю, чтобы при достижении лифтом этажа, двигался и пассажир. Только будет ли там массив с пользователем в классе лифта, либо отдельный массив, указывающий, что лифт достиг этажа пользователя, решу. Или метки, работающие при достижении результата. Как например, движение с лифтом, только при достижении этажа пользователя.
0
 Аватар для shelluser
146 / 39 / 26
Регистрация: 11.05.2019
Сообщений: 122
19.06.2019, 10:23
Цитата Сообщение от streamc Посмотреть сообщение
Сделаю, чтобы при достижении лифтом этажа, двигался и пассажир.
Сделать loadedusers членом класса Elevator, тогда по позиции лифта
известна позиция loadedusers
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
19.06.2019, 10:49
Цитата Сообщение от streamc Посмотреть сообщение
Да, та Elevator::current_floor объявлена как static.
Зачем?

Цитата Сообщение от streamc Посмотреть сообщение
Есть в голове, скажу так, варианты, реализации, но не сформированные. Сделаю, чтобы при достижении лифтом этажа, двигался и пассажир. Только будет ли там массив с пользователем в классе лифта, либо отдельный массив, указывающий, что лифт достиг этажа пользователя, решу. Или метки, работающие при достижении результата. Как например, движение с лифтом, только при достижении этажа пользователя.
Думаю, здесь лучше сделать так - для пользователя лифта имеют значение только две характеристики - вес (можно и без него) и этаж, на который он едет.
В классе Лифт есть массив пользователей, которые в нём едут - std::vector<std:air<TWeight, TFoor>>.
Когда человек заходит в лифт, то в этот массив добавляется элемент, расчитывается общий вес и "нажиматся кнопка" - задаётся этаж, на котором лифт остановливится.
Когда лифт останавливается на этаже из массива удалятся все элементы, этаж которых равен текущему.
0
1 / 1 / 0
Регистрация: 23.11.2010
Сообщений: 136
19.06.2019, 15:49  [ТС]
Цитата Сообщение от shelluser Посмотреть сообщение
Сделать loadedusers членом класса Elevator,
Да, членом класса элеватор будет. А вот второе предложение не понял, но сам реализую.

Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Когда лифт останавливается на этаже из массива удалятся все элементы, этаж которых равен текущему.
А тут уже интересней. Можно в массив, скажем, добавить лишь индекс, а потом вот поиск по этим элементам реализовать - это и есть вопрос знаний языка и оптимизации. Но я лучше сделаю, потом буду уже решать, как лучше.
Тут вопрос еще генерации, раз уж зашла речь о лифте. Скажем, пока я могу генерировать пассажиров, сначала сгенериров их вектор (так было изначально) или в процессе движения, на каждом этаже случайно подключать пассажира. Но лучше всего по времени и как-то связать это время с реальным выполнением, вот это я еще не обдумывал.
0
 Аватар для shelluser
146 / 39 / 26
Регистрация: 11.05.2019
Сообщений: 122
19.06.2019, 16:30
Цитата Сообщение от streamc Посмотреть сообщение
Да, членом класса элеватор будет. А вот второе предложение не понял, но сам реализую.
Цитата Сообщение от streamc Посмотреть сообщение
чтобы при изменении Elevator::current_floor менялось и значение вектора loaded_users?
не нужно дополнительно менять положение человека едущего в лифте. Если человек едет в лифте, его положение зависит от положения лифта. я это хотел сказать.

Не по теме:


перед написанием программу необходимо правильно спроектировать, выделить необходимые сущности и определить
между этими сущностями связи.
после этого переходят к написанию программы.
у вас же почему-то сразу переход ко второму шагу произошел

0
1 / 1 / 0
Регистрация: 23.11.2010
Сообщений: 136
19.06.2019, 16:43  [ТС]
Цитата Сообщение от shelluser Посмотреть сообщение
у вас же почему-то сразу переход ко второму шагу произошел
Пока еще нет) Скажем, все в процессе. но мне нравится ваш подход.
Цитата Сообщение от shelluser Посмотреть сообщение
не нужно дополнительно менять положение человека едущего в лифте.
Да, это понятно. так лучше. Прога все-таки про лифт, и движется в данном случае только он. И по факту, положение человека у меня меняется только после достижения лифтом этажа при запросе или выборке из вектора пользователей, желающих зайти в лифт. Ну и после открытия, закрытия дверей, реализованных в виде отнятия времени. Так же положение я могу сгенерировать. Ну, скажем, на 7-м этаже человек решил проверить посылку на втором, доехав до второго.
А движение - это инкремент этажа на единицу в двух выборочных направлениях - вверх или вниз.

Добавлено через 11 минут
Конечно, можно вообще сделать лифт черным ящиком, в который только входят и выходят пользователи, загружая себя в лифт и разгружая. То есть
1) Лифт дошел до 6-этажа
1.1. Пользователь зашел в лифт.
2) Лифт доехал до этажа назначения - 9. Пользователь вышел, из вектора Elevator::loaded удален элемент

Но почему бы и не знать, что пользователь на 7-м этаже или 8-м.
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
19.06.2019, 16:55
Цитата Сообщение от streamc Посмотреть сообщение
Но почему бы и не знать, что пользователь на 7-м этаже или 8-м.
В смысле - лифт на 3-м, а человек на 8-м?

Если пользователь в лифте, то достаточно знать где сейчас лифт. Если снаружи - то лифт узнает о нём, когда тот нажмёт кнопку вызова
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
19.06.2019, 17:07
Цитата Сообщение от streamc Посмотреть сообщение
Но почему бы и не знать, что пользователь на 7-м этаже или 8-м.
А что ещё бы не вредно знать? streamc, вы задаёте в теме вопрос:
Цитата Сообщение от streamc Посмотреть сообщение
Как сделать так, чтобы при изменении Elevator::current_floor менялось и значение вектора loaded_users?
А потом выясняется, что делать этого не нужно.
Если ваши объекты - пользователи, то они не имеют смысла без объекта которым пользуются, да. Но и в этом случае разные пользователи могут быть в разных состояниях пользования. Могут быть в лифте идущем вверх между этажами N, N+1, могут быть в лифте идущем вниз и с другими координатами. И могут ждать на одном из этажей. В этом смысле группа студентов в 208-й аудитории на лекции по информатике, это группа пользователей в ожидании лифтов со второго этажа.
Но если вы описываете не пользователей, а людей, то у них могут быть свои механизмы для изменения координат. Студент в коридоре может идти в том или ином направлении, вдоль коридора и поворачивать на пересечении коридоров туда, куда ему нужно. В этом смысле, карта и маршрут, это два класса, которые находятся в определённых отношениях между собой и студентом. Студент выбирает маршрут (является его собственником), но карту он не выбирает, до тех пор пока не сменит здание, местность, галактику. Но если студент стал на бегущую дорожку, вошёл в лифт или ракету, то он стал частью другого движущегося объекта. Причём, бегущая дорожка, лестничный элеватор, лифт не могут выбирать своих маршрутов, но могут выбирать направление. А вот ракета, это другой вопрос. Если это рейсовый звездолёт и управляет им опытный капитан, то ситуация предсказуема. А если это лёгкий прогулочный шлюп и за штурвалом будет сам студент, то всё иначе. Но и тут не стоит отчаиваться. Современный C++, обладает богатым выбором генераторов случайных чисел. Это позволяет описать поведение любого юзера в среднем, но не конкретного юзера задающего вопрос на форуме.
0
1 / 1 / 0
Регистрация: 23.11.2010
Сообщений: 136
19.06.2019, 17:31  [ТС]
Цитата Сообщение от IGPIGP Посмотреть сообщение
Но если вы описываете не пользователей, а людей
О людях речь не шла. Но студент, профессор одинаково может быть между пунктом отправления и назначения. Вы намеренно ушли в другую область. Согласитесь, что сравнение некорректное. Класс люди - пусть живет отдельно. Хотите, создайте интерфейс, как в C# для пользователя лифта, и описывайте едет ли профессор или студент или даже академик.
еще связь 100 к 1 можно прикрутить. Или, скажем, создать Latex-редактор, чтобы он не просто формулу вводил, а интересовался, кто вводит формулу и для чего.
Цитата Сообщение от IGPIGP Посмотреть сообщение
А потом выясняется, что делать этого не нужно.
Не нужно. Хотя это было бы интересным решением.
Да, по сути я ушел от вопроса в теме к более общему для себя, но ответы полезны. Реально полезны. И получив ваш ответ, можно так же рассмотреть его и что-то сделать, сохранить, создать конкурентный.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
19.06.2019, 18:00
Цитата Сообщение от streamc Посмотреть сообщение
Хотите, создайте интерфейс, как в C# для пользователя лифта
C# не виноват. И Ява тоже. А для лифт-лифтуэйбл элемент лучше бы моделировать отношения иначе. Лифт - шаблон (контейнер), это более гибкая связь. Можно перевозить слонов. Более того, можно создавать лифты лифтов и даже лифты этажей. А можно запретить такие специализации. Но да, сделать можно всё, кроме контейнера ссылок, которые инициализируются отложенно. Тут С++ не может сравниться с шарпом или жавой. Но плюсов больше чем минусов.
0
1 / 1 / 0
Регистрация: 23.11.2010
Сообщений: 136
19.06.2019, 19:07  [ТС]
А еще я сделал функцию Loaded_Pass_to_Dest зависимой от доставки до первого пользователя лифта.
active_users - это вектор пользователей лифта, которые делают запрос. Там три параметра. Id, этаж вызова, этаж назначения. Потом сделаю либо генерацию, либо запросы, либо и то, и то.
Послал сюда, так как в начале уж совсем огрызок был и неработающий.
Впрочем к reference wrapper это не относится. Ладно, поставлю точку. если надо будет уже другую тему создам. А пока буду делать нормально и обрамлять.
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
    while (Elevator::current_floor != * dst_floor_end)
    {
    El_to_Pass_to_Dest( * dst_floor_end, active_users);
 
    };
El_to_Pass_to_Dest содержит Loaded_Pass_to_Dest
 
int Elevation::Loaded_Pass_to_Dest(std::vector< std::tuple<int, int, int> >& active_users, int dst_floor, direction dx)
{
 
    El_Move(dx); // just floor increment and timer counter inc
 
    for (int k = 0; k < active_users.size(); k++)
    {
 
        if (Elevator::current_floor ==  std::get<1>(active_users[k]))
        {
 
            Elevator::loaded.push_back({ std::get<0>(active_users[k]) });
        
        }
 
        if (Elevator::current_floor == std::get<2>(active_users[k]))
        {
        
            for (int j=0;j< Elevator::loaded.size();j++)
                if (std::get<0>(active_users[k]) == (Elevator::loaded[j]))
 
                {
                    Elevator::loaded.erase(Elevator::loaded.begin() + j);
 
                }           
        }
 
    }
    return Elevator::current_floor;
}
0
1 / 1 / 0
Регистрация: 23.11.2010
Сообщений: 136
20.06.2019, 12:29  [ТС]
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
void Elevation::Move_Call(std::vector< std::tuple<int, int, int> > &passengers)
{
    int *dst_floor_end = NULL;
    int  ucf = std::get<1>(passengers[0]);
    int dst_floor = std::get<2>(passengers[0]);
    std::vector <direction> direct;
 
    for (int k = 0; k < passengers.size(); k++)
    {
        int userid = std::get<0>(passengers[k]);
        int cur_fl_queue = std::get<1>(passengers[k]);
        int dst_queue = std::get<2>(passengers[k]);
        if (cur_fl_queue > dst_queue) d1 = DOWN;
        if (cur_fl_queue < dst_queue) d1 = UP;
        direct.push_back(d1);
 
        if (direct[k] == direct[0])
        {
            if ((direct[k] == UP)  & (cur_fl_queue >= ucf) & (cur_fl_queue <= dst_floor))
            {
                Elevation::active_users.push_back({ userid,cur_fl_queue,dst_queue });
                //passengers.erase(passengers.begin() + k);
                auto level_floor = &std::get<2>(*std::max_element(active_users.begin(), active_users.end(),
                    [](auto& l, auto& r) {return std::get<2>(l) < std::get<2>(r); }));
                dst_floor_end = level_floor;
            }
 
            if ((direct[k] == DOWN)  & (cur_fl_queue <= ucf) & (cur_fl_queue >= dst_floor))
            {
                Elevation::active_users.push_back({ userid,cur_fl_queue,dst_queue });
            //  passengers.erase(passengers.begin() + k);
                auto level_floor = &std::get<2>(*std::min_element(active_users.begin(), active_users.end(),
                    [](auto& l, auto& r) {return std::get<2>(l) < std::get<2>(r); }));
                dst_floor_end = level_floor;
            }
        }
    }
Только сейчас заметил. Короче, формирую вектор active_users из passengers. И если passengers.erase(passengers.begin() + k); расскоментировать ( а я не хочу постоянно держать этот массив, нужно удалять элементы), то пропадает всегда первый элемент, который после нулевого. Не могу понять ошибку. Видно при дебаггинге.
наверное, я нулевой элемент удаляю и он меняется, проверю.

Добавлено через 11 минут
Да, логично, нельзя перекраивать первый элемент и удалять ,если я потом на него все время в качестве сравнения ссылаюсь.

Добавлено через 22 минуты
Точнее, не на него, а новый нулевой элемент. Сделаю как я нулевой элемент копированной константой.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.06.2019, 12:29
Помогаю со студенческими работами здесь

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

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

Присвоение значения переменной класса через конструктор
#include &lt;iostream&gt; using namespace std; class Help { int userID; public: Help(int id) {int userID = id;} ~Help()...

Присвоение переменной а значения случайного числа (random)
Здравствуйте. Задача написать программу для проверки знания таблиц умножения. Rand-омом виводятся два числа (a,b) на консоль. Как присвоить...

Tuple, получение значения по индексу
Есть вот такая реализация Tuple: template &lt;class...Args&gt; class typle; template&lt;class Head, class...Tail&gt; class typle&lt;Head,...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru