Loading...
MarinesBG avatar MarinesBG 1 Точки

Проблем с задачата за " Квадрат от звездички " от първото домашно на курсът 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

}


Трябва да се получи следното : 

 

вход

 изход

*****

*    *

*    *

*    *

*****


_________________________________________________________________________________________________________________________

Аз съм стигнал до едно положение . Ето моят код : 

 

 

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(); ми отпечатва нещатата на нов ред и не мога стукторирам квадрата ....
Моля покажете ми правилният начин за решаването на този проблем ! Благодаря :)

 

Тагове:
1
Programming Basics
MarinesBG:
Благодаря ви. Разбрах къде ми е грешката . Благодаря на всички които ми помогнаха !
kaloyannikov avatar kaloyannikov 531 Точки
 var n = int.Parse(Console.ReadLine());
   for (int i = 1; i <= n; i++)
   {
      if (i == 1 || i == n)
      {
           Console.WriteLine(new string('*', n));
           continue;
      }
        for (int j = 1; j <= n; j++)
        {
           if (j == 1 || j == n)
           {
               Console.Write("*");
               continue;
           }
           else {
               Console.Write(" ");
           }
        }
    Console.WriteLine();
    }                             

Ето с малки промени по твоя код :)

2
WhiteLord avatar WhiteLord 3 Точки

Аз разсъждавам по следния начин - фигурата можем да я направим string. Тоест, не трябва да използваме деклариране на индивидуални char star = '*'; char space = ' ';, а можем да подходим така:

Виждаме, че първия и последния ред са еднакви и, съответно, съдържат броя въведени от потребителя символи.

int user = int.Parse(Console.ReadLine());
    

            Console.WriteLine(new string('*', user));
            for (int number = 1; number <= (user - 2); number++)
            {
                Console.WriteLine("*{0}*", new string(' ', user-2));
            }
            Console.WriteLine(new string('*', user));


Console.WriteLine(new string('*', user)); - тук използваме new string, избягвам броене позиция по позиция (1-user) , за да направим процеса по-лесен - резултатът е принтиране на "user" броя пъти звездичка.

После използваме *{0}*, за да го заместим с (' ', user-2) - тоест да се принтира празното място user-2 пъти, защото от ляво и дясно имаме звездички (те изяждат по 1 позиция, 1+1=2).

Последният ред е като първия.

 

3
kaloyannikov avatar kaloyannikov 531 Точки

Може да се реши по много начини исках да използвам досегашния код на автора .

1
11/05/2016 15:31:49
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.