Задачи за практикум по “ООП и СД”
За специалност КН, група 6, седмица 7
Задача 1.
Да се реализират:
-
функция int lengthOf(char *s), която връща дължината на даден низ.
-
функция void reverse(char *s), която обръща даден низ, като работи директно върху него.
-
функция char* copyAndReverse(char *s), която приема низ, създава негов дубликат, обръща дубликата и го връща.
Забележка: Нямате право да ползвате offset operator [].
Вход
От стандартния вход се въвежда символен низ (използвайте gets).
Изход
На отделни редове на стандартния изход се извеждат резултатите от функциите.
Пример 1
Вход:
yorythecat
Изход:
10
tacehtyroy
tacehtyroy
|
Пример 2
Вход:
i sam
Изход:
5
mas i
mas i
|
Автор: Свилен Марчев
Задача 2.
Създайте функция със следния прототип:
int split(char *str, char *result[]);
която разделя по знака SEPAR низа str на масив от низове. Функцията работи върху самия низ str и записва в result само указатели. Връща броя на записаните в result низове (т.е. token-ите на str). Символът SEPAR е известен по време на компилация, т.е. може да се дефинира с #define.
Забележка: Нямате право да ползвате offset operator [].
Вход
От стандартния вход се въвежда един единствен ред (може да ползвате функцията gets). Ограничения: Низът няма да съдържа повече от 1000 фрагмента, разделени със SEPAR.
Изход
На стандартния изход се записват един под друг, оградени в двойни кавички, фрагментите на str.
Пример 1
Вход:
^^^^ as mariya 6718_&* ^&9 &jJJ
Изход:
"^^^^"
"as"
"mariya"
"6718_&*"
"^&9"
"&jJJ"
В този пример SEPAR е ‘ ’.
|
Пример 2
Вход:
Sonisphere_Bulgaria___2011,_Sofia Rocks
Изход:
"Sonisphere"
"Bulgaria"
"2011,"
"Sofia Rocks"
В този пример SEPAR е ‘_’.
|
Автор: Свилен Марчев
Задача 3.
Дадени са два низа S и T. Да се намери последното срещане на низа T в низа S и да се замени с обратния на T.
Забележка: Нямате право да ползвате offset operator [].
Вход
От първия ред на стандартния вход се въвежда низът S, а от втория – низът T. Ограничения: 1 ≤ |S| ≤ 1000, 1 ≤ |T| ≤ 1000.
Изход
На стандартния изход се извежда (евентуално) промененият низ S.
Пример 1
Вход:
missiissiipi
issii
Изход:
missiiissipi
|
Пример 2
Вход:
pointerpointer
pointer
Изход:
pointerretniop
|
Автор: Свилен Марчев
Задача 4.
Дадена е квадратна матрица ANxN от цели числа. Създайте функции със следните прототипи:
-
void transpose(int **А, int N) – транспонира дадена матрица.
-
void addOne(int **A, int N) – прибавя единица към всеки елемент на матрицата.
-
void applyOperation(int **A, int N, void (*oper)(int **A, int N)) – взема матрица като аргумент и изпълнява дадена операция върху нея (операцията се подава като указател към функция).
Програмата ви трябва да въведе матрицата A. След това, използвайки applyOperation, да увеличи с единица всеки нейн елемент и накрая да я транспонира.
Вход
От първия ред на стандартния вход се въвежда числото N. Следват N реда, на всеки от които са записани по N цели числа, разделени с по един интервал. Ограничения: 1 ≤ N ≤ 1000.
Изход
На стандартния изход се извежда матрицата A след трансформациите.
Пример 1
Вход:
3
0 1 2
3 4 5
6 7 8
Изход:
1 4 7
2 5 8
3 6 9
|
Автор: Свилен Марчев
Сподели с приятели: |