Задача 1. Да се дефинира фунцкията

void reverse(char *s)

която обръща даден низ "отзад-напред".

Защо на функциите, работещи върху масиви, обикновено подаваме и броя на елементите в масива, а в случая на низове не го правим. Отг: strlen. Защо няма функции, аналогични на strlen, които да работят за произволни масиви, не само за низове (както знаем всеки низ е масив от символи, което е едно и също с указател към символ).

Задача 2. Да се дефинира функцията

bool palindrom(char *s)

която проверява дали даден низ е еднакъв при прочитане отпред-назад и отзад-напред, т.е. дали е симетричн отностно средата си.

При решението с използване на reverse на тази задача е полезно сами да достигненм до идеята, че е необходимо низа да се изкопира някъде, преди да се обърне. Затова е хубаво задачата да се реши именно във варианта "използвайте reverse".

Задача 3. Да се дефинира функцията

void binary(int x, char *&s)

Която намира двоичния запис на числото x и го връща чрез параметъра s.

Тук е полезно подробно да се обсъди ролята на псевдонима в дефиницията на функцията. Преди да се премине към решаването на задачата е хубаво да се разгледат няколко по-прости примера за предаване на аргумент: по стойност, по адрес и по псевдоним, като се обърне специално внимание на разликите и приликите между всяка двойка. Да се помисли също така за физическите ефекти от тези операции (т.е. какво става с паметта). Да се помисли и за специалния случай на масиви, където променливите от тип масив са всъщност указатели към съответния тип данни и веднага да се даде пример със символни низове, които са от тип char*, т.е. указател към символ, с всъщност са масиви.

Задача 4 . Да се напише рекурсивна функция double min ( int n , double * x ) , която намира минималния елемент на редицата x 0 , x 1 ,…, xn .

Задача 5 . Да се напише рекурсивна функция , която проверява дали елементът x принадлежи на редицата x 0 , x 1 ,…, xn . .

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