Loading...
bborisov92 avatar bborisov92 2 Точки

Подготовка за изпит - Проблем със задача за рисуване

Здравейте, подгатвям се върху предстоящия изпит и имам 1 проблем с 1 задачка 

-->> https://judge.softuni.bg/Contests/8/CSharp-Basics-Exam-14-April-2014-Morning - задачката WineGlass , моето решение -->> http://pastebin.com/NJVyi7kn .Имам проблем с най-долната част, някаква идея?

Тагове:
1
Programming Basics
KatyaMarincheva avatar KatyaMarincheva 572 Точки
Best Answer

Здравей,

решението ти със съвсем малко допълнение дава 100 точки в judge - можеш да видиш новия вариант тук:

http://pastebin.com/gXxYU5ei

Първото допълнение е в предпоследния ти цикъл:

            if (n < 12)
            {
                for (int i = 1; i <= n / 2 - 1; i++)

това важи само за n < 12, по условие, дръжката е различна под и над 12:

"On the next (N/2)-2 rows, if N >= 12 or (N/2)-1 rows, if N < 12, you should print the stem "

Затова създадох втори случай, for (int i = 1; i <= n / 2 - 2; i++) (ако n >= 12)

Последната подробност е в основата на чашата - имаш нужда от 1 или 2 реда само, не от цикъл, можеш да го погледнеш в допълнения вариант на решението.

И поздравления за основния алгоритъм на решението - супер си е!

 

0
bborisov92 avatar bborisov92 2 Точки

Ударихме стотака, благодаря много за помощта! :)

1
MladenMladenov avatar MladenMladenov 80 Точки

On the next (N/2)-2 rows, if N >= 12 or (N/2)-1 rows, if N < 12, you should print the stem that should look like the following: a count of (N/2)-1 dots (“.”), followed by two vertical lines (“|”) and (N/2)-1 dots after the lines. The remaining one or two rows (up to a total count of N) should be filled with exactly N dashes (“-”) on each row

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

 

С иф даваш ако инпута - n e повече от 12 да чертае 2 реда, елс по 1.

 


if (n>=12)
{
  Console.WriteLine(new string('-',n));
  Console.WriteLine(new string('-',n));
}
else
{
Console.WriteLine(new string('-',n));
}

Това трябва да ти представлява конструкцията на долната част. Без For.

0
23/04/2015 17:40:52
bborisov92 avatar bborisov92 2 Точки

Пробвах по този начин и ми изкарва 20/100 :? Иначе под 12 си ми ги изкарва с 1 ред а над 12(включително 12) с 2 реда :?

0
bborisov92 avatar bborisov92 2 Точки

на 2-рия фор където е и = 1;и <= ..... , махнах "=" и ми изкара 80/100 :D

0
MladenMladenov avatar MladenMladenov 80 Точки

Прегледах решението ти още веднъж, ще се опитам да обясня какво трябва да се направи.

Преди втория цикъл ФОР правиш if проверка дали числото N е по-малко от 12;

ако е така трябва да печата n / 2 - 1 итерации;

ако не е по-малко (т.е. N е по-голямо от 12, в този случай е else - то трябва да печата n / 2 - 2 итерации;

След, което имаш отново проверка за дали е спрямо 12, по-голямо или по-малко за броя на последния ред.

съответно ако е N e по-голямо от 12 печата 2 реда, ако е по-малко печата 1 ред.

http://pastebin.com/i6Qiy0LM - това е преработката на твоя код, добавил съм коментари ;) 

0
g.stoyanov avatar g.stoyanov 776 Точки

Ето ТУК преди време описах няколко метода за решаване на такъв тип задачи. Може да намериш полезна информация. За съжаление не ми остава време да довърша цялата концепция която исках да демонстрирам. Надявам се скоро да успея да го направя.

Keep calm and learn to <code>.

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