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