Проблем с задачата за " Квадрат от звездички " от първото домашно на курсът C#
Условие на задачата :
Напишете C# конзолна програма, която прочита от конзолата цяло положително число N и отпечатва на конзолата квадрат от N звездички, като в примерите по-долу:
1.Направете конзолна C# програма. За да прочетете числото N (2 ≤ N ≤100), използвайте следния код:
static void Main(string[] args) { var n = int.Parse(Console.ReadLine());
// TODO: print the rectangle } |
Трябва да се получи следното :
вход |
изход |
5 |
***** * * * * * * ***** |
_________________________________________________________________________________________________________________________
Аз съм стигнал до едно положение . Ето моят код :
using System;
namespace SquareOfStars
{
class Program
{
static void Main(string[] args)
{
var n = int.Parse(Console.ReadLine());
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
Console.Write("*");
}
Console.WriteLine();
}
}
}
}
_________________________________________________________________________________________________________________________Това отпечатва квадрат от звездички но вътрешността му също е запълнена с звездички .
Опитах да изчистя вътрешността на квадрата с този цикъл :
if (i==1 && i==n && j==1 && j==n)
{
Console.Write("*");
}
else
{
Console.WriteLine(" ");
}
Но и това не ми донесе успех защото Console.WriteLine(); ми отпечатва нещатата на нов ред и не мога стукторирам квадрата ....
Моля покажете ми правилният начин за решаването на този проблем ! Благодаря :)
Аз разсъждавам по следния начин - фигурата можем да я направим string. Тоест, не трябва да използваме деклариране на индивидуални char star = '*'; char space = ' ';, а можем да подходим така:
Виждаме, че първия и последния ред са еднакви и, съответно, съдържат броя въведени от потребителя символи.
Console.WriteLine(new string('*', user)); - тук използваме new string, избягвам броене позиция по позиция (1-user) , за да направим процеса по-лесен - резултатът е принтиране на "user" броя пъти звездичка.
После използваме *{0}*, за да го заместим с (' ', user-2) - тоест да се принтира празното място user-2 пъти, защото от ляво и дясно имаме звездички (те изяждат по 1 позиция, 1+1=2).
Последният ред е като първия.
Може да се реши по много начини исках да използвам досегашния код на автора .