Destruction wrote:Code: Select all
if (30<x) and (x<40)
Не вижу логики, будет верно если x < 30, зачем тогда двойное условие? Возможно имелось в виду так:Code: Select all
if (30>x) and (x<40)
30<x == x>30
x<40 == x<40 => x> 30 and x<40
Moderators: Murderator+, Murderator
Destruction wrote:Code: Select all
if (30<x) and (x<40)
Не вижу логики, будет верно если x < 30, зачем тогда двойное условие? Возможно имелось в виду так:Code: Select all
if (30>x) and (x<40)
CRazych wrote:Вы на условие не сматрите это для примера!
Просто мне нужно знать если способ просто упрастить конструкцию.
Я просто подозреваю, что скорость работы этого скрипта будет давольно не быстрая!
CRazych wrote:всё уже разобрался всё проще некуда )
CRazych wrote:Как это понять вырезаешь?
Каким образом? (пример приведи)
Code: Select all
Sub GetWord( st, nom )
; (c) Edred
; Возвращает слово из строки str за номером num
; если такого слова нет - возвращаем ''
;
; Разделителем слов считаем пробел. Несколько пробелов подряд считаются за один.
; Функция сделана без рекурсии специально для считывания слов из сверхдлинных строк!
;
VAR tmpst, i, dlin, kol = 0, start = 0
dlin = len( st )
For i=0 To dlin - 1
If mid( st, i, 1 ) == ' ' OR i == dlin - 1 Then
kol = kol + 1
If kol == nom Then
; это первый пробел после нужного нам слова
tmpst = mid( st, start, i - start )
return tmpst
Else
While mid( st, i, 1 ) == ' '
i = i + 1
Wend
If kol == nom - 1 Then
start = i
Endif
Endif
Endif
Next
tmpst = ''
return tmpst
endsub
Code: Select all
sub main()
var num,z
num=abc1 abc2 abc3
нужно продолжить код дальше
Code: Select all
sub GetWord(строка, номер_слова)
var текущая_позиция = 0, начало_слова = 0, конец_слова = 0
строка = строка + ' '
while номер_слова <> 0
if строка[текущая_позиция] == ' ' then
номер_слова = номер_слова - 1
начало_слова = конец_слова
конец_слова = текущая_позиция
end if
текущая_позиция = текущая_позиция + 1
wend
return Mid(строка, начало_слова, конец_слова - начало_слова)
end sub
z=val(GetWord('abc1 abc2 abc3', 3))