0 / 0 / 0
Регистрация: 19.08.2016
Сообщений: 23

Как реализовать смещение элементов вектора?

24.08.2016, 15:24. Показов 12091. Ответов 36

Студворк — интернет-сервис помощи студентам
Подскажите, пожалуйста, как без костылей переместить заданный элемент вектора на нужную позицию, а те, что до/после него сместить влево/вправо? Т. е., например, есть {1, 5, 3, 9, 7, 4} и мне нужно единицу переместить на четвёрутю (если считать от 1) позицию, чтобы получилось {5, 3, 9, 1, 7, 4}? Может, такое в STL есть? Сначала подумал, что подойдёт rotate(), но он не подходит.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.08.2016, 15:24
Ответы с готовыми решениями:

Реализовать сдвиг элементов вектора
Решил я написать алгоритм сдвига элементов в векторе стл. #include <iostream> #include <algorithm> #include <vector> ...

Круговое смещение в массиве, как лучше реализовать
Есть массив допустим Пользователь вводит число например 3 - т.е. числа надо сместить на 3 влево по кругу, чтобы получилось как это...

Как удалить часть элементов вектора или как присвоить вектору часть другого вектора?
В общем сабж. Как записать в маткаде следующее? К примеру есть вектор А со 100 элементами. Как удалить у этого вектора 0-19 элементы и...

36
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
30.08.2016, 13:31
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от JustOneProblem Посмотреть сообщение
, нерабочесть заключается в том
что вы неправильно используете рабочий код. Вы задали вопрос и получили ответы. Говорите - это мне не подходит. Еще раз спрошу, вот это например:
Как реализовать смещение элементов вектора?
где не работает? Только не в смысле того, что им нельзя забивать гвозди, а в соответствии с заданным вопросом.
Последний вариант конечно не будет и в одном потоке работать. Может реалок сломать итераторы.
И повторю ещё раз. Вектор для такой задачи, это конечно тоже, направленный отрезок, но в глаз компилятору.
0
0 / 0 / 0
Регистрация: 19.08.2016
Сообщений: 23
30.08.2016, 13:49  [ТС]
Цитата Сообщение от IGPIGP Посмотреть сообщение
Вы задали вопрос и получили ответы
Я не говорю, что мне всё это не подходит. В теме по сути перечислены реализации одного алгоритма, который мне нужен. Теперь уже проблема в том, что я не знаю, как, а в том, что я не знаю, почему не работает.
Чем конкретно использование списка будет лучше, чем вышеперечисленные алгоритмы, не будут ли со списком возникать сегфолты?
Спасибо за ответы.
0
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,822
30.08.2016, 13:49
JustOneProblem, сначала надо баги исправить, связанные с выходом за пределы диапазона вектора. И логическую нестыковку в функции level_range. Позадаю наводящие вопросы:
* что возвращается в level_range, если не найден подходящий элемент?
* что будет, если вот в этом коде &task[number(task, task[j].depends) - 2] функция number вернет 0 или 1?
0
0 / 0 / 0
Регистрация: 19.08.2016
Сообщений: 23
30.08.2016, 14:05  [ТС]
Цитата Сообщение от DrOffset Посмотреть сообщение
что возвращается в level_range, если не найден подходящий элемент?
Ну, так как там не прописан возврат чего-либо в случае, когда подходящего элемента нет, то, наверное, какое-нибудь случайное значение. Но такое же может быть, если вызвать level_range для несуществующего уровня, а в программе вроде нигде таких вызовов нет
Цитата Сообщение от DrOffset Посмотреть сообщение
что будет, если вот в этом коде &task[number(task, task[j].depends) - 2] функция number вернет 0 или 1?
&task[number(task, task[j].depends) - 2] у меня уже нет, есть &task[number(task, task[j].depends)-1], а number никогда не вернёт 0 (в данном контексте, потому что некорректно заданные секции во входном файле отсеиваются) , минимальное значение -- 1.
0
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,822
30.08.2016, 16:32
JustOneProblem, ну вот как вы так программируете, а?
Есть у тебя контракт, ты его неявно подразумеваешь. Но ты можешь быть уверен, что он выполняется? Нет, не можешь. А другие, люди, которые смотрят твой код? Тем более не могут, потому что они не видят исходных данных.
Ну вот возьми и расставь везде явно контракты, расставь ассерты, которые проконтролируют соблюдение контрактов. Программа будет падать на ассертах, а не случайных местах. Увидев место, где нарушается контракт - ты сможешь исправить ошибку.

А отсутствие возвращаемого значения в не-void функции - это UB. Оно должно быть. Оно должно быть и ты потом должен его проверить. Если в программе получилось нарушение контракта и вернулось значение, которое в нормальной ситуации быть не может, - ты должен его проверить в ассерте.
До тех пор, пока контракты присутствуют только неявно, программирование будет оставаться на уровне эмпирических ощущений, а им верить нельзя.

Добавлено через 6 минут
Ну и программу отладь сперва в однопоточном варианте. Чтобы не думалось.
А то вот у тебя там используется общий для всех потоков вектор, а модифицируешь ты элементы в нем без синхронизации. Ни к чему хорошему это не приведет.
1
0 / 0 / 0
Регистрация: 19.08.2016
Сообщений: 23
30.08.2016, 23:47  [ТС]
Цитата Сообщение от DrOffset Посмотреть сообщение
ну вот как вы так программируете, а?
Ну вот так. Из-за необходимости. По-хорошему, надо бы уже осилить настройку neovim, cmake и всего остального, код в пригодный вид привести, а не писать "на коленке": в gedit, компилируя всё одним вызовом g++. Но вот ради этого всего я и сел писать программу, которая мне поможет to-do list отсортировать. Замкнутый круг получается...
Далее прошу сильно не пинать, потому что, наверное, буду глупые вопросы задавать.
Цитата Сообщение от DrOffset Посмотреть сообщение
Есть у тебя контракт, ты его неявно подразумеваешь. Но ты можешь быть уверен, что он выполняется? Нет, не можешь.
Что такое контракт?
Цитата Сообщение от DrOffset Посмотреть сообщение
расставь ассерты
Что такое ассерты?
Цитата Сообщение от DrOffset Посмотреть сообщение
это UB
Что такое UB?
Цитата Сообщение от DrOffset Посмотреть сообщение
без синхронизации
А как сделать с синхронизацией?
Цитата Сообщение от DrOffset Посмотреть сообщение
Тем более не могут, потому что они не видят исходных данных
Исходные данные могу предоставить.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
31.08.2016, 01:55
Вот он настоящий диалог. Глубокое взаимопонимание по всем достигнутым точкам соприкосновения в процессе созревания. Меня терзают противоречия от того, что хочется поучаствовать, но непонятно, что тут имело бы смысл сказать.
JustOneProblem, Вы отважный человек. Глядя на последний пост я перечитал всю тему и мне показалось, что финт с перестановкой элементов Вам вообще не нужен. Это следует вот из этого:
Как реализовать смещение элементов вектора?
Сортировать поэтапно, по разным условиям, это плохо. Лучше составить сложный предикат. То есть при равенстве уровней проверяется старшинство depense. Как я понял его значение "none" - самое маленькое значение. Но нужны ещё какие-то. И для тех, что "none" (равны по данному качеству) нужно следующее качество сравнения. Иначе элементы могут оказаться не сравнимы и как следствие не упорядочиваемы. Если сравнение младших уровней как-то зависит от результатов сравнения старших то придётся съесть много рыбы. Если зависимость прослеживается вниз то, лучше бросить всё это. Скорее всего у Вас нет подобных ужасов и Вы точно представляете как сравниваются элементы. Потому как это 99% задачи.
Если Вам удалось что-то понять, дайте знать. Потому что мне пока не удалось.
0
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,822
31.08.2016, 09:08
Цитата Сообщение от JustOneProblem Посмотреть сообщение
Что такое контракт?
Вот когда ты говоришь:
Цитата Сообщение от JustOneProblem Посмотреть сообщение
если вызвать level_range для несуществующего уровня, а в программе вроде нигде таких вызовов нет
- это ты описываешь контракт.
Когда ты говоришь:
Цитата Сообщение от JustOneProblem Посмотреть сообщение
некорректно заданные секции во входном файле отсеиваются
- это ты описываешь контракт.
И в остальном, т.е. набор допустимых входных данных и выходных данных - это контракт.

Цитата Сообщение от JustOneProblem Посмотреть сообщение
Что такое ассерты?
Это простейший способ явно задать контракт в С\С++.
Вот пример:
C++
1
2
3
4
5
void print(char const * s)
{
    assert(s != NULL);
    std::cout << s << std::endl;
}
Вот эта строка assert(s != NULL); переводится как Утверждаю, что переменная s не должна быть равной NULL. Чем это поможет: если ты, по ошибке или недосмотру вызываешь функцию print с передачей нулевого указателя вместо строки, то программа упадет на ассерте с указанием условия, которое ты написал в его аргументе. Т.е. примерно так:
source_file.cpp:8: void print(const char *): Assertion `s != NULL' failed.
И тут мы видим имя файла, в котором произошло нарушение контракта, строку кода, имя функции и собственно само условие, которое нарушилось. Нам сразу понятно в чем дело, мы видим, что нарушили собственные правила - не передавать NULL.
Тоже самое я предлагаю тебе сделать для твоих функций. Определиться с тем, что они должны принимать, и что они НЕ должны принимать, что они должны возращать, и что они НЕ должны. И все эти вещи явно задекларировать. После этого уже работать над самими алгоритмами. Если где-то ты нарушаешь собственные правила - ты узнаешь об этом вышеуказанным способом.

Добавлено через 14 минут
Просто на всякий случай добавлю про ассерты:
assert — это не просто условие во время исполнения программы, в первую очередь - это инструмент отладки. Проверять им нужно только те ошибки, которые может допустить программист, но никак не пользователь. Т.е. ассерт - это сигнал, что в коде и логике автора кода что-то пошло не так.

Цитата Сообщение от JustOneProblem Посмотреть сообщение
Что такое UB?
UB = Undefined/Unspecified behaviour = Неопределенное\Неуточняемое поведение.

Цитата Сообщение от JustOneProblem Посмотреть сообщение
А как сделать с синхронизацией?
Вопрос еще в том, а нужно ли это вообще здесь. Если ты будешь синхронизировать общий вектор, то рискуешь получить программу даже медленнее, чем в однопоточном варианте. Если не будешь синхронизировать, то получишь недетерминированное поведение. Поэтому, может быть, стоит рассмотреть вариант, когда потоки работают независимо, каждый со своими данными, если это возможно конечно.
Какую вообще задачу решает программа?

Цитата Сообщение от JustOneProblem Посмотреть сообщение
Исходные данные могу предоставить.
Это надо было сделать в первом посте.
* Предоставить компилируемый код, который иллюстрирует проблему;
* Предоставить краткое описание задачи, которую выполняет программа ("программа должна переместить элемент в векторе" - это не описание задачи, это описание гвоздя в большом доме - а как выглядит дом, все еще неизвестно). Если используется специализированная расчетная часть - дать ссылки на теорию или указать используемый метод;
* Предоставить актуальные входные данные;
* Предоставить ожидаемые выходные данные;
* Предоставить диагностическую информацию, которую удалось добыть самостоятельно.

Возможно что-то из этого в конкретном случае не понадобится, но это общий вид, в котором нужно задавать вопрос. Во-первых пока ты все это собираешь - можешь сам найти ошибку. Во-вторых - с этим можно сразу работать, а не тратить время на вытаскивание клещами информации - это ведь никому не интересно. Многие просто проходят мимо, если не видят, что с вопросом можно работать. Ты серьезно увеличишь шанс быстрой помощи, если дашь людям больше материала для анализа.
6
0 / 0 / 0
Регистрация: 19.08.2016
Сообщений: 23
31.08.2016, 17:40  [ТС]
Цитата Сообщение от IGPIGP Посмотреть сообщение
Сортировать поэтапно, по разным условиям, это плохо. Лучше составить сложный предикат
Почему? Я пробовал, но не осилил. Проще уж поэтапно. Да и так легче находить ошибки -- когда все операции делаются отдельно.

DrOffset, спасибо за разъяснение.

А теперь про то, что должна делать программа. Изначально не запихнул всё в ОП, потому что без этого можно было обойтись, но теперь и правда нужно показать всё целиком. Для начала, вот ссылки на все файлы:
everyone.h: http://pastebin.com/Dba7fGaf
main.cpp: http://pastebin.com/VtwkV0ai
get.cpp: http://pastebin.com/BnNVikdF
number.cpp: http://pastebin.com/amK8NXZy
make.cpp: http://pastebin.com/jLQEvWrv
В invoke.cpp только
C++
1
2
3
4
//Patches daily to-do list using current day of the week and date files to get to-do list for today.
void invoke () { 
 
}
К написанию функции invoke я ещё не приступал.
Действия программы:
Сначала, в файле todo.today задаются секции (порядок переменных произвольный; если заначение переменной не задано, используется дефолтное):
{
title строка
level n ∈ N
description строка
depends строка
urgency n ∈ [1; 20]
importance n ∈ [1;20]
}
Функция get парсит содержимое файла в вектор из элементов структуры, предварительно проверяя каждую секцию на корректность (из комментария к функции correct должно быть понятно, как, не хочу повторяться). Потом вызывается функция make, в которой:
1. С помощью алгоритма sort и функции sort_levels все элементы вектора сортируются по значению level от меньшего к большему.
2. Создаются несколько потоков в кол-ве, равном кол-ву уровней (максимальному значению level среди всех элементов), обрабатывающих функцией sort_nice_depends каждый из уровней.
3. Цикл, делающий всем потокам join.
В функции sort_nice_depends:
1. Объявление переменных для упрощения написания.
2. Сортировка с помощью rotate таким образом, что элементы, у которых значение depends != "none", будут помещены ниже, чем те, у которых наоборот.
3. Сортировка с помощью sort и функции sort_nice (элементы с большим nice() становятся выше) отдельно на промежутках с элементами, у которых depends равно и не равно "none".
4. Проблемная часть: здесь с помощью rotate (или функции rotate_to_dep) все элементы, у которых depends != "none", должны перемещаться вверх по списку на позицию, следующую за позицией элемента, у которого значение title равно значению depends текущего элемента, если их уровни равны. Но происходит ошибка сегментации. Если строчку unsigned int begin_depends = level_range(task, level, "begin_depends"); перенести так, чтобы она была после цикла for (unsigned int j(begin); j <= end; j++) {, то резуьтат не изменяется.
Входной файл: http://pastebin.com/PDGZdjsw
Вывод программы без выполнения "проблемной" части(всё как надо):
Code
1
2
3
4
5
6
1. Do the job 1 37.5 1
2. Go shopping 1 25 1
3. Make dinner 1 50 0
4. Have a rest 1 17.5 0
5. Buy food 2 25 0
6. Buy clothes 2 12.5 0
Ожидаемый вывод программы:
Code
1
2
3
4
5
6
1. Do the job 1 37.5 1
2. Have a rest 1 17.5 0
3. Go shopping 1 25 1
4. Make dinner 1 50 0
5. Buy food 2 25 0
6. Buy clothes 2 12.5 0
Версия компилятора:
Code
1
2
3
4
5
6
7
Используются внутренние спецификации.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/5.3.1/lto-wrapper
Целевая архитектура: x86_64-redhat-linux
Параметры конфигурации: ../configure --enable-bootstrap --enable-languages=c,c++,objc,obj-c++,fortran,ada,go,lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --disable-libgcj --with-isl --enable-libmpx --enable-gnu-indirect-function --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux
Модель многопоточности: posix
gcc версия 5.3.1 20160406 (Red Hat 5.3.1-6) (GCC)
Параметры сборки: -std=c++14 -pthread

Конечная цель программы состоит в том, чтобы выводить на экран список дел, отстртированный по уровню nice и зависимостям, уровни придуманы для того, чтобы одно дело можно было разбить на несколько частей. То есть окончательный вывод (функцией output) программы для входного файла выше должен выглядеть примерно так:
Code
1
2
3
4
5
6
1. Do the job
2. Have a rest
3. Go shopping
    1. Buy food
    2. Buy clothes
4. Make dinner
Ф-я invoke (будет) нужна, чтобы применить патчи к ежедневному списку дел. Сначала накладывается патч для текущего дня недели (чтобы для разных дней недели список дел мог отличаться) и для текущей даты (чтобы для разных дат мог быть разный список).

Надеюсь, это было достаточно подробно (ещё в самом коде есть комментарии).

З. Ы. Пока писал это сообщение обнаружил небольшой баг в сортировке по nice тех элементов, у которых depends != "none", но он только приведёт к тому, что завсисмости дела будут отсортированы в обратном порядке.
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
31.08.2016, 18:46
Цитата Сообщение от JustOneProblem Посмотреть сообщение
Цитата Сообщение от IGPIGP Посмотреть сообщение
Сортировать поэтапно, по разным условиям, это плохо. Лучше составить сложный предикат
Почему? Я пробовал, но не осилил.
Жжете! Хватит пробовать, пора прочитать сообщение №13.
2
0 / 0 / 0
Регистрация: 19.08.2016
Сообщений: 23
31.08.2016, 21:07  [ТС]
Цитата Сообщение от Mr.X Посмотреть сообщение
пора прочитать сообщение №13
А где там
Цитата Сообщение от JustOneProblem Посмотреть сообщение
все элементы, у которых depends != "none", должны перемещаться вверх по списку на позицию, следующую за позицией элемента, у которого значение title равно значению depends текущего элемента, если их уровни равны
?
0
31.08.2016, 22:28

Не по теме:

JustOneProblem,

Цитата Сообщение от 'Выкрик с галерки"
Соберите предварительную мапу в последующем использующуюся в предикате.

0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
31.08.2016, 22:34
Цитата Сообщение от JustOneProblem Посмотреть сообщение
А где там
Цитата Сообщение от JustOneProblem Посмотреть сообщение
все элементы, у которых depends != "none", должны перемещаться вверх по списку на позицию, следующую за позицией элемента, у которого значение title равно значению depends текущего элемента, если их уровни равны
?
Мда... Кто поймет что здесь написано, тот пусть возьмет на полке пирожок!
JustOneProblem, мне кажется, ваша задача на данный момент - освоить формулирование задач в ясном и простом виде, - это уже будет половина решения.
Вы можете не объяснять ничего, а привести пример отсортированных структур по вашему критерию?
0
0 / 0 / 0
Регистрация: 19.08.2016
Сообщений: 23
31.08.2016, 22:37  [ТС]
Цитата Сообщение от Nosey Посмотреть сообщение
Соберите предварительную мапу в последующем использующуюся в предикате
А можно чуть-чуть более по-русски?

Добавлено через 2 минуты
Цитата Сообщение от Mr.X Посмотреть сообщение
Вы можете не объяснять ничего, а привести пример отсортированных структур по вашему критерию?
Выше есть всё (hint: "Ожидаемый вывод программы").
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
31.08.2016, 22:47
Цитата Сообщение от JustOneProblem Посмотреть сообщение
Выше есть всё (hint: "Ожидаемый вывод программы").
Вообще-то я стараюсь не решать задач с неясными и запутанными условиями, и ведь правильно делаю!
Ибо из неясной и запутанной формулировки кроме взаимного запудривания мозгов ничто проистечь не может.
Что данная тема и подтверждает!
0
31.08.2016, 22:50

Не по теме:

Цитата Сообщение от JustOneProblem Посмотреть сообщение
А можно чуть-чуть более по-русски?
Сортировка по левелу, по найсу, по отсутствию зависимостей сортируются достаточно просто в предикате.
Сложности возникают с сортировкой элементов взаимосвязанных по критерию title<->depends.(тут можно предварительно собрать map<title,dep>, или может другую мапу, а может и сета хватит, я точно не понимаю и мне лень думать :pardon: закинув его в предикат вы сможете сравнивать к разным или к одной группе сравниваемые элементы относяятсяя и в каком порядке эти группы находятся, что и нужно помимо простых сравнений.
Вот структурируйте эту информацию у себя в голове.

0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
31.08.2016, 23:20
Nosey, боюсь что кроме составления сложных предикат тут есть ещё проблемы. Похоже пишется что-то вроде органайзера. Причём задачи поступают из жизни в произвольном порядке и некоторые из них могут быть зависимы (подчинены например, другим). Если это не мои фантазии, то тут важнее всего создать правильный соответствующий тип данных. Возможно неплохо было бы использовать механизм делегирования. А вот проблема вычисления приоритетности, это к искусственному интеллекту. Потому как известные мне органайзеры, все как один ждут когда хозяин сам назначит время выполнения. Высунув язык и сложив лапы. И данное действо задрапировано заполнением простой таблицы.
Учитывая, что проблема возникла как перегруппировка элементов в векторе, всё это похоже на желание переключиться и поговорить. Хотя и тут легко ошибиться.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.08.2016, 23:20
Помогаю со студенческими работами здесь

Как реализовать смещение div блоков под другой div?
Всем привет! Помогите сместить блоки под другой блок! &lt;div class=&quot;container&quot;&gt;&lt;div class=&quot;left-div left-text&quot;&gt;Drive business...

Можно ли так реализовать смещение?
https://dl.dropboxusircontent.som/u/3712025/OU.png Закрались сомнения, а не нужен ли резистор после буфера? И если нужен, может ли...

Как реализовать матрицу посредством двумерного вектора? (std::vector)
const int matrix_A_Columns = 12000; const int matrix_A_Rows = 25000; double matrix_A; как вот это написать с помощью вектора?

Найти другой вектор, в котором только не повторяющиеся элементы первого вектора - как реализовать проверку на буквы?
Написал простейшую м-функцию. Дан вектор и нужно найти другой вектор, в котором только не повторяющиеся элементы первого вектора. Но,...

Заполнить вектор значениями положительных элементов вектора C. Размерность вектора C произвольная
Заполнить вектор значениями положительных элементов вектора C. Размерность вектора C произвольная. Private Sub Command1_Click() Dim m...


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

Или воспользуйтесь поиском по форуму:
37
Ответ Создать тему
Опции темы

Новые блоги и статьи
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html и его же старой инструкции по установке Lazarus с gtk2. . .
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер. Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru