Loading...
Lescet avatar Lescet 25 Точки

Exam 6 march - Draw Fort

Здравейте, някой може ли да предложи решение без формулата от втория ред, честно казано на предстоящия изпит в Събота, няма как да се сетя за тази формула var ff = n*2 - 4 - 2*(n/2); .....

 

http://pastebin.com/aYVA5yVv

Тагове:
0
Programming Basics 24/03/2016 18:19:11
vancho avatar vancho 430 Точки

Ами разковничето в този тип задачи за чертане на фигури по конзолата е именно да се сетиш за формулата, чрез която ще пресметнеш съотношенията при различните стойности за n! Може би без формула, ще е да начертаеш всички възможни варианти един по един.

 

Ето и друг вариант, но пак има формула, макар и за мен малко по-проста (пак казвам за мен).

namespace _999.DrawFort
{
    using System;

    public class Program
    {
        public static void Main()
        {
            int n = int.Parse(Console.ReadLine());
            int width = 2 * n;
            int row = n / 2; // row -> ^

            Console.WriteLine(@"/{0}\{1}/{0}\", new string('^', row), new string('_', width - ((2 * row) + 4)));
        }
    }
}

 

Не съм дописал цялата задача, мисля че на там е вече лесно wink.

-1
24/03/2016 18:44:12
vancho avatar vancho 430 Точки

Ето и цялото решение на задачата, ако все пак не може да се справиш - линк yes

-1
24/03/2016 19:10:37
ralitsa_d avatar ralitsa_d 171 Точки

Най-лесният начин да стигнеш до формулата при тези задачи е да си преброиш символите на даден ред.

Формулата за първия, последния и за пред-предпоследния ред се извежда с просто изваждане.

Знаем, че крепостта е широка 2 * n.

Знаем,че всяка от двете колони е с ширина n/2 --> 2 * n - 2 * (n/2).

От наклонените на следващия ред виждаме, че има 4 позиции, които трябва да изключим от търсените --> 2*n - 4 - 2*(n - 2).

Остава да прецениш къде какъв символ да поставиш и задачата е решена.

Надявам се, че успях да ти помогна :)

 

2
Lescet avatar Lescet 25 Точки

Благодаря !

0
Nikola_Andreev avatar Nikola_Andreev 671 Точки

Не е задължително да използваш сложни формули. Можеш да кажеш примерно ако n е по-голямо от 4 мида да е n/2, ако е по- малко от 4 мида е 0. И така при 5 ще ти върне 2 мид а при 8 - 4 мид, както е по условие. Така ще ти работи коректно, просто ще стане малко по-дълъг кодът.

1
Lescet avatar Lescet 25 Точки

ДА, Благодаря !

0
Lescet avatar Lescet 25 Точки

Да не отварям нова тема, първа задача от същия изпит:

using System;


namespace P1.Training_Lab
{
    class Program
    {
        static void Main()
        {
            var width = double.Parse(Console.ReadLine());
            var height = double.Parse(Console.ReadLine());
            var widthInCm = width * 100;
            var heightInCm = height * 100;
            var biura = (heightInCm - 100) / 70;
            Console.WriteLine(Math.Round(biura));
            var rows = widthInCm / 120;
            Console.WriteLine(Math.Round(rows));
            var result = (biura * rows) -3;
            Console.WriteLine(Math.Round(result));
            
        }
    }
}

 


При вход 15; 8.9 ми вади за бюра 11 и за редове 12, умножавам ги и ми давa 142, а трябва да е 132 и да извади 3.

0
DStefanow avatar DStefanow 112 Точки

Друг вариант за който аз се сетих и най- важното е и че работи е: count-a да е n - 4 и съответно, ако е нечетно число да го увеличиш с едно:

int count = n - 4;

        if (n % 2 != 0)
        {
            count++;
        }

Вярно е, работи, но си е по- добре с другия вариант, първо че спестяваш място, второ, логиката е много по- точна! :)

0
borislav9212 avatar borislav9212 745 Точки

Lescet,

Трябва да закръглиш " biura " и " rows " с Math.Truncate или Math.Round. на изхода трябва да изведеш само крайния резултат, така че ги изтрии другите Console.WriteLine, защото ще ти даде грешка  в Judge. също може да съкратиш    var widthInCm = width * 100; и      var heightInCm = height * 100; като ги запишеш директно горе ето така: var width = double.Parse(Console.ReadLine()) * 100; var height = double.Parse(Console.ReadLine()) * 100;

1
25/03/2016 01:15:14
ivanlutov avatar ivanlutov 5 Точки

Колеги и аз днеска я решавах тази задача и не се бях сетил за въпросната формула. Докарах нещата да излизат както са в примерите за n = 3,4,5 и 8 и си мислех, че всичко е както трябва ( това с този код http://pastebin.com/s0bTQB8Q ), обаче я пускам в judge и ми дава 30/100 (явно работи само за исканите примерни в условието, обаче когато n>8 в middle се бъркат нещата). Гледам даже, че Nikola_Andreev го е предложил като вариант, обаче judge не го приема.

Иначе после като смених въпросната middle със "сложната"формула

( n*2 - 4 - 2*(n/2))  изкарва 100/100 ( http://pastebin.com/ZEKftyJC ).

Та въпроса ми е някой има ли идея дали първият код може да се преправи така, че и с него да се изкарат 100/100 точки или няма как.

0
davichonov365 avatar davichonov365 127 Точки

няма такава идея ,. тя задачата затова е кофти ,. на предишния изпит аз се забатачих точно с такава формула ,. но без нея не можеш да я решиш : пробвайте брадвата https://judge.softuni.bg/Contests/Practice/Index/274#4

0
ivanlutov avatar ivanlutov 5 Точки

Ясно,значи просто е била малко по-сложна от другите. Иначе брадвата е елементарна, както имаше и други някакви, които решавах с една пеперуда или знак STOP и още, които са супер лесни. Иначе ето ми го решението на брадвата http://pastebin.com/GVn9jUY0 . Общо взето от изпитните задачи само крепостта ми се строи малко по-сложна.

0
davichonov365 avatar davichonov365 127 Точки

Абе то е лесно вкъщи ,. и аз ги решавах всичките ама на изпита тази формула не ми дойде :)

0
dakata avatar dakata 26 Точки

При мен процедурата е първо да си съставям формулите, които присвоявам на съответните променливи (коментирани за улеснение): http://pastebin.com/WnBucxkv

 

0
IvanNaumov avatar IvanNaumov 0 Точки

Здравейте на всички. Ако някой все още следи тази темичка, моля за малко помощ. Judge ми дава 20т и не разбирам какво точно не му допада ; (. Това ми е кодът: 

https://pastebin.com/pju2DTvJ

 


 

0
maski98 avatar maski98 0 Точки

Направи така че долната част да се отпечатва заедно като горната, а не средните чертички да имат свой собствен ред. От това ти идва грешката

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