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

Насоки за решаване на задачата чрез loops на C#

Здравейте, колеги!

Може ли да ми дадете насоки как да започна с решението на задачата, в която трябва да начертая фигурите от картинката?

Благодаря Ви предварително!

https://ibb.co/gU7a8T

Тагове:
0
Module: C# Advanced 04/06/2018 15:44:35
willystyle avatar willystyle 2472 Точки
Best Answer

Здравей, ето решение: https://pastebin.com/UpGkwkJq  ,което не е четливо като на Веско, но като схванеш логиката всички рисунки се решават на конвейер. Първо намираш зависимостта на ширината фигурата от въведеното число, тя е линейна, обикновено я налучкваш или си решаваш система от две линейни уравнения, в случая ширината = 4 * n - 2.

Следващата стъпка е почваш от горе надолу, когато има свързани редове ги правиш с цикъл (като вътрешния индекс i го ползваш за последователностите, като гледаш всеки ред сумата от символите да е 4 * n - 2 , независимо от i, т.е като разкриеш скобите винаги i се съкращава). и т.н. всички се решават по този елементарен начин, номера е да свикнеш да боравиш с индексите.

P.S. История с цвета на опашката е интересна, понеже цветовете в конзолата са 16, струва ми се, че тук почват от 4-ти цвят (DarkCyan) и намаля номера, после превърта се надявам, леко съм далтонист и не съм сигурен. Това е оцветената версия: https://pastebin.com/ULzVm6kQ

0
04/06/2018 22:32:00
StoyanSt11 avatar StoyanSt11 0 Точки

Много благодаря за разяснението и помощта, колега, едно не можах обаче да осмисля и това е .Replace и каква е функцията на този оператор? Предполагам замества стойности или се бъркам ?

0
04/06/2018 23:33:00
willystyle avatar willystyle 2472 Точки

str1.Replace(str2, str3) - това заменя всички низове str2 съдържащи се в str1 със str3. В случая ни помага и спестява код, понеже например искаш да създадеш низ от n пъти низ str3, трябва или да използваш цикли и конкатенация, или цикли и стрингбилдер и т.н. а понеже имаме new string(char1, n) - прави низ от n пъти char1, и веднага в този низ заменяме char1 със str3. За char1 може да се използва произволен символ. Тази процедура просто спестява код ( 4-5 реда). Просто все още няма овърлоад new string(str, n) :)

0
Vesso1980 avatar Vesso1980 486 Точки

Добре, ама ние тази картинка как да я видим като тя май е на твоя компютър. Дай линк към условието на задачата.

0
StoyanSt11 avatar StoyanSt11 0 Точки

https://ibb.co/gU7a8T Заповядай и се извинявам, не обърнах внимание!

0
Vesso1980 avatar Vesso1980 486 Точки

Ами добре беше да дадеш и условието, за да видим какъв вход може да подава. Аз я направих да работи само с нечетни числа от 1, ако и четни ще се подават тогава трябва да се променя. Ето това е решението - https://pastebin.com/jpPUmzpV , описал съм с коментари коя част какво прави. По принцип тези задачи се решават най-лесно като си ги разделиш на части и ги правиш една по една. new string() е много полезен, защото ти спестява доста циклене когато имаме повтарящи се символи. А Replace() методът пък е чудесен, защото в комбинация с new string може да повтаряш не само символи ами цели думи или каквото там се изисква. Виж аз на някои места слагам звездички с new string  и после тези звездички ги замествам с Replace("*", "*=") примерно. И най-важното е да схванеш, точно как нараства фигурата спрямо подаденото число от вън.

0
StoyanSt11 avatar StoyanSt11 0 Точки

Много ти благодаря, успях до известна степен да се ориентирам в кода, но някои от техниките все още не ги умея, за съжаление, наистина ти благодаря! :)

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