реклама на сайте
подробности

 
 
> мини PLC.
Jenya7
сообщение Jan 27 2016, 08:11
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



я хочу програмировать задачи - состояния на выходе в зависимости от условий на входе. этакий мини Programmable Logic Controller.
для примера код
Код
// условие на входе
If (temp > 30 && hum > 80 || input1 ==1)
{
    // условие на выходе
    output2 = 1;
}

Где temp, hum - глобальные переменные но задаваемые пользователем через теринал.
пользователь програмирует такое условие следующим образом.
Код
task 1 param 1 temp > 30 AND
task 1 param 2 hum > 80 OR
task 1 in 1 1
task 1 out 2 1

или так
Код
task 1 param 1 temp > 30
task 1 param 2 hum > 80
task 1 in 1 1
task 1 param 1 AND param 2 OR in 1
task 1 out 2 1

и я это сохраняю и потом проверяю и если условие выполняется - включаю\выключаю нужные выходы. вопрос есть ли какие то готовые библиотеки а-ля-PLC?

Сообщение отредактировал Jenya7 - Jan 27 2016, 08:18
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
=AK=
сообщение Jan 27 2016, 11:04
Сообщение #2


pontificator
******

Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483



Цитата(Jenya7 @ Jan 27 2016, 18:41) *
я хочу програмировать задачи - состояния на выходе в зависимости от условий на входе. этакий мини Programmable Logic Controller.
...
и я это сохраняю и потом проверяю и если условие выполняется - включаю\выключаю нужные выходы. вопрос есть ли какие то готовые библиотеки а-ля-PLC?


Ваша задача не имеет никакого отношения к PLC, это полная чушь.

То, что вы тут накалякали, в принципе может быть реализовано путем создания некого скриптового языка. Тем не менее для грамотного решения , вам придется озаботиться и БНФ, и парсингом, и интерпретатором. Однако поскольку вы демонстрируете чрезвычайно низкий уровень знаний и очень много гонора, то шансы на то, что вы сподобитесь решить эту задачу "в общем виде", исчезающе малы.

Один из грамотных вариантов решения, который вам может оказаться посильным, таков: освойте язык Форт, поставьте Форт-систему на вашу целевую платформу и задайте для пользователя словарь только с определенными вами Форт словами, а все остальные Форт слова сделайте недоступными для пользователя. При этом парсингом займется Форт система, правда, синтаксис псевдо-языка будет с обратной польской записью. При желании и это можно изменить, да только вряд ли нужно.
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Jan 27 2016, 12:14
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(=AK= @ Jan 27 2016, 17:04) *
Ваша задача не имеет никакого отношения к PLC, это полная чушь.

То, что вы тут накалякали, в принципе может быть реализовано путем создания некого скриптового языка. Тем не менее для грамотного решения , вам придется озаботиться и БНФ, и парсингом, и интерпретатором. Однако поскольку вы демонстрируете чрезвычайно низкий уровень знаний и очень много гонора, то шансы на то, что вы сподобитесь решить эту задачу "в общем виде", исчезающе малы.

Один из грамотных вариантов решения, который вам может оказаться посильным, таков: освойте язык Форт, поставьте Форт-систему на вашу целевую платформу и задайте для пользователя словарь только с определенными вами Форт словами, а все остальные Форт слова сделайте недоступными для пользователя. При этом парсингом займется Форт система, правда, синтаксис псевдо-языка будет с обратной польской записью. При желании и это можно изменить, да только вряд ли нужно.

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


Цитата(arhiv6 @ Jan 27 2016, 16:40) *
Так не надо выделять место в памяти для хранения всех лексем поотдельности - они уже есть в исходной строке, парсер динамически её обрабатывает. Грубо говоря, нужно выделить место для хранения одной лексемы:
Код
char *expr; //Указатель на обрабатываемую строку
char token[80]; //Лексема

Там в статье всё расписано + приведён полностью рабочий код. Вам достаточно в нем заменить пару функций на свои.

это очень смелое заявление. таких заявлений я могу каждый день выдавать пачками.

Цитата(iosifk @ Jan 27 2016, 17:05) *
Можно сделать не компилятор, и интерпретатор. Тогда ничего "хранить" не надо выполнение делается при обработке строк... Правда это "медленнее", чем если сначала откомпилировать, а потом исполнять "переваренный" код... Но зато проще сделать программу обработки.
Вообще если сделать два вида исходных строк, то дело будет значительно проще реализовать.
1. "Арифметические строки" - введите "внутренние переменные", где "входы" или "внутренние переменные" проверяются на "больше-меньше" или "+/-" и результат этих действий превращается в битовые переменные
2. "Логические строки" в которых обрабатываются "битовые переменные"

Ну и Форт-система это тоже вариант....

извините но - тоже пачками.
Go to the top of the page
 
+Quote Post
Herz
сообщение Jan 27 2016, 14:11
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Цитата(Jenya7 @ Jan 27 2016, 14:14) *
от вашей демонстрации грандиозных знаний с тоже нех..илым апломбом толку мало.
таких советов я могу каждый день выдавать пачками.

это очень смелое заявление. таких заявлений я могу каждый день выдавать пачками.

извините но - тоже пачками.

Автор! Попробуйте прислушаться к советам и не хамить. Я совершенно не понимаю, откуда возьмётся желание искать приемлемое для Вас решение, разжёвывать и класть в рот при такой "благодарности".
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Jan 27 2016, 14:27
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(Herz @ Jan 27 2016, 20:11) *
Автор! Попробуйте прислушаться к советам и не хамить. Я совершенно не понимаю, откуда возьмётся желание искать приемлемое для Вас решение, разжёвывать и класть в рот при такой "благодарности".

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


Цитата(iosifk @ Jan 27 2016, 20:20) *
Ей бо глухой...
Вы же почему-то сваливаете в одну кучу компиляцию исходников и исполняемую программу. На самом деле Вам надо сделать 2 программы. Одну - для превращения сложной командной строки исходника в более простой набор команд. Что-то вроде "RISC", когда каждая простейшая команда выполняет только одно действие. Либо устанавливает переменную или таймер, либо логически обрабатывает переменную. Ну и вторая часть - будет в контроллере, она и будет выполнять эти простейшие действия. И парсер там будет примитивный...
Вы посмотрите мои статьи о битовом контроллере...


а почему так нельзя?
Код
for (int i = 0; i < sizeof(dailyTask[task_num].taskParams); i++)
    {
        if (dailyTask[task_num].taskParams[i].enable)
        {
            dailyTask[task_num].taskCondition[dailyTask[task_num].condIdx].result = TASKER_EvaluateParamCondition(dailyTask[task_num].taskParams[i].variable,
                                                                                                                                  dailyTask[task_num].taskParams[i].limit,
                                                                  dailyTask[task_num].taskParams[i].compare);
            dailyTask[task_num].taskCondition[dailyTask[task_num].condIdx].logic = dailyTask[task_num].taskParams[i].logicGate;
            dailyTask[task_num].condIdx++;
        }
    }

uint32_t TASKER_EvaluateParamCondition(float *val, float val_lim, uint32_t compare)
{
    switch (compare)
    {
        case 0: return (*val == val_lim); break;
        case 1: return (*val > val_lim);  break;
        case 2: return (*val < val_lim);  break;
        case 3: return (*val >= val_lim); break;
        case 4: return (*val <= val_lim); break;
        case 5: return (*val != val_lim); break;
        default : return 2;
    }
}

что я могу сказать. работает. быстро. четко. конечно интенсивный дебагинг я еще не делал но...
элементарная структура. 10 строк кода.

Сообщение отредактировал Jenya7 - Jan 27 2016, 14:34
Go to the top of the page
 
+Quote Post
arhiv6
сообщение Jan 27 2016, 14:35
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 633
Регистрация: 21-05-10
Из: Томск
Пользователь №: 57 423



Цитата(Jenya7 @ Jan 27 2016, 20:27) *
а почему так нельзя?

Можно, но такой вариант сложно масштабируем. Если делать в таком виде, то как Вы представляете себе решение для вашего же примера: (param1 && input1) || (param2 && (input2 || input3)) ?



--------------------
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Jan 27 2016, 15:06
Сообщение #7


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(arhiv6 @ Jan 27 2016, 20:35) *
Можно, но такой вариант сложно масштабируем. Если делать в таком виде, то как Вы представляете себе решение для вашего же примера: (param1 && input1) || (param2 && (input2 || input3)) ?

о! вот в этом вся загвоздка! вот это я и пытаюсь решить. не то чобы я был зациклен на моей имплиментации. просто других альтернатив нет пока.
я думал сделать такую структуру
Код
struct sGroupResults
{
    uint8_t result;
    uint8_t resLogic;

};
struct sConditionGroup
{
    struct sGroupResults groupResults[10];
    uint8_t groupLogic;

};

struct sTaskCondition
{
    struct sConditionGroup condGroup[MAX_COND_GROUPS];
};

и тогда условие
Код
(param1 && input1) || (param2 && (input2 || input3))

расположиться так
Код
sTaskCondition.condGroup[0].groupResults[0].result = param 1;
sTaskCondition.condGroup[0].groupResults[0].resLogic = AND;
sTaskCondition.condGroup[0].groupResults[1].result = input 1;
sTaskCondition.condGroup[0].groupResults[1].resLogic = NONE;
sTaskCondition.condGroup[0].groupLogic = OR;

sTaskCondition.condGroup[1].groupResults[0].result = param 2;
sTaskCondition.condGroup[1].groupResults[0].resLogic = NONE;
sTaskCondition.condGroup[1].groupLogic = AND;

sTaskCondition.condGroup[2].groupResults[0].result = input 2;
sTaskCondition.condGroup[2].groupResults[0].resLogic = OR;
sTaskCondition.condGroup[2].groupResults[1].result = input 3;
sTaskCondition.condGroup[2].groupResults[1].resLogic = NONE;
sTaskCondition.condGroup[2].groupLogic= NONE;

вопрос как в проверке условий объяснить что sTaskCondition.condGroup[0]. groupResults[0].result это param 1

Сообщение отредактировал Jenya7 - Jan 27 2016, 15:27
Go to the top of the page
 
+Quote Post
adnega
сообщение Jan 28 2016, 07:42
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(Jenya7 @ Jan 27 2016, 18:06) *
о! вот в этом вся загвоздка! вот это я и пытаюсь решить. не то чобы я был зациклен на моей имплиментации. просто других альтернатив нет пока.
я думал сделать такую структуру

При разработке своего контроллера я подумал побольше и сделал так.
Любая логическая функция из N переменных описывается таблицей истинности из 2^N строк.
Если переменные пронумерованы, то и на результат можно ссылаться числом.
Например, для 5 переменных имеем 32 результата.
Зная значения всех 5 переменных, мы можем получить номер бита в 32-битном хранилище результата.

В байткодах это выгладит так:

TABLE5(result_value)
VAR0
VAR1
VAR2
VAR3
VAR4
GETRESULT

Компилятор должен преобразовать сложное логическое выражение к таблице истинности и получить правильный resul_value.
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Jan 28 2016, 07:54
Сообщение #9


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



честно говоря я мало что понял.

Сообщение отредактировал Herz - Jan 28 2016, 22:34
Причина редактирования: Избыточное цитирование
Go to the top of the page
 
+Quote Post
adnega
сообщение Jan 28 2016, 09:34
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(Jenya7 @ Jan 28 2016, 10:54) *
честно говоря я мало что понял.

Утверждается, что (param1 && input1) || (param2 && (input2 || input3)) соответствует таблица истинности из вложенного файла.
Из значений переменных собираем индекс:
n = (param1 << 4) + (param2 << 3) + (input1 << 2) + (input 2 << 1) + (input3 << 0);
Затем получаем результат:
((0xFEF0EE00) >> n) & 1
Т.е. для вычисления (param1 && input1) || (param2 && (input2 || input3)) нам достаточно знать одно волшебное 32-битное число 0xFEF0EE00.
Причем, для меня важным моментом было время вычисления логической функции любой сложности из максимум 5 переменных.
При таком подходе оно фиксировано и минимально (не зависит от вида функции и от значений переменных).
А самое главное, легко описывается байт-кодом и элементарно вычисляется.

Теперь понятно?
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
=AK=
сообщение Jan 28 2016, 20:41
Сообщение #11


pontificator
******

Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483



Цитата(adnega @ Jan 28 2016, 20:04) *
Из значений переменных собираем индекс:
n = (param1 << 4) + (param2 << 3) + (input1 << 2) + (input 2 << 1) + (input3 << 0);
Затем получаем результат:
((0xFEF0EE00) >> n) & 1
Т.е. для вычисления (param1 && input1) || (param2 && (input2 || input3)) нам достаточно знать одно волшебное 32-битное число 0xFEF0EE00.

А теперь немножко расширим подход. Запланируем "таблицу" в 256 значений, соответственно, "волшебное число" будет состоять не из 4-битных полей, а из 8-битных, т.е из байт. "Bолшебное число" не будем ограничивать размерами, а запишем в байтовый массив произвольной длины. А в самой таблице будем держать адреса функций, которые будут выполняться, когда в массиве встретится соответствующий байт. В результате мы получим заготовку для простейшей Форт-машины, а байтовый массив будет содержать то, что называется "программой из байт-кодов".

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

Вот теперь мы получили вполне функциональную Форт-машину. Для того, чтобы она была полной по Тьюрингу, достаточно задать всего пару десятков байт-кодов. То есть, на такой машине можно выполнить любые вычисления, хоть искусственный интеллект создать.

Окончательно эта Форт-машина превратится в настоящий Форт после того, как (при помощи программ, написанных в байт-кодах) будет добавлен ввод-вывод, написан транслятор из исходного текста (или клавиатурного ввода) в байт-код, добавлены средства для организации и вызова программ в виде словарей.
Go to the top of the page
 
+Quote Post
Kopa
сообщение Jan 28 2016, 21:36
Сообщение #12


Знающий
****

Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861



Цитата(=AK= @ Jan 29 2016, 00:41) *
Окончательно эта Форт-машина превратится в настоящий Форт после того, как (при помощи программ, написанных в байт-кодах) будет добавлен ввод-вывод, написан транслятор из исходного текста (или клавиатурного ввода) в байт-код, добавлены средства для организации и вызова программ в виде словарей.

"Скелет" этого варианта? sm.gif
Кросс Форт на C: FVM factory

Сообщение отредактировал Kopa - Jan 28 2016, 21:36
Go to the top of the page
 
+Quote Post
=AK=
сообщение Jan 28 2016, 22:27
Сообщение #13


pontificator
******

Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483



Цитата(Kopa @ Jan 29 2016, 08:06) *
Кросс Форт на C: FVM factory


Ну да. Жаль, автор давно забросил этот проект. rolleyes.gif Был бы он в нормальной форме, то задача создания встроенного интерпретатора решалась бы за 5 минут. А так его полдня чистить и править надо, прежде чем заработает, скажем, под CodeBlocks.
Go to the top of the page
 
+Quote Post
Kopa
сообщение Jan 28 2016, 22:46
Сообщение #14


Знающий
****

Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861



Цитата(=AK= @ Jan 29 2016, 02:27) *
Ну да. Жаль, автор давно забросил этот проект. rolleyes.gif Был бы он в нормальной форме, то задача создания встроенного интерпретатора решалась бы за 5 минут. А так его полдня чистить и править надо, прежде чем заработает, скажем, под CodeBlocks.

Всегда есть надежда и вероятность вернуться к "допиливанию" заброшенных (или отложенных для продвижения будущих целей) авторских идей. (на том же sourceforge)
В тематике Форт их достаточно много, даже при "отсутствии" Форт программистов, как одной из движущих сил IT сообщества. sm.gif

P.S. На sourceforge мне был интересен из Форт с С в связке F-- проект.

Сообщение отредактировал Kopa - Jan 28 2016, 22:59
Go to the top of the page
 
+Quote Post
Огурцов
сообщение Jan 29 2016, 02:44
Сообщение #15


Гуру
******

Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



был бы весьма интересен проект под шарп
и причем, если это будет таки интерпретатор, то с выполнением бинарника от i86, чтобы не замарачиваться с кросс-компиляцией
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Jenya7   мини PLC.   Jan 27 2016, 08:11
- - _pv   вам скорее всего сюда для начала: http://electroni...   Jan 27 2016, 08:26
|- - Jenya7   Цитата(_pv @ Jan 27 2016, 14:26) вам скор...   Jan 27 2016, 09:10
|- - AlexandrY   Цитата(Jenya7 @ Jan 27 2016, 11:10) распа...   Jan 27 2016, 09:16
|- - iosifk   Цитата(Jenya7 @ Jan 27 2016, 12:10) распа...   Jan 27 2016, 11:05
- - AlexandrY   Цитата(Jenya7 @ Jan 27 2016, 10:11) вопро...   Jan 27 2016, 09:06
- - Jenya7   я подумал сделать что то вроде этого создал структ...   Jan 27 2016, 09:33
|- - AlexandrY   Цитата(Jenya7 @ Jan 27 2016, 11:33) я под...   Jan 27 2016, 09:41
||- - Jenya7   Цитата(AlexandrY @ Jan 27 2016, 15:41) Ну...   Jan 27 2016, 09:50
||- - AlexandrY   Цитата(Jenya7 @ Jan 27 2016, 11:50) а бол...   Jan 27 2016, 10:04
|- - RabidRabbit   Цитата(Jenya7 @ Jan 27 2016, 12:33) но ес...   Jan 27 2016, 10:02
|- - Jenya7   Цитата(RabidRabbit @ Jan 27 2016, 16:02) ...   Jan 27 2016, 10:12
||- - RabidRabbit   задействуйте фантазию как пример: для каждой стр...   Jan 27 2016, 10:17
|- - jcxz   Цитата(RabidRabbit @ Jan 27 2016, 16:02) ...   Jan 28 2016, 06:06
- - arhiv6   ТС, думаю Вам нужно копать в сторону парсеров мате...   Jan 27 2016, 10:14
|- - Jenya7   Цитата(arhiv6 @ Jan 27 2016, 16:14) ТС, д...   Jan 27 2016, 10:24
|- - RabidRabbit   Цитата(Jenya7 @ Jan 27 2016, 13:24) вопро...   Jan 27 2016, 10:36
- - smalcom   Цитатав микроконтролере! вы шутите так? вы пр...   Jan 27 2016, 10:39
- - arhiv6   Цитата(Jenya7 @ Jan 27 2016, 16:24) ну ра...   Jan 27 2016, 10:40
||- - Kopa   Тут уже советовали посмотреть варианты реализации ...   Jan 27 2016, 15:52
|||- - Jenya7   Цитата(Kopa @ Jan 27 2016, 21:52) Тут уже...   Jan 27 2016, 16:15
|||- - Kopa   Цитата(Jenya7 @ Jan 27 2016, 18:57) Желез...   Jan 27 2016, 16:22
|||- - adnega   Цитата(Jenya7 @ Jan 28 2016, 10:54) честн...   Jan 28 2016, 08:50
|||- - Jenya7   да. это интересно. но условие (param1 && i...   Jan 28 2016, 09:52
||||- - adnega   Цитата(Jenya7 @ Jan 28 2016, 12:52) да. э...   Jan 28 2016, 10:43
||||- - Jenya7   Цитата(adnega @ Jan 28 2016, 15:43) При и...   Jan 28 2016, 11:22
|||- - Dog Pawlowa   Одно не пойму - если автор не знает, чего он хочет...   Jan 29 2016, 02:58
|||- - =AK=   Цитата(Dog Pawlowa @ Jan 29 2016, 13:28) ...   Jan 29 2016, 07:59
||- - jcxz   Цитата(adnega @ Jan 28 2016, 13:42) Компи...   Jan 28 2016, 09:19
||- - iosifk   Цитата(jcxz @ Jan 28 2016, 12:19) Мой ком...   Jan 28 2016, 09:23
|- - demiurg_spb   http://www.beremiz.org   Jan 27 2016, 14:46
- - XVR   ТС изобрел велосипед с квадратными колесами и на л...   Jan 27 2016, 12:23
|- - iosifk   Цитата(XVR @ Jan 27 2016, 15:23) ТС изобр...   Jan 27 2016, 12:38
|- - Jenya7   Цитата(iosifk @ Jan 27 2016, 18:38) Вот т...   Jan 27 2016, 12:44
|- - iosifk   Цитата(Jenya7 @ Jan 27 2016, 15:44) я пре...   Jan 27 2016, 13:05
|- - Jenya7   Цитата(iosifk @ Jan 27 2016, 19:05) Вот т...   Jan 27 2016, 13:22
|- - iosifk   Цитата(Jenya7 @ Jan 27 2016, 16:22) я хоч...   Jan 27 2016, 14:20
|- - syoma   Цитата(Jenya7 @ Jan 27 2016, 15:22) я хоч...   Jan 27 2016, 14:41
- - XVR   'Сложные логические группировки' в простой...   Jan 27 2016, 13:47
- - sigmaN   Warning: Цитатаподумали бы не иначе докторскую н...   Jan 27 2016, 14:34
|- - Jenya7   Цитата(sigmaN @ Jan 27 2016, 20:34) Warni...   Jan 27 2016, 14:35
- - smalcom   Цитатато нам осталось? - увязать логику? - И с эти...   Jan 27 2016, 16:35
|- - Jenya7   Цитата(smalcom @ Jan 27 2016, 22:35) ну д...   Jan 27 2016, 16:43
|- - Kopa   Цитата(Jenya7 @ Jan 27 2016, 19:43) задач...   Jan 27 2016, 16:55
|- - Jenya7   Цитата(Kopa @ Jan 27 2016, 22:55) Выбирай...   Jan 27 2016, 16:57
- - Огурцов   если парсер у вас есть, то сядьте и напишите за ве...   Jan 27 2016, 16:46
|- - Jenya7   Цитата(Огурцов @ Jan 27 2016, 22:46) если...   Jan 27 2016, 16:54
|- - Огурцов   Цитата(Jenya7 @ Jan 27 2016, 16:54) вы по...   Jan 27 2016, 16:58
|- - Jenya7   Цитата(Огурцов @ Jan 27 2016, 22:58) и чт...   Jan 27 2016, 17:05
|- - Kopa   Цитата(Jenya7 @ Jan 27 2016, 20:05) с ним...   Jan 27 2016, 17:20
|- - Огурцов   Цитата(Jenya7 @ Jan 27 2016, 18:05) их на...   Jan 27 2016, 17:26
|- - Jenya7   Цитата(Огурцов @ Jan 27 2016, 23:26) в см...   Jan 27 2016, 19:37
|- - Kopa   Цитата(Jenya7 @ Jan 27 2016, 22:37) совет...   Jan 27 2016, 19:50
||- - syoma   Цитата(Kopa @ Jan 27 2016, 22:50) P.S. До...   Jan 27 2016, 20:07
||- - Jenya7   Цитата(syoma @ Jan 28 2016, 02:07) Самое ...   Jan 27 2016, 20:12
||- - syoma   Цитата(Jenya7 @ Jan 27 2016, 23:12) ну ра...   Jan 28 2016, 05:26
||- - Jenya7   Цитата(syoma @ Jan 28 2016, 10:26) Я вам ...   Jan 28 2016, 06:08
||- - jcxz   Цитата(Jenya7 @ Jan 28 2016, 12:08) у мен...   Jan 28 2016, 06:18
|||- - Jenya7   Цитата(jcxz @ Jan 28 2016, 11:18) Самое н...   Jan 28 2016, 07:14
||- - syoma   Цитата(Jenya7 @ Jan 28 2016, 08:08) мне б...   Jan 28 2016, 07:57
||- - iosifk   Цитата(syoma @ Jan 28 2016, 10:57) . По-м...   Jan 28 2016, 09:02
|- - _pv   Цитата(Jenya7 @ Jan 28 2016, 02:37) в смы...   Jan 27 2016, 21:56
|- - Огурцов   Цитата(Jenya7 @ Jan 27 2016, 20:37) в смы...   Jan 28 2016, 01:25
- - smalcom   Цитатазадача действительно плевая. для сильных спе...   Jan 28 2016, 00:21
- - sigmaN   И это еще Огурцов реально по-Божески заряжает. Так...   Jan 28 2016, 02:07
- - Огурцов   казалось бы причём тут зарядка, это ж чисто на пив...   Jan 28 2016, 02:57
- - k155la3   Судя по "постановке задачи" ТС, это похо...   Jan 28 2016, 07:31
- - syoma   adnega, неужели в наше время, микропроцессорные ре...   Jan 28 2016, 11:06
|- - adnega   Цитата(syoma @ Jan 28 2016, 14:06) adnega...   Jan 28 2016, 12:41
- - syoma   Цитатаоличное решение проблемы. я восхищен, не поб...   Jan 28 2016, 11:31
- - syoma   ЦитатаВот Изаграф ему бы наверное подошел, но толь...   Jan 29 2016, 10:52


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 02:32
Рейтинг@Mail.ru


Страница сгенерированна за 0.01669 секунд с 7
ELECTRONIX ©2004-2016