Powershell 5 нарисовать треугольник из звездочек - PullRequest
0 голосов
/ 06 ноября 2018

Мне нужно написать программу, которая рисует треугольник из звездочек (*) в Powershell 5.

Насколько я смог понять, у меня проблема с частью "using_system" ...

Вот что я написал сейчас:

using_System;
static int Main(){
for (int i = 0; i -lt 5; i++)
    {
    for (int x = 0; x -lt 5; x++)
    {
    Console.Write(" ");
    }

    for (int j = 5 - i; j -gt 0; j--)
    {
    Console.Write(" ");
    }

    for (int k = 0; k -lt 2 * i + 1; k++)
    {
    Console.Write("*");
    }
    Console.Write("\n");
}
clear-host
return 0;
}

Если возможно, я бы хотел включить принцип, который позволяет пользователю вводить желаемую высоту треугольника (из скольких линий он должен состоять).

Спасибо, что уделили время.

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018

вот два способа сделать эту работу. 1-й пытается следовать коду C ++, в то время как 2-й использует подход «построить строку» ... оба выводят пирамиду высотой 5 строк с основанием шириной 9 символов.

for ($i= 0; $i-lt 5; $i++)
    {
    for ($x = 0; $x -lt 5; $x++)
        {
        Write-Host ' ' -NoNewline
        }

    for ($j = 5 - $i; $j -gt 0; $j--)
        {
        Write-Host ' ' -NoNewline
        }

    for ($k = 0; $k -lt 2 * $i+ 1; $k++)
        {
        Write-Host '*' -NoNewline
        }
    Write-Host ''
    }
* * * * * * * * * * * * * * * * * * * * * * * * * * *
$HowTall = 5
$Padding = $HowTall - 1
$AsteriskCount = 1

Clear-Host
''

foreach ($HT_Item in 1..$HowTall)
    {
    $Spaces = ' ' * $Padding
    $Asterisks = '*' * $AsteriskCount

    $Spaces + $Asterisks + $Spaces

    $Padding --
    $AsteriskCount += 2
    }

''

вывод от каждого идентичен ...

    *    
   ***   
  *****  
 ******* 
*********
0 голосов
/ 06 ноября 2018

Решил написать один, вероятно, неэффективный, но это делает треугольники

function BuildTriangle([int]$Size){
    $OrignalSize = $Size
    $Count = 0
    while($Size -gt 0){
        $($Size) | %{
        if($Size -eq $OrignalSize){
                "$('*'.PadLeft([math]::Floor(($_))," "))"
            }elseif($Size -gt 1){
                "$('*'.PadLeft([math]::Floor(($_))," "))$(@(1..$Count) | %{" "})*"
            }else{
                "$(@(1..$($Count+1)) | %{"*"})"
            }
        }
        $Count += 1
        $Size -= 1
    }

}

BuildTriangle -Size 5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...