none
VISUAL BASIC 2010 金字塔123...N..321 RRS feed

  • 問題

  • 各位大大 不好意思小弟剛碰程式語言

    有一些問題 

    小弟我照著課本做 只會 123...N

    後面N..321 小弟我真的想不到

    我也GOOGLE過了

    但我照著他打的還是沒有跟他一樣的 123..N..321

    這是小弟的程式

    小弟

     Label1.Text = Label1.Text & If(J <= Int((2 * I + 1) / 2) + 1, K = K + 1, K = K - 1)

    這一行IF 中間跟後面改成K = K +1 跟K =K - 1

    結果出來是一個三角形但數值全部都顯示  FLASE

    希望大大可以幫我解決 感恩


        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim I As Integer
            Dim J As Integer
            Dim K As Integer = 1


            For I = 0 To 14 Step 1
                Label1.Text = Label1.Text & vbCrLf
                For J = 1 To 2 * I + 1 Step 1
                    Label1.Text = Label1.Text & If(J <= Int((2 * I + 1) / 2) + 1, K = K + 1, K = K - 1)


                Next
            Next

        End Sub

    2019年12月24日 下午 09:07

解答

  • 您可以參考一下這篇討論的做法:

    Number Triangle 1

    • 已標示為解答 冠鴻 2019年12月25日 上午 05:53
    2019年12月25日 上午 12:48
  • ...

    小弟

     Label1.Text = Label1.Text & If(J <= Int((2 * I + 1) / 2) + 1, K = K + 1, K = K - 1)

    這一行IF 中間跟後面改成K = K +1 跟K =K - 1

    結果出來是一個三角形但數值全部都顯示  FLASE

    ...

    您誤把 [IF 運算子] 當成 [IF 陳述式] 來用了.

    If 運算子

    If...Then...Else 陳述式


    Ader

    • 已標示為解答 冠鴻 2019年12月25日 上午 05:53
    2019年12月25日 上午 04:22
  • IF 運算式

    IF( argument1, argument2, argument3 )

    我的理解是

    argument1 是條件

    如果TRUE的話執行 argument2

    但如果是FALSE的話執行 argument3

    這樣的話不是也跟陳述式一樣嗎

    麻煩大大 感恩了

    argument2, argument3 是傳回 [結果],
    K = K + 1 : 等號兩邊不同, 傳回結果是 False
    K = K - 1  : 等號兩邊不同, 傳回結果也是 False
    所以 Label1.Text = Label1.Text & If(J <= Int((2 * I + 1) / 2) + 1, K = K + 1, K = K - 1)
    結果等同於 Label1.Text = Label1.Text & False

    我猜您想要的是增減 K 值:

    K = If(J <= Int((2 * I + 1) / 2) + 1, K + 1, K - 1)
    Label1.Text &= K


    Ader



    • 已編輯 Ader.Chen 2019年12月25日 上午 05:17
    • 已標示為解答 冠鴻 2019年12月25日 上午 05:52
    2019年12月25日 上午 05:09

所有回覆

  • 您可以參考一下這篇討論的做法:

    Number Triangle 1

    • 已標示為解答 冠鴻 2019年12月25日 上午 05:53
    2019年12月25日 上午 12:48
  • ...

    小弟

     Label1.Text = Label1.Text & If(J <= Int((2 * I + 1) / 2) + 1, K = K + 1, K = K - 1)

    這一行IF 中間跟後面改成K = K +1 跟K =K - 1

    結果出來是一個三角形但數值全部都顯示  FLASE

    ...

    您誤把 [IF 運算子] 當成 [IF 陳述式] 來用了.

    If 運算子

    If...Then...Else 陳述式


    Ader

    • 已標示為解答 冠鴻 2019年12月25日 上午 05:53
    2019年12月25日 上午 04:22
  • 稍微改了一下您的程式, 供參考:

            For I = 0 To 14 Step 1
                Label1.Text &= vbCrLf
                K = 0
                For J = 1 To 2 * I + 1 Step 1
                    K = If(J <= Int((2 * I + 1) / 2) + 1, K + 1, K - 1)
                    Label1.Text &= K
                Next
            Next

    編輯:

    不好意思, 剛剛才發現原來 tihs 前輩提供連結的文章下方就有範例程式碼了...
    我多此一舉...


    Ader



    • 已編輯 Ader.Chen 2019年12月25日 上午 04:45
    2019年12月25日 上午 04:40
  • 大大不好意思 我看了之後不太了解
    我理解的意思是說
    IF...Then...Else陳述式
    1. 是設 IF 條件 THEN 
      [ statements ] 
      判斷為true時 [ statements ] 執行
    2. elseif條件 then
        [ elseifstatements] 
         前面 if 判斷為fALSE再次判斷
         true時 [ elseifstatements] 執行
    3.     else
          [ elsestatements ]
           End if 


          然後前面的 IF 跟 elseif  都是FALSE時
           才執行 [ elsestatement ]
    2019年12月25日 上午 04:54
  • IF 運算式

    IF( argument1, argument2, argument3 )

    我的理解是

    argument1 是條件

    如果TRUE的話執行 argument2

    但如果是FALSE的話執行 argument3

    這樣的話不是也跟陳述式一樣嗎

    麻煩大大 感恩了

    2019年12月25日 上午 04:58
  • 不會的  感謝大大 把刀相助 

    非常感謝

    2019年12月25日 上午 04:59
  • 非常謝謝大大
    2019年12月25日 上午 04:59
  • IF 運算式

    IF( argument1, argument2, argument3 )

    我的理解是

    argument1 是條件

    如果TRUE的話執行 argument2

    但如果是FALSE的話執行 argument3

    這樣的話不是也跟陳述式一樣嗎

    麻煩大大 感恩了

    argument2, argument3 是傳回 [結果],
    K = K + 1 : 等號兩邊不同, 傳回結果是 False
    K = K - 1  : 等號兩邊不同, 傳回結果也是 False
    所以 Label1.Text = Label1.Text & If(J <= Int((2 * I + 1) / 2) + 1, K = K + 1, K = K - 1)
    結果等同於 Label1.Text = Label1.Text & False

    我猜您想要的是增減 K 值:

    K = If(J <= Int((2 * I + 1) / 2) + 1, K + 1, K - 1)
    Label1.Text &= K


    Ader



    • 已編輯 Ader.Chen 2019年12月25日 上午 05:17
    • 已標示為解答 冠鴻 2019年12月25日 上午 05:52
    2019年12月25日 上午 05:09
  • 感恩大大 

    這就是我要的感恩

    2019年12月25日 上午 05:43
  • this 大大 

    不好意思 

    Dim A As Integer
    Dim B As Integer
    Dim X As Integer
    Dim OSP As Integer
    Dim Z As Integer
    Z = 5
    X = 1
    For A = 1 To 3
    For OSP = 1 To Z
    Print ".";
    Next OSP
    Z = Z - 2
    Print X * X;
    X = X * 10 + 1
    Print
    Next A

    這個是您介紹給我的論壇解答

    我直接複製貼上要先看動作 

    可是我的 print這個指令

    他直接錯誤 後來想說要幫它 print()

    但還是不能用

    我不清楚這個東西

    我看很多大大都有用這個

    可是我在我的課本看都沒看過 也不知道怎麼用

    拜託大大 麻煩了 感恩

    2019年12月25日 上午 05:52
  • this 大大 

    不好意思 

    Dim A As Integer
    Dim B As Integer
    Dim X As Integer
    Dim OSP As Integer
    Dim Z As Integer
    Z = 5
    X = 1
    For A = 1 To 3
    For OSP = 1 To Z
    Print ".";
    Next OSP
    Z = Z - 2
    Print X * X;
    X = X * 10 + 1
    Print
    Next A

    這個是您介紹給我的論壇解答

    我直接複製貼上要先看動作 

    可是我的 print這個指令

    他直接錯誤 後來想說要幫它 print()

    但還是不能用

    我不清楚這個東西

    我看很多大大都有用這個

    可是我在我的課本看都沒看過 也不知道怎麼用

    拜託大大 麻煩了 感恩

    那一段是(傳統) VB6 的語法.
    舊愛 VB6,
    骨灰級碼農為了維護舊專案不得不將她留在身邊,
    現在應該沒有人會再用她寫新專案了吧(?)
    新同學可以把她忽略了.


    Ader

    2019年12月25日 下午 04:12
  • 原來是這樣 

    感恩Ader前輩再次解惑

     

    2019年12月26日 上午 12:49