Loading...
YavorYanev avatar YavorYanev 0 Точки

Относно квадрата от звездички

Започнах малко по малко да ровя в интернет ( избягвам да гледам вече решени задачи) и стигнах до тази част:

namespace zashto_puk_ne
{
    class Program
    {
        static void Main(string[] args)
        {

            int n = int.Parse(Console.ReadLine());
            for (int i = 1; i <= n; i++)
            {
                if (i == n) Console.WriteLine(new String('*',i));            
                if (i == n) Console.WriteLine(new String('*',i));
            
            }
        }
    }
}

В момента си мисля, че ако вмъкна между двата if - а oще един ред ще успея да направя липсващите ми редове, който уформят вече квадрата. Другият въпрос е дали трябва да е изпълнена задачата с if или катко е в заданието трябва да е с for цикли?

Тагове:
0
Programming Basics 28/08/2016 21:19:05
Aidarov avatar Aidarov 12 Точки
Best Answer

Здравей! Това е задача с "for -цикъл". Не е разумно използването на if-функция, защото ще търси някакъв цикъл с изпълними условия, който не си задал, а ти е необходим и един string, който да прави "тялото" на квадрата. Ето и моето решение, което се надявам да ти е от полза.

using System;

namespace SquareOfStars
{
    class Program
    {
        static void Main()
        {
            var n = int.Parse(Console.ReadLine());
            Console.WriteLine(new string('*', n));
            for (int i = 0; i < n - 2; i++)
                Console.WriteLine(new string('*', 1) + new string(' ', n - 2) + new string('*', 1));
            Console.WriteLine(new string('*', n));
        }
    }
}
 

П.П. Ако искаш, понеже ще се работи с цели числа, можеш да замениш "var" с "int".

0
YavorYanev avatar YavorYanev 0 Точки

Все пак с малко помощ от твоя код и малко дописване на моя judge-а ми даде 100% с if-а с това решение. Незнаех, че се добавя new string по този начин с "+"-a. Правих опити с какво ли не, но само не и с "+" . Благодаря !

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace zashto_puk_ne
{
    class Program
    {
        static void Main(string[] args)
        {

            var n = int.Parse(Console.ReadLine());
            for (int i = 2; i <= n; i++)
            {
                if (i == 2) Console.WriteLine(new String('*', n));
                if (i == n) Console.WriteLine(new String('*', n));
                if (i != n) Console.WriteLine(new string('*',1)+new string(' ',n-2)+new string('*',1));

 


            }
        }
    }
}

0
Luko193 avatar Luko193 342 Точки

Това е моето решение на тази задача: 

​
using System;

    class Square_of_Stars
    {
        static void Main()
        {
 
            int number = int.Parse(Console.ReadLine());
 
            for (int i = 0; i < number; i++)
            {
                    for (int a = 0; a < number; a++)
                    {
                     
                      Console.Write("* ");
                    }
                  Console.WriteLine();
            }
        }
}
​

 

0
28/08/2016 21:28:54
ivaneski91 avatar ivaneski91 13 Точки

Мисля,че това не е задачата за която говорят колегите :)

0
davichonov365 avatar davichonov365 127 Точки

Задачата е с for цикли ., пробвай всякакви варианти на два фор цикъла., и ще стигнеш до решението., 

0
salron3 avatar salron3 1 Точки

Препоръчвам ти да вмънкнеш втори for цикъл в първя. Чрез втроия ще чертаеж колоните на фигурата, а чрез първия редовете.
Ето моето решение на задачата : http://pastebin.com/k2qh4D27

0
28/08/2016 22:55:23
puffed avatar puffed 289 Точки

Идеята на for цикъла е да повтаряш едно и също действие n на брой пъти, затова печатането на конзолата е добре да се напише само един път в тялото на for цикъл, както са писали и колегите. Можеш вместо втори вложен цикъл да използваш new string('*', n), което ще ти прави по един стринг от звездички с дължина n във всяка итерация на for цикъла.

Поздрави!

0
Marian1707 avatar Marian1707 1 Точки

Ето и моето (вече имаш голям избор) :D

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace KvadratOtZvezdichki
{
    class Program
    {
        static void Main()
        {
            int n = int.Parse(Console.ReadLine());

            Console.WriteLine(new string('*', n));
            for (int i = 1; i <= n - 2; i++)
            {
                Console.Write('*');
                Console.Write(new string(' ', n - 2));
                Console.WriteLine('*');
            }
            Console.WriteLine(new string('*', n));

        }
    }
}

 

0
DimitarKarev avatar DimitarKarev 87 Точки

        

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Square_of_Stars
{
    class Program
    {
        static void Main(string[] args)
        {
            var n = int.Parse(Console.ReadLine());
            var emptySpaces = new string(' ', n - 2);
            Console.WriteLine(new string('*', n));
            for (int i = 0; i < n - 2; i++)
            {
            Console.WriteLine("*{0}*", emptySpaces);
            }
            Console.WriteLine(new string ('*', n));
            
        }
    }
}
Ето и друг вариант на решението.

0
daniel.a.mihaylov avatar daniel.a.mihaylov 6 Точки

ето ти мойто решение ,лично аз си скъсах нервите с тази задача ,но след 3-4 лекция вече ми се въртяха около 3-4 различни начина да я реша :)

http://pastebin.com/MRKvQ1K0

0
KostadinKotevski avatar KostadinKotevski 24 Точки

Ето още един вариант като отговор на тази задача:

using System;
class Program
{
    static void Main()
    {
        {
            var n = int.Parse(Console.ReadLine());
            Console.WriteLine(new string('*', n));
            for (int i = 0; i < n - 2; i++)
                Console.WriteLine(new string('*', 1) + new string(' ', n - 2) + new string('*', 1));
            Console.WriteLine(new string('*', n));
        }
    }
}
 

0
Leprikona avatar Leprikona 108 Точки

using System;

class Program
{
    static void Main(string[] args)
    {

        int n = int.Parse(Console.ReadLine());
        for (int i = 0; i < n; i++)
        {
            Console.WriteLine("{0}{1}{0}", new string('*', 1), new string(i == 0 || i == n - 1 ? '*' : ' ', n - 2));
        }
    }
}

Ето един по-лесен начин. Въртиш цикъл N на брой пъти като променяш само вътрешността на квадрата, а първия и последния символи не ги пипаш (в случая placeholder-a "{0}" е използван два пъти, защото в началото и края на всеки ред има по една звездичка). Втория placeholder е изписан на един ред като for цикъл и се чете така: ако i е равно на 0 ИЛИ(||) i е равно на n - 1, искаме да ни се отпечата "*" n - 2 броя пъти, а ако не е равно на 0 (първи ред) или n - 1 (последен ред) искаме да ни се отпечата празно място отново n - 2 броя пъти. Ако не ме разбираш, а може и грешно да го обяснявам, има едно видео мисля, че беше на Богомил Димитров, в което той подробно обяснява каква е тази структура и как се ползва. Пробвай да го потърсиш - решава задача "Sunglasses".

Успех с ученето! :)

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