Вопрос по циклам Подскажите пожалуйста, как реализовать на VB такую задачу: Есть набор диапазонов - например 0-0,1 0,1-0,2 0,2-0,3 Пользователь вводит число из одного из этих диапазонов, причем в зависимости от того в какой диапазон число попадает происходит вычисление по одной из формул. Сам решил сделать это в циклах: Код: n=val(text1.text) // Переводим число из текста числовой формат For i=0 to 0.3 For j=0 to 0.1 if n=j then c=a+b exit for // выходим из одного цикла exit for // выходим из второго цикла Else j=j+0.001 End If Next j i=i+0.001 Next i Но нифига так не работает не пойму почему.
D> Сам решил сделать это в циклах: D> Код: D> n=val(text1.text) // Переводим число из текста числовой формат D> For i=0 to 0.3 D> For j=0 to 0.1 D> if n=j then D> c=a+b D> exit for // выходим из одного цикла D> exit for // выходим из второго цикла D> Else D> j=j+0.001 D> End If D> Next j D> i=i+0.001 D> Next i D> это пример для одного из диапазонов. Планировал так: n=val(text1.text) // Переводим число из текста числовой формат For i=0 to 0.3 For j=0 to 0.1 if n=j then c=a+b exit for // выходим из одного цикла exit for // выходим из второго цикла Else j=j+0.001 End If Next j For j=0.1 to 0.2 if n=j then c=a+b exit for // выходим из одного цикла exit for // выходим из второго цикла Else j=j+0.001 End If Next j For j=0.2 to 0.3 if n=j then c=a+b exit for // выходим из одного цикла exit for // выходим из второго цикла Else j=j+0.001 End If Next j i=i+0.001 Next i
re:чПРТПУ РП ГЙЛМБН Честно сказать, не понял, что ты в этих циклах делаешь %-\ А вообще, в Басике по умолчанию шаг цикла равен 1, то есть твои циклы дольше 1 шага работать не будут. Используй формат For i=0 to 0.3 Step 0.001. Короче, слово Step ключевое.
re:чПРТПУ РП ГЙЛМБН А почему не сделать так (Басик не помню почти...): public Sub GetInterval(str as string) as integer //короче объявляем функцию со строковым параметром и целочисленным значением dim n as integer n=val(str) if (n>0) and (n<0.1) then GetInterval=1 // ну или как там значения возвращаются? if (n>0.1) and (n<0.2) then GetInterval=2 if (n>0.2) and (n<0.3) then GetInterval=3 EndSub // совственно конец функции И дальше a=GetInterval(mystr) select a of case 1: Func1 case 2: Func2 case 3: Func3 Ну или что-то в этом духе. P.S. Basic забыл 5 лет назад, так что сильно не пинать.
re:чПРТПУ РП ГЙЛМБН УЖОСНАХ 3 блока if... then помогут. И при чем тут циклы? Ну разве что менструальные
Г> УЖОСНАХ Г> 3 блока if... then помогут. Г> И при чем тут циклы? Г> Ну разве что менструальные Да сам уже понял. Тупил просто с вечера....причем жутко. Переклинило на циклах и все тут. Vastey - спасибо!