Задача 1. Даден е текстов екран с широчина w и низ s. Да се скролира последователно низа отляво надясно с повторение като се оставят sp интервала между повторенията на низа. Например за w = 5, sp = 2 и s = "Здравей" да се отпечатат последователно

Здрав
драве
равей
авей
вей
ей З
й Зд
 Здр
Здра

и т.н. Да се използват функциите за изходен поток. Опитайте се да решите задачата с минимум допълнителна памет.

Задача 2*. Да се отпечата двоично дърво по следния начин:


         +- 3
|
+- 2 -+
|
1 -+
| +- 5
| |
+- 4 -+
|
+- 6

Упътване: Трудността на задачата идва от няколко факта:

  • всеки възел от дървото е на отделен ред, но има редове, на които няма стойност, а само графични знаци. За да се постигне желания ефект е необходимо в някои случаи един възел да печата повече от един ред
  • броят на вертикалните черти зависи от това какви наследници има в дълбочина, напр. при 4 са нужни две вертикални черти, а при 2 - само една. Това условие може да се премахне, но задачата се решава по-лесно с него.
  • възелът 5 например трябва да има информация за "завоите" в дървото до момента за да разпечата правилно вертикалните черти срещащи се по-рано в реда.
Задача 3. Да се реализира дърво с произволен брой наследници като се използва хетерогенен списък, чиито членове могат да бъдат хетерогенни списъци. Да се напише процедура, която разпечатва дървото в следния стил:

1
|
+- 2
|
+- 3
| |
| +- 4
| |
| +- 5
| | |
| | +- 6
| |
| +- 7
|
+- 8
|
+- 9

Задача 4. Даден е текстов екран със широчина w и масив funcs от n указатели към функции double f(double) и масив chars с n символа. Да се "нарисуват" вертикално на текстовия екран графиките на функциите funcs, като за всяка функция се използва съответния символ от chars. Където две или повече графики се засичат да се използва символът O. Рисуването на графиките да започва от стойност x0 със стъпка step като левият и десен край на екрана представляват ординатите ymin и ymax.
Например:

+-------------------------------------------+
| + * |
| + * |
| + * |
| + * |
| + * |
| + * |
| + * |
| + * |
| + * |
| O |
| * + |
| * + |






Последно модифициране: събота, 12 ноември 2011, 17:38