Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Проблема с условным оператором If / 9 сообщений из 9, страница 1 из 1
23.08.2011, 12:40
    #37407673
Серьга
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с условным оператором If
В тексте программы у меня (наряду с двумя другими) присутствует условие вывода на форму 38-t-k>7, но вывод осуществляется и при 38-t-k=7. В прилагаемом файле текст программы.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
Dim i As Long, t As Integer, s As Single, b As Integer, k As Integer
Private Sub Form_Click()
Form1.Cls
Form1.Refresh
For i =  1  To  99999 
s = i *  10  ^ (k -  38 )
t =  0 
While i Mod  10  ^ (t +  1 ) =  0 
t = t +  1 
Wend
falg =  0 
falg =  38  - t - k
If falg >  7  Then b =  5 
r = s - i *  10  ^ (k -  38 )
ls = Len(CStr(s))
li = Len(CStr(i)) + b - t
If ls > li And r <>  0  And k >  25  Then
Form1.Print s, i
L= L +  1 
End If
Next i
Form1.Caption = Str$(k) + "   " + Str$(L)
k = k +  1 
End Sub
Private Sub Form_Load()
k =  25 
L =  0 
End Sub
Модератор: не надо пожалуйста извращений в виде вордового файла с текстом программы, когда существуют специально предназначенные для этого способы
...
Рейтинг: 0 / 0
23.08.2011, 12:55
    #37407710
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с условным оператором If
Серьга,

не пробовали (38-t-k)>7
...
Рейтинг: 0 / 0
23.08.2011, 14:18
    #37407892
Серьга
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с условным оператором If
Не помогает.
...
Рейтинг: 0 / 0
23.08.2011, 18:48
    #37408581
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с условным оператором If
СерьгаВ тексте программы у меня (наряду с двумя другими) присутствует условие вывода на форму 38-t-k>7
Нет такого условия.
...
Рейтинг: 0 / 0
23.08.2011, 21:18
    #37408749
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с условным оператором If
Серьга,

вы знакомы с основами отладки (точки остановки, трассировка, watch)?
...
Рейтинг: 0 / 0
23.08.2011, 21:41
    #37408767
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с условным оператором If
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
Option Explicit
Dim i As Long, t As Integer, s As Single, b As Integer, k As Integer
Dim falg As Integer, r As Long, ls As Integer, li As Integer, L As Integer

Private Sub Form_Click()
Form1.Cls
Form1.Refresh

For i =  1  To  99999 
  s = i *  10  ^ (k -  38 )
  t =  0 
  While i Mod  10  ^ (t +  1 ) =  0 
    t = t +  1 
  Wend
  falg =  0 
  falg =  38  - t - k
  If falg =  7  Then Stop
  If falg >  7  Then b =  5 
  r = s - i *  10  ^ (k -  38 )
  ls = Len(CStr(s))
  li = Len(CStr(i)) + b - t
  If ls > li And r <>  0  And k >  25  Then
    Form1.Print s, i
    L = L +  1 
  End If
Next i
Form1.Caption = Str$(k) + "   " + Str$(L)
k = k +  1 

End Sub

Private Sub Form_Load()
k =  25 
L =  0 
End Sub

Запустив программу мы видим, что falg никогда не принимает значение 7. Разбирайтесь с алгоритмом
...
Рейтинг: 0 / 0
24.08.2011, 00:13
    #37408903
скукотища
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с условным оператором If
Shocker.ProЗапустив программу ...Запустив программу и кликнув по форме 3 раза мы-таки увидим, что flag принимает значение 7

2 Серьга:
Условие вывода на фору отнюдь не 38-t-k>7
Это Вас кто-то обманул.(с)

ПОЛУОФФ
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
'hint:
'=============
for i ...
t =  0 
While i Mod  10  ^ (t +  1 ) =  0 
t = t +  1 
Wend


'заменить на:
t= 0 
for i ...
..
if i mod  10 ^(t+ 1 )= 0  Then t = t+  1 

'hint2:
'=============
for i=...
s = i *  10  ^ (k -  38 )
...
r = s - i *  10  ^ (k -  38 )
ls = Len(CStr(s))
li = Len(CStr(i)) + b - t
If ls > li And r <>  0  And k >  25  Then
Form1.Print s, i
L= L +  1 
End If

'заменить на:
for i= ...
...
If FALSE Then
  Form1.Print s, i
  L= L +  1 
End If

' и перестать морочить честны'м людям головы..
...
Рейтинг: 0 / 0
24.08.2011, 00:23
    #37408911
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с условным оператором If
скукотища, Браво! У меня лично не хватило сил вникнуть в эту мутотень этот замороченный алгоритм

...
Рейтинг: 0 / 0
24.08.2011, 00:34
    #37408921
скукотища
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с условным оператором If
Shocker.Pro,
я ещё и вышивать могу, и на машинке... (с) Кот Матроскин
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Проблема с условным оператором If / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]