Я нифига не понимаю

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
kif
Постоялец
Постоялец
 
Сообщения: 736
Зарегистрирован: 10.12.2001 (Пн) 18:06
Откуда: Украина, Одесса

Я нифига не понимаю

Сообщение kif » 13.02.2004 (Пт) 17:46

Dim i As Integer
Dim N As Integer

N = 4
For i = 1 To N
List1.AddItem "i = " & i & "; N = " & N
If i = 2 Then N = N + 1
Next

i=1; n=4
i=2; n=4
i=3; n=5
i=4; n=5

Итераций то - 4 :evil: блин!!!!!!!!!!!
Братья и сестры, что вы делаете???
Ведь вы же братья и сестры.

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 13.02.2004 (Пт) 18:39

И что? В чем вопрос то? Результат работы соответствует тому, что в коде запрограммировано.

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 13.02.2004 (Пт) 18:50

RayShade писал(а):И что? В чем вопрос то? Результат работы соответствует тому, что в коде запрограммировано.

Ну, он, видишь, верхнюю границу цикла меняет внутри. Видимо, хочет, чтобы она перевычислялась...

Используй другие виды циклов, которые всегда условие проверяют, если уж очень надо... Смотри только, не улети в бесконечный цикл.
Код: Выделить всё
Dim i As Integer
Dim N As Integer

N = 4
i = 1
While i <= N
    Debug.Print "i = " & i & "; N = " & N
    If i = 2 Then N = N + 1
   
    i = i + 1
Wend
Учиться - значит открывать для себя то, что уже знаешь. <...> Учить - значит напоминать другим о том, что они знают это также хорошо, как и ты. <...> Лучше всего ты учишь тому, чему тебе самому больше всего надо научиться. (Р. Бах)

Sergey-13
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 119
Зарегистрирован: 23.01.2004 (Пт) 16:02
Откуда: Саранск

Сообщение Sergey-13 » 13.02.2004 (Пт) 18:55

kif имел ввиду что он в числе меняет его диапазон, т.е. с N=4 до N=5 а результатов всего 4
В цикле For - Next нельзя програмно менять диапазон
Если уж та нужно используй простой IF :?: :?:

corgi
ToyMan
ToyMan
 
Сообщения: 1367
Зарегистрирован: 01.10.2002 (Вт) 9:59
Откуда: Россия, Москва

Сообщение corgi » 13.02.2004 (Пт) 22:26

менять то можно, но он вычисляется один раз в начале цикла
Ничто так не ограничивает полёт мысли программиста, как компилятор

Шурик
Самогонщик
Самогонщик
Аватара пользователя
 
Сообщения: 1657
Зарегистрирован: 30.06.2003 (Пн) 13:27
Откуда: из запоя :))))) Матных сообщений: 972

Re: Я нифига не понимаю

Сообщение Шурик » 16.02.2004 (Пн) 12:06

kif писал(а):Dim i As Integer
Dim N As Integer

N = 4
For i = 1 To N
List1.AddItem "i = " & i & "; N = " & N
If i = 2 Then N = N + 1
Next

i=1; n=4
i=2; n=4
i=3; n=5
i=4; n=5

Итераций то - 4 :evil: блин!!!!!!!!!!!

Можно и так:
If i > 2 Then N = N + 1 :D
Хотя я и сам не знаю что ты хочешь??? :?

kif
Постоялец
Постоялец
 
Сообщения: 736
Зарегистрирован: 10.12.2001 (Пн) 18:06
Откуда: Украина, Одесса

Сообщение kif » 16.02.2004 (Пн) 13:11

Я Вам просто объясню задачу

Человек ушел в отпуск на 30 дней
если в течение его отпуска есть праздники установленные государством (8 марта) то этот день не входит в его отпуск, соответственно отпуск уведичивается на 1 день

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

дело еще в том что дата начиления складывается из
1 - дата начала отпуска
2 - день отпуска (т.е. переменная цикла - i)

CurrentDate=DateOtpusk + i

Я то уже все переделал, только времени потерял .... пока нашел "ошибку"
Братья и сестры, что вы делаете???
Ведь вы же братья и сестры.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 20

    TopList