Професионална програма
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 642 Точки

Здравей.

Идеята тук е да ползваш цикли и затова си се затруднил при вида на "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