2

VisualBasicでひし形を印刷しようとしています。コードの上半分は完全に機能しますが、何らかの理由で下半分を同じように機能させることができません。下半分では、o(ひし形を作るために使用)の後にスペースが印刷され、oの数が減るとプログラムは無限ループになりますか?誰か助けてもらえますか?

下半分は完全に間違っているかもしれません、私はまだそれに取り組んでいます

コードは次のとおりです。

Option Explicit On
Imports System

Module diamond
    Sub Main()
        ' The o variable will make the "o" part of the diamond, the space variable will be for places without an "o". 
        Dim row, spaces, o as Integer  
        'Dim index as integer

        'For top half
        ' Count the row number.
        row = 1
        spaces = 9
        o = 1
        Do until row = 20
            ' Count of row increases every loop until half of diamond is done.
            row +=1
            ' Write 1 less space every line.
            For row = 1 to spaces
                console.write(" ")
            Next row
            spaces -=1
            'Write 2 more "o"'s every loop.
            For row = 1 to o 
                Console.write("o")
            Next row    
            o +=2
            Console.Writeline
        Loop
        'Top of the diamond is done

        'This is the bottom half, which will not work.
        row = 20

        Do until row = 40
            row +=1
            For row = 20 to spaces
                Console.write(" ")
            Next row
            spaces +=1
            'Write 2 less "o"'s every loop.
            For row = 20 to o 
                Console.write("o")
            Next row    
            o -=2
            Console.Writeline
        Loop
    End Sub
End Module 
4

1 に答える 1

3

問題は、ループrowの行カウンターとして、whileまたループのループインデックスとして使用していることですfor。前半がまったくうまくいかないのは偶然です。後半はループrowに乗っ取られ続けるため、40に達することはありません。for

For i = 20 to spaces代わりに、などを試してください。

于 2012-10-11T18:49:04.473 に答える