Автокликер Clickermann :: Форум

Основной раздел => Общие вопросы => Topic started by: Svarog on April 29, 2018, 01:32:53 PM

Title: Вычисление примера в строковой переменной
Post by: Svarog on April 29, 2018, 01:32:53 PM
Приветствую уважаемых пользователей Кликермана и прошу небольшой помощи)
На входе имеем капчу из арифметического примера состоящего из двух одно или двухзначных чисел вида:

1+4=? или 2+45=? или 23-1=? или 99+57=?

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

 $all_str= 1+4=? или 2+45=? или 23-1=? или 99-57=?

то есть строковую переменную...
И собственно, сам вопрос. Как мне понять (в арифметическом смысле) знак в примере, плюс или минус и решить эту капчу?
Фильтруя сию переменную, получаю чистый пример:

$all_str = STRFILTER($all_str, "=?", 0)

4+67 или 45-23 или 67-2... и т.д.
снова фильтрую строку, получаю переменную знака: плюс или минус:

$ZN= STRFILTER($all_str, "-+", 1)

далее фильтрую получившийся результат по знаку $ZN, вношу данные в массив и имею два числа в массиве:

strseparate($all_str, $ZN, $arr)

И вот тут у меня случился глюк, не могу понять как решить этот пример, складывать или вычитать? Т.е. проблема с определением знака.
Решение сканировать картинку знака - не комильфо... кажется мне, что есть более элегантное решение, а вот найти его не могу, так как в строковых переменных пока еще не рублю). И вот собственно прошу помощи у более опытных товарищей) 
Title: Re: Строковая переменная, прошу помощи)
Post by: Oraven on April 29, 2018, 02:16:59 PM
Code: (clickermann) [Select]
$all_str= "99+57=?"
$all_str = STRFILTER($all_str, "=?", 0)

IF(STRPOS($all_str, "+") > 0)
   STRSEPARATE($all_str, "+", $arr)
   $all_str = $arr[0]+$arr[1]
ELSE
   STRSEPARATE($all_str, "-", $arr)
   $all_str = $arr[0]-$arr[1]
END_IF
UNDEFINE($arr)

LOGWRITE ($all_str)
HALT
Title: Re: Вычисление примера в строковой переменной
Post by: Svarog on April 29, 2018, 06:17:50 PM
Да да да!!!
Вот на что ума у меня и не хватило))) сравнить с нулем!
Спасибо уважаемый наш Oraven. Все чудненько работает)