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

Задачите за рисуване по конзолата

Здравейте хора. От един месец се подготвям за предстоящия курс Programming basics този месец  и до сега нямах проблем с нещата и ги разбирах, но зациклих до темата с циклите и рисуването по конзолата която е най-важната. Бихте ли споделили вие как ги научихте и някакви препоръки как да ги науча и аз?  Благодаря ви!

StoykoMandzhukov avatar StoykoMandzhukov 11 Точки

Здравей,

тези ми станаха любимите, но в началото ми бяха пълна мъгла. Винаги търси някаква поредица на съответните символи на всеки ред. Винаги или нещо намаля, или се увеличава. Разделяй фигурата на няколко части, и решавай задачите с повече от 1 цикъл(не вложени), когато има такава възможност.  Успех! :)

0
22/03/2016 22:14:50
StoykoMandzhukov avatar StoykoMandzhukov 11 Точки

Ако трябва-пиши си ги на лист с числа. Колко е имало на 1-ви ред от единия, колко на 2-я и т.н. И ще хванеш зависимостта. :)

1
gabi.ivanova avatar gabi.ivanova 370 Точки

На мен не ми стана ясно само със задачите за рисуване ли имаш затруднения или с разбирането на концепцията и работата на циклите?

1
hellgod2 avatar hellgod2 0 Точки

Само със задачите , но разбирам за какво служат циклите.
 

0
Pete1 avatar Pete1 56 Точки

Здравей, колега ! Това  са едни от лесните типове задачи, не го казвам, за да загубиш мотивация, а защото наистина е така. Алгоритъкът за решаването им е почти един и същ, един път щом го научиш няма да имаш проблеми с 90% от задачите от този тип. Изгледай това видео: https://www.youtube.com/watch?v=x7zXRCpkebo, ако не ти стане ясно от първия път изгледай го пак и след това почни да решаваш задачи от минали изпити в judge-a, всяка трета задача от даден изпит е от този тип. 

Успех ! 

1
IskrenPenev avatar IskrenPenev 177 Точки

 В началото и аз не можех да ги разбирам, най-вече от гледна точка как да изпиша всичките нужни неща. В последвтвие ми станаха любими като тип задачи. 

Аз подхождам винаги по един и същ начин - рисувам винаги първия и последния ред (най-често са еднакви) и след това този който е точно по средата (винаги е "уникален").
След това правя 1 цикъл, с който запълвам нужното разстояние между първия и средния ред (наистина е полезно да вземеш лист хартия и да си отбележиш схемата, коет нараства и кое намалява).
Пробвам цикъла с примерния вход, и максимум/минимум ограниченията в задачата (или ако число доста по - голямо от най-големия примерен вход, понеже не искам да ми чертае диамант на 1000 реда да кажем, а на 30).
Ако цикъла работи както трябва, го копирам отдолу (слред междинния ред) като величините които са намалявали до средата се увеличват, а тези които са се увеличавали намялават. (ползвам си сющите променливи, но ако в горния цикъл е било count++; в долния е count--;) Врътката тук е, в случай че някоя от тези променливи стане по-малка от 0, след междинния ред си длъжен да й зададеш стойност 0 защото приложението ще гръмне.
Общо взето - това е. Надявам се да съм бил полезен.

1
22/03/2016 22:49:09
baxlash avatar baxlash 31 Точки

И на мен ми бяха най-трудните в началото. След като намерих подходящия метод да ги разглеждам ми станаха любимите.

Ето как процедирам аз с тях:

  1. Раздели си задачата на части (т.е. ако например трябва да рисуваш къща, раздели задачата на 2 - покрив и долна част).
  2. Започни с горната част.
  3. Потърси някаква зависимост между отделните редове и input-а, който си дал през конзолата.
  4. Използвай placeholder-и, за да изпечатваш повтарящите се символи.
  5. Използвай помощни променливи, ако ти е нужно динамично да пресмяташ повтарящи се символи.
  6. Когато приключиш с първата част, започни със следващата и следай същите стъпки.
  7. Не се мъчи да направиш всичко от веднъж.

Ето няколко примера за такива задачи, решени от мен: цък и цък.

5
H.Stoyanov avatar H.Stoyanov 115 Точки

Колега един практичен съвет, разгледай първо примерите, кое как мърда и къде отива. Опитай се да си представиш цялостно как конзолата ще изчетае фигурите, ред по ред, и кое къде трябва да се премести. Освен това в условията имаше някакви подсказки, които за мен се оказаха неверни - на места пишеше нещо от сорта на (n - 1) / 2 -1, където точно -1-то бърка цялата работа. 

Успех! wink

1
Berchev avatar Berchev 56 Точки

Здравей колега, 

 

На мен много ми помага да използвам тетрадки от тези за първокласниците, на квадратчетата. Така всяко квадратче е един символ от картинката и много лесно можеш да си прерисуваш фигурата и съответно да видиш как ти върви цикъла и да хванеш зависимост. Имаше една задача striped towel ( 3та задача от тук ) която аз лично стоях сумати време докато видя нещо и на края с лека насока и такова прерисуване и номериране на хартия задачата я реших за 3 мин с 5 реда код :) 

 

 

 

1
28/03/2016 12:18:25