1 of 9

Указатели

Упражнение

2 of 9

Контролно!!!

3 of 9

Въпроси?

4 of 9

Задачи

  • Да се дефинира фунцкията void sum(int *arr, int size, int *sum_of_arr), която сумира елементите на даден масив и поставя резултата в sum
  • Да се дефинира функция void avrg(float *arr, int size, float *avrg_arr), която пресмята средното аритметично на числата в масива
  • Да се дефинира функцията int str_cmp(char *, char*), която сравнява стрингове елемент по елемент и връща 1 ако първият е “по-голям”, -1 ако вторият е “по-голям”, или 0 ако са равни
  • Да се дефинира функцията void reverse(char *arr), която обръща стринг.

5 of 9

Задачи(2)

  • Дефинирайте int is_palindrome(char*), която проверява дали даден стринг е палиндром използвайки str_cmp и reverse.
  • Да се дефинира функцията void sort(int *arr, int size), която сортира масива от числа във възходящ ред
  • Да се дефинира фунцкията void sort(int *arr, int size, int direction), където ако direction е положително число числата се сортират във възходящ ред, а ако е отрицателно се сортират в низходящ ред. Hint: дефинирайте reverse за масив от числа

6 of 9

Задачи(3)

  • Да се дефинира функцията char* find_substr(char* str, char* substr), която намира първото срещане на стринга substr в низа str и връща указател към началото му. Ако не се сеща find_substr да върне NULL.
  • Да се дефинира int points_between(int* begin, int* end, int* ptr), която казва дали указателят ptr сочи към памет, която е между begin и end (отворен интервал, т.е. begin < ptr < end). Използвайте тази функция за да проверите дали всички елементи в един масив са последователни в паметта.

7 of 9

Задачи(4)

  • Да се дефинира функцията void get_min_max(int *arr, int *min, int *max, int size); която връща минималната и максималната стойност в масива, чрез указателите към min и max. Ако масивът е празен да се запише стойността -1 за min и max
  • Да се дефинира функцията int print_sequence(int *start, int *end);, която принтира всички елементи между началния и крайния указател включително и връща бройката принтирани елементи
  • Да се дефинира функцията void str_reverse(char*);, който обръща подадения стринг. Note: ако извикаме функцията по този начин str_reverse(“asd”), ще се компилира, но няма да работи! Защо?

8 of 9

Задачи(5)

  • Да се дефинира функцията void max_seq(int *arr, int *start, int *end, int size);, която връща индексите на началото и края на най-дългата възходяща последователност от числа в arr. Пример: Ако в arr има числата 5, 8, 12, 3, 7, 1, 9 - то най-дългата възходяща последователност са числата 5, 8, 12, следователно в start трябва да има стойност 0, а в end стойност 2 след изпълнението на функцията

9 of 9

Въпроси?