Loading...
ivandm5 avatar ivandm5 17 Точки

Задача 5 коледна шапка декември exam

Здравейте, решавам задачки от основите обаче имам малко затруднения. Цялата задача я решавам сам без много да се бавя, но където съм оградил в кода ме затрудни и трябваше да видя от форума някой я беше решил и го добавих. Сам нямаше как да го измисля. Та въпроса ми е как в гугъл да проверявам ако ми трябва търсех "C# new string" как да станат "*." но така и не го намерих.
/*Tova */ string starsAndDots = String.Concat(Enumerable.Repeat("*.", 2 * n));
Заради този ред 30-40 мин се чудех как да стане докато не видях готово решение. Другото за 5-10 мин го измислих

 

using System;
/*Tova */using System.Linq;

namespace hat
{
	class MainClass
	{
		public static void Main(string[] args)
		{
			var n = int.Parse(Console.ReadLine());
			var width = 4 * n + 1;
			var height = 2 * n + 5;
			var leftRightFirst = (n * 2) - 1;
			var leftRightSecond = (n * 2)-1;
			var spaces = 0;
			string nov = "*.";
			Console.WriteLine("{0}/|\\{0}",new string('.',leftRightFirst));
			Console.WriteLine("{0}\\|/{0}", new string('.', leftRightFirst));
			int i;
			for (i = 0; i < n * 2; i++)
			{
				Console.WriteLine("{0}*{1}*{1}*{0}", new string('.', leftRightSecond),new string('-',spaces));
				leftRightSecond--;
				spaces++;

			}
			/*Tova */ string starsAndDots = String.Concat(Enumerable.Repeat("*.", 2 * n));
			Console.WriteLine("{0}", new string('*', width));
			Console.WriteLine("{0}*", starsAndDots);
			Console.WriteLine("{0}", new string('*', width));
        
		}
	}
}

 

Тагове:
0
Programming Basics
StoyanVitanov avatar StoyanVitanov 11 Точки

Здравей,

това е моето решение. 

for(int i = 1; i < 2; i++)

            {

                for (int p = 1; p <= (n * 2);p++)

                {

                    Console.Write("*.");

                }

                Console.WriteLine("*");

            }

а този for цикъл е частта, за която питаш. Начина на решение и използваните неща са на ниво Programming basics. 

П.С : казвам го само като допълнителна информация отностно задачата :) 

0
ambiorix avatar ambiorix 640 Точки

Здравей.

Идеята тук е да ползваш цикли и затова си се затруднил при вида на "String.Concat()". Абстрахирай се от него за момент. С new string няма как да сложиш .* , защото методът приема само единичен символ - ти му казваш изреди ми този символ 10 пъти(пример: new string('*', 10)). Разгледай моето решение и особено частта за последните няколко реда и даже го мини с дебъгера ако знаеш как се ползва и ще ти стане по-ясно:

https://github.com/gaydov/Softuni-Programming-Basics/blob/master/Exams/Exam-18th-Dec-2016/ChristmasHat/ChristmasHat.cs

0
20/02/2017 00:57:35
ivandm5 avatar ivandm5 17 Точки

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

0
g_todorov avatar g_todorov 106 Точки

Здравей,

напиши ми заглавието на задачата и лекцията от която си я взел. Искам да я реша и ще публикувам кода тук.

0
g_todorov avatar g_todorov 106 Точки

Здрасти пак,

разсеяно те попитах за заглавието на задачата, а поради "глобалното затопляне" отвън чак сега ми пуснаха нета, че да върна отговор :) Задачата най-лесно се решава като разделиш фигурката на 3 части и всяка от тези части я рисуваш с for цикъл, а формулките за дължината на всеки цикъл ги натъманяваш да са равни на броя редове на частта, която ще рисуваш с тоя цикъл. Вътре във всеки от тези цикли натъманяваш формулките които определят броят символи така, че при промяна на n да мащабират частта, която рисуваш с цикъла да съвпада с различните рисунки от даденото. Изгледай лекцията рисуване на фигурки с цикли и ще ти стане ясно - хубаво, е че се интересуваш предварително.

Ето и моя код 100/100

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

namespace _05.CristmasHat
{
    class Program
    {
        static void Main(string[] args)
        {
            var n = int.Parse(Console.ReadLine());

            for (int i = 0; i <2; i++)
            {
                if (i==0)
                {
                    Console.WriteLine(new string('.',2*n-1)+new string('/',1)+new string('|',1)+new string('\\',1)
                        + new string('.', 2 * n - 1));
                }
                else
                {
                    Console.WriteLine(new string('.', 2 * n - 1) + new string('\\', 1) + new string('|', 1) + new string('/', 1)
                        + new string('.', 2 * n - 1));
                }
            }
            for (int i = 0; i < 2*n; i++)
            {
                Console.WriteLine(new string('.',2*n-1-i)+new string('*',1)+new string('-',i)+new string('*',1)+
                    new string('-',i)+new string('*',1)+new string('.', 2 * n - 1 - i));
            }
            for (int i = 0; i < 3; i++)
            {
                if (i==1)
                {
                    for (int j = 0; j < 2*n; j++)
                    {
                        if (j==2*n-1)
                        {
                            Console.Write(new string('*', 1) + new string('.', 1)+new string('*',1));
                        }
                        else
                        {
                            Console.Write(new string('*', 1) + new string('.', 1));
                        }
                    }
                    Console.WriteLine();
                }
                else
                {
                    Console.WriteLine(new string('*', n * 4 + 1));
                }
            }
        }
    }
}

0
ivandm5 avatar ivandm5 17 Точки
using System;
using System.Linq;

namespace hat
{
	class MainClass
	{
		public static void Main(string[] args)
		{
			var n = int.Parse(Console.ReadLine());
			var width = 4 * n + 1;
			var height = 2 * n + 5;
			var leftRightFirst = (n * 2) - 1;
			var leftRightSecond = (n * 2)-1;
			var spaces = 0;
			string nov = "*.";
			Console.WriteLine("{0}/|\\{0}",new string('.',leftRightFirst));
			Console.WriteLine("{0}\\|/{0}", new string('.', leftRightFirst));
			int i;
			for (i = 0; i < n * 2; i++)
			{
				Console.WriteLine("{0}*{1}*{1}*{0}", new string('.', leftRightSecond),new string('-',spaces));
				leftRightSecond--;
				spaces++;

			}
			 
			Console.WriteLine("{0}", new string('*', width));
			 
			for (int j= 0; j < height/height; j++)
			{
				for (int ki = 0; ki < width / 2; ki++)
				{
					Console.Write("*.");
				}
			}
			Console.Write("*");
			Console.WriteLine();
			Console.WriteLine("{0}", new string('*', width));
        
		}
	}
}

Ето още едно решение след като ми дадоха идеята за 2 фор цикъла си оправих звездите и точките.

0
Ivan89pln avatar Ivan89pln 14 Точки

Ето и моето решение на задачата да погледнеш и аз как съм написал тези *.*.*.* ;) 

http://pastebin.com/9npG1w9H

 

0
d.ognyanov avatar d.ognyanov 23 Точки

моето решение на Java ТУК

0
E.Erol avatar E.Erol 13 Точки

Здравей,
Моето решение на C# - https://pastebin.com/znWeV1tt 

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