Loading...
ayhan_r1 avatar ayhan_r1 5 Точки

Problem 3. House

Опитвам се да реша тази задача с while цикъл, но стигам само до основата на покрива. Каква е причината за това да не изкарва стените. Ето и кода:

http://pastebin.com/iCNW2s9f


Според вас къде ми е грешката

Ето и задачата:

Input

Output

 

Input

Output

 

Input

Output

5

..*..

.*.*.

*****

.*.*.

.***.

 

7

...*...

..*.*..

.*...*.

*******

.*...*.

.*...*.

.*****.

9

....*....

...*.*...

..*...*..

.*.....*.

*********

..*...*..

..*...*..

..*...*..

..*****..

 

ModEdit: Моля, прочетете правилата на форума преди да пускате нова тема, използвайте търсачката на форума поради факта, че на този конкретен въпрос е отговорено повече от един път.

Тагове:
0
Programming Basics 04/06/2015 16:48:11
djc_bg2015 avatar djc_bg2015 923 Точки

Проблема е следния:

int outStena = n / 4; // тук казваш че outStena ще бъде n / 4

// а искаш while-а да се изпълнява докато outStena == n / 3. - В нито един момент тази променлива не е == n / 3, затова и цикъла изобщо не се изпълява.
while (outStena == n / 3)
{
    outPokriv--;
    Console.WriteLine(wall);
}

Ако държиш да е с while цикъл, ето как би се получило:

int height = n / 2 - 1;
while (height != 0)
{
    height--;
    Console.WriteLine(wall);
}
// отпечатай тук и последния ред

 

1
04/06/2015 17:11:28
stiliqnivanov avatar stiliqnivanov 16 Точки

Виж моето решение :http://pastebin.com/SN0UFqUX

Мисля, че е доста по-кратко.

Поздрави!

1
peterborisov avatar peterborisov 123 Точки

Не си сложил в описанието за коя къща точно става въпрос.Мисля че е това решение .Все пак има 3 вида къщи но го пробвай все пак.Като цяло най-лесния и оптимален начин за всички задачи за рисуване по конзолата е следния:Печаташ първата линия после един for цикъл до средата.Печаташ средната линия и още един for до долу и накрая отпечатваш последната линия


        int n = int.Parse(Console.ReadLine());
        Console.WriteLine(new string('.', n / 2) + "*" + new string('.', n / 2));
        int topoutDots = n / 2 - 1;
        int topinDots = 1;

        for (int i = 0; i < n / 2 - 1; i++)
        {
            Console.WriteLine(new string('.', topoutDots) + "*" + new string('.', topinDots) + "*" + new string('.', topoutDots));
            topinDots += 2;
            topoutDots--;
        }
        Console.WriteLine(new string('*', n));
        int bottomoutDots = n /4;
        int bottominDots = (n/2)-1;     
            for (int i = 0; i < n / 2 - 1; i++)
            {
                Console.WriteLine(new string('.', bottomoutDots) + "*" + new string('.',n-2* bottomoutDots-2) + "*" + new string('.', bottomoutDots));

            }   
        Console.WriteLine(new string('.',bottomoutDots) + new string('*', n-2*bottomoutDots )+ new string('.',bottomoutDots));

0
djc_bg2015 avatar djc_bg2015 923 Точки

В случая става въпрос за тази къща:

https://judge.softuni.bg/Contests/6/CSharp-Basics-Exam-12-April-2014-Morning

Иначе мисля че решението ти е напълно правилно.

Незнам дaли има смисъл да се ползва плейсхолдър при принтирането на стените на къщата, при положение че стените са винаги 1 pipe.

for (int i = 1; i &lt;= n; i++)
{
    Console.WriteLine("|{0}|", new string(star, (n - 2));
}

 

1
nikolaiweselinow avatar nikolaiweselinow 11 Точки

Да напълно си прав, но много съм свикнал с placeholder  и изобщо не съм забелязал, че става и без.(просто механично съм го написал.)

Иначе сега видях, че е друга задача... ей сега ще се пробрам да я направя и ще я кача.

Поздрави.

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