ghoob321 发表于 2016-5-20 12:26

VB 算式

如题

A、B、C、D、E、F、X、Y、Z

分别代表1~9间互不相等的九个数字

且组合后ABC<DEF<XYZ

ABC相当于(100A+10B+C),余同。
如何用VB完成左示答案(按升序排列)

我的代码如下
Private Sub Command1_Click()


For A = 1 To 3
For B = 1 To 9
For C = 1 To 9
For D = 1 To 5
For E = 1 To 9
For F = 1 To 9
For X = 1 To 9
For Y = 1 To 9
For Z = 1 To 9

i = 100 * A + 10 * B + C
j = 100 * D + 10 * E + F
k = 100 * X + 10 * Y + Z

If i + j = k And i < j And j < k Then Print i & "+" & j & "=" & k
Next
Next
Next
Next
Next
Next
Next
Next
Next

End Sub


怎么运行时不是我要的结果
我要的是   123+456=789   之类的,并且还死机。



seemk 发表于 2016-5-20 14:46

这样的对吗?

爲妳¢執著 发表于 2016-5-20 14:35

Private Sub Command1_Click()


For A = 1 To 3
    For B = 1 To 9
      For C = 1 To 9
            For D = 1 To 5
                For E = 1 To 9
                  For F = 1 To 9
                        For X = 1 To 9
                            For Y = 1 To 9
                              For Z = 1 To 9
                              
                              DoEvents

                              i = 100 * A + 10 * B + C
                              j = 100 * D + 10 * E + F
                              k = 100 * X + 10 * Y + Z

                              If i + j = k And i < j And j < k Then Debug.Print (i & "+" & j & "=" & k)
                              Next
                            Next
                        Next
                  Next
                Next
            Next
      Next
    Next
Next

End Sub



这样就不会无反应了(假死)   不过没明白你这段代码是干嘛的...

smisjk62 发表于 2016-5-20 12:43

虽然我懂一点VB但是我看不懂你要做啥

q183553 发表于 2016-5-20 13:01

不懂你想表达啥

zrz444 发表于 2016-5-20 13:09

按理IF,必有ENG IF。。。

dearcia 发表于 2016-5-20 13:10

明显嵌套太多了~

dearcia 发表于 2016-5-20 13:17

需要改进一下算法
你就是想
For A =1 to 999
For B =1 to 999
如果 A<B 则
如果 A、B、A+B 里面没有0 则
    打印出 A+B=

ufo0033 发表于 2016-5-20 13:24

你的A-F    X、Y、Z互不相等呢

秋水 发表于 2016-5-20 13:36

本帖最后由 秋水 于 2016-5-20 13:51 编辑

不明白你要做什么,但你写的这个程序循环嵌套了九层。

你是要找出111-400与111-600之间,相加和不过999的数吗?如果是 python可以这样实现。
for x in range(111,400):
    for y in range(111,600):
      if x+y<=999:
            print(x,'+',y,'=',x+y)
      else:
            pass

VB不会,试着写一下吧
For i = 111 To 399
            For j = 111 To 599
                If i + j <= 999 Then Print(i, "+", j, "j", i + j)
            Next
      Next

sunyshen 发表于 2016-5-20 14:18

试运行了一下你的程序,为了防止死机,在最里面循环里面加了个DoEvents,运行了好几分钟都没运行完,应该是循环套的太多了,下面是部分运行结果,希望能帮助到你
111+113=224
111+114=225
111+115=226
111+116=227
111+117=228
111+118=229
111+121=232
111+122=233
111+123=234
111+124=235
111+125=236
111+126=237
111+127=238
111+128=239
111+131=242
111+132=243
111+133=244
111+134=245
111+135=246
111+136=247
111+137=248
111+138=249
111+141=252
111+142=253
111+143=254
111+144=255
111+145=256
111+146=257
111+147=258
111+148=259
111+151=262
111+152=263
111+153=264
111+154=265
111+155=266
111+156=267
111+157=268
111+158=269
111+161=272
111+162=273
111+163=274
111+164=275
111+165=276
111+166=277
111+167=278
111+168=279
111+171=282
111+172=283
111+173=284
111+174=285
111+175=286
111+176=287
111+177=288
111+178=289
111+181=292
111+182=293
111+183=294
111+184=295
111+185=296
111+186=297
111+187=298
111+188=299
111+211=322
111+212=323
111+213=324
111+214=325
111+215=326
111+216=327

天使无声 发表于 2016-5-20 14:32

算法不合理。需改算法,9层嵌套太多
页: [1] 2
查看完整版本: VB 算式