Софтуерно Инженерство
Loading...
+ Нов въпрос
zlatko81 avatar zlatko81 14 Точки

Drawing with Loops - 6.Ромбче от звездички

Здравейте , 

Горната част на ромба я отпечатах според подсказките в *.doc файла с упражненията , а именно :

Подсказки:

  • Разделете ромба на горна и долна част и ги печатайте с два отделни цикъла.
  • За горната част завъртете цикъл за row от 1 то n:
    • Отпечатайте n-row интервала.
    • Отпечатайте “*”.
    • Отпечатайте row-1 пъти “ *”.
  • Долната част отпечатайте аналогично на горната с цикъл от 1 до n-1.

Дотук всичко е отлично , започнах с Долната част според подсказката с цикъл от 1 до n-1 . Резултата беше доста интересни безкрайни рисунки в конзолата. :)

Нужни ми бяха 2ч. за да стигна до решение с дебъгера и нагласяне на звездички и интервали. 

Ето го и него : http://pastebin.com/5R58cP6J

Все пак реших задачата на 100 , но въпросът ми е защо не успях да нарисувам долната част с цикъл до n-1 (както е подсказано). 

И другият въпрос който ми изниква , тези задачи за "чертане" с буквички и символчета за да ми изпапкат времето на изпита ли са замислени?

 

Тагове:
dmaknev avatar dmaknev 46 Точки
Best Answer

Да, по всичко личи, че са замислени да ти изпапкат максимално много от времето на изпита... Затова ако зациклиш на някоя таква, просто я прескочи и давай нататък, пък накрая се върни и я дебъгвай, ако е останало време ;) Т.е. по-добре 6*50 отколкото 2*100 нали така ;)

Иначе при мен се получава, обаче е леко модифицирано, защото за улеснение съм извадил първия и последния ред от общия алгоритъм. И съответно тогава вместо до n съм до n - 1 за горната част и съответно вместо n - 1, съм от n - 2 за долната: http://volatileread.com/utilitylibrary/snippetcompiler?id=82593

При теб различното е, че не си обърнал фора огледално, а си правил съвсем други неща...

0
zlatko81 avatar zlatko81 14 Точки

Опитах се да го обърна огледално , но не се получаваше. Изтървам нещо , но не знам кое. За мен тези задачи са насосване, да се учим да дебъгваме.

0
dmaknev avatar dmaknev 46 Точки

Погледна ли как съм го направил аз?

for (int i = 1; i < n; i++) на обратно става for (int i = n - 2; i > 0; i--)

По принцип края i > 0 е същото като i == 1, т.е. i = 1 когато е начало. И съответно i < n е същото като i <= n - 1, но обратния for почва от i = n - 2, защото там има с 1 ред по-малко. Ако искаш съвсем да ти е огледално всичко, вадиш си и средния ред от циклите и си готов.

0
jivako000 avatar jivako000 294 Точки

Здравей!

Аз на тази задача съм се мъчил доста време, но в крайна сметка успях със подсказката да разбера как става! Това е моя код - http://pastebin.com/J1vx1i4T 

А доколкото за фигурката на изпита - мисля си, че нея трябва да я оставиш последна, защото на мен лично ми отне страшно много време на изпита на 28.08 и в крайна сметка не успях да я реша! На всеки изпит е с различна степен на трудност, това са моите впечатления!

Успех!smiley

0
fiherLuci avatar fiherLuci 219 Точки

Дай грешния код иначе не можем да ти кажем къде е грешката ;- )

1
daniel.a.mihaylov avatar daniel.a.mihaylov 7 Точки

Ето ти мойто решение дано ти помогне да откриеш грешката:

http://pastebin.com/3tARVW0k

0
zlatko81 avatar zlatko81 14 Точки

Твойто , мойто все тая. 

Като копираш кода, поне махни празните редове.

0
daniel.a.mihaylov avatar daniel.a.mihaylov 7 Точки

Копирал съм си го от джъджа щото съм я решавал преди месеци,ама като ти е все тая нема смисъл да задаваш тема :) Успех ,с тва заяждане ще спрат да ти отговарят на въпросите ;)

0
daniel.a.mihaylov avatar daniel.a.mihaylov 7 Точки

Всъщност сега видях че съм копирал твоя код вместо моя,като го загледах,ето го моя:

http://pastebin.com/FWZ7S0rM

 

0
ambiorix avatar ambiorix 641 Точки

Аз лесно се обърквам когато трябва първо да работя с един цикъл i < n - 1 (например), а пък 10 реда след това с друг който е i > n + 1 или нещо от този род.

Затова за тази задача конкретно подхождам така:

1. рисувам  n - i разстояния и една звезда (цикълът започва от 1 така че на първия ред ще имам 4 разстояния и една * при вход 5)

2. във вложен на този цикъл за конкретния ред долепям до j < i на брой разстояния със звезда (" *"). С това приключва горната част на ромба, т.е. той е нарисуван отгоре надолу до най-широката му част.

3. както казах вместо да сменям посоката на логиката на цикъла за да го направя огледален на предния, то в цикъл от 1  до i < n рисувам i на брой разстояния (първи ред - едно разстояние, втори - две) и звезда.

4. във вложен на този цикъл от 1 до  j < n - i долепям разстояния със звезда (" *")

http://pastebin.com/raw/EP9dNGSC

0
15/10/2016 19:33:39