Loading...
Svetoslavivanov0 avatar Svetoslavivanov0 24 Точки

Arrow - вложени цикли

Здравейте. Решавам задача "Стрелка" https://csharp-book.softuni.bg/chapter-06-nested-loops-exam-problems.html . Стигнах до средата, но зациклих, не можах да схвана обяснението в решението, а не намерих друг въпрос за тази задача. Ето ми го кода https://pastebin.com/791k2Xx9, може ли някой да ми я обясни, или да ми даде насока само? Благодаря :)

Тагове:
0
Programming Basics
AlucardDracula avatar AlucardDracula 416 Точки
Best Answer
var outer = 1;
var inner = 2 * n - 5;
for (int i = 1; i <= n - 2; i++)
{
    Console.WriteLine("{0}#{1}#{0}", new string('.', outer), new string('.', inner));
    outer++;
    inner -= 2;
}
Console.WriteLine("{0}#{0}", new string('.',outer));

ето това е долната част от фигурата.

Мисля че не си прочел текста подробно, в нея пише:
"Тъй като new string не може да съедини символ 0 пъти, цикъла, който ще направим, трябва да се завърти n - 2 пъти и отделно да отпечатаме последния ред от фигурата. На всяка итерация outerDots се увеличава с 1, а innerDots намалява с 2." - там където съм направил bold + italic при твоя код липсваше написал си n-1  место n-2.

Втората ти грешка е това че си написал outer и inner в цикъла,а те ни трябват извън нея за да броим къде колко знака трябва да принтираме.И третата е че си написал Console.WriteLine("{0}{1}{0}{1}{0}", new string('.', outer), new string('#', inner));

а то не ни трябва знака '#' няколко пъти, а само един път на 2 места,

долната страна на фигурата ни се състои от  =>  {външни точки}#{въртрешни точки}#{външни точки}

а последния ред се изписва ръчно заради това че имаме само един '#' =>  {външни точки}#{външни точки}

0
13/03/2018 18:27:06
Svetoslavivanov0 avatar Svetoslavivanov0 24 Точки

Мерси. Пооправих до малко кода. мисля че се получава кода, но дава грешка след завъртането на for цикъла https://pastebin.com/R6meF8pq

0
TodorovP avatar TodorovP 177 Точки

Това май и докъдето си стигнал пак не работи. Там в средата има точки, които са  n- 2 на брой, а ти си ги записал като страничните.

Иначе надолу трябва да зададеш цикъл от 0 < n -1 и да увеличаваш или намаляваш символите според брояча.

Също едва ли е много полезно да се пише 

new string('#', 1)

вместо направо де се включи # в метода за печатане.

0
VasilValchanov avatar VasilValchanov 555 Точки

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

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