-2

Im пытается создать вспомогательную процедуру, которая рисует последовательность пробелов и звезд, а затем выводит результат. Пользователь вводит количество звезд и количество пробелов, которые они хотели бы, а затем выводит звезды и пробелы на экране. Например, DrawStars (4,5) выводит ---- *****.Действительно борется с подчиненными процедурами при создании программы рисования звезд

Вот мой код до сих пор:

Module Module1 

Sub Main() 
    Dim Spaces As Integer = 0 
    Dim Stars As Integer = 0 
    Dim TotalChars As Integer = 0 

    Console.WriteLine("Enter the number of spaces you want to enter") 
    Spaces = Console.ReadLine 

    Console.WriteLine("Enter the number of stars you want to enter") 
    Stars = Console.ReadLine 

    TotalChars = Spaces + Stars 

    DrawStars(Spaces, Stars, TotalChars) 

    Console.WriteLine("") 

    Console.ReadLine() 
End Sub 

Sub DrawStars(ByVal Spaces As Integer, ByVal Stars As Integer, ByVal TotalChars As Integer) 
    Dim Output As String 

    Do Until TotalChars = Stars + Spaces 
     If Spaces > 0 The 
      Output = Console.ReadLine 
     Else 
      Console.WriteLine("*") 
     End If 
    Loop 

End Sub 

End Module

+0

вам нужно 2 Для циклов один для количества пробелов и один для звезд, просто добавьте их в один и тот же выходной var; он не нуждается в 'totalchars' – Plutonix

ответ

0

Необходимо изменить ваше состояние. TotalChars уже Stars + Spaces соответствует Main.

Do Until TotalChars = Stars + Spaces '<-- Already True! 
    If Spaces > 0 The 
     Output = Console.ReadLine 
    Else 
     Console.WriteLine("*") 
    End If 
Loop 

Вы также не увеличивающиеся TotalChars так что давайте просто поменять местами 2 For петель, так как @dotnetom уже показал простой способ создать строку с пробелами и звездами.

For i As Integer = 1 To Spaces 
    Console.Write(" ") 
Next 
For i As Integer = 1 To Stars 
    Console.Write("*") 
Next 

Это не должно быть предназначено как копировать и вставить решения. Это больше пример и то, что я видел с вашим кодом =)

+0

Тогда есть ли способ легко позволить пользователю перейти на следующую строку и продолжать движение, создавая, как рисунок? – JeffCottonBWFC

+0

@JeffCottonBWFC добавить еще один параметр, чтобы указать количество строк для повторения – Plutonix

+1

@JeffCottonBWFC На основании вопроса и кода, который вы предоставили, я действительно точно не знаю, какой тип вывода вы ожидали. У вас была переменная 'Output', которая была полностью не использована, и' Spaces 'всегда будет'> 0'. – TyCobb

1

Простейшим случаем было бы создать 2 строки с помощью this constructor overload:

Sub DrawStars(ByVal Spaces As Integer, ByVal Stars As Integer, ByVal TotalChars As Integer) 
    Console.Write(new String(" "C, Spaces)) 
    Console.Write(new String("*"C, Stars)) 
End Sub 

Приведенный выше код не защищен от неверные входные параметры.

+0

Я думаю, что он хочет их в одной строке – Plutonix

+0

Спасибо, что заметили, обновили ответ – dotnetom

+0

Проблема в том, что код должен иметь пробелы, чтобы помочь отступу для создания изображения, которое может охватывать несколько строк, если необходимо – JeffCottonBWFC

Смежные вопросы