Главная » Статьи » Задачи из заказов » Заказ 09.11.07 |
Написать и протестировать рекурсивную функцию REVERSE(str), которая переворачивает данную строку на том же самом месте.
// 5.24 // Написать и протестировать рекурсивную функцию REVERSE(str), которая // переворачивает данную строку на том же самом месте. Сравнить время ее работы // и время работы нерекурсивной версии. // !!! Остаётся только дагадываться об алгаритме функции REVERSE и как надо // извратиться, чтоб этот алгаритм стал рекурсивным:) #include <stdio.h> #include <conio.h> #include <string.h> #include <stdlib.h> void reverse(char* str) { int len = strlen(str); if (len < 2) return; char beginch = str[0]; char endch = str[len - 1]; if (len > 2) { char* newstr = (char*)malloc(sizeof(char) * (len - 2 + 1)); strcpy(newstr, str + 1); newstr[len - 2] = 0; reverse(newstr); strcpy(str + 1, newstr); } str[0] = endch; str[len - 1] = beginch; } void main() { clrscr(); char ans, *str; do { printf("Vvedite stroku\n"); gets(str); reverse(str); printf("Resultat raboti functii:\n%s\n", str); printf("Esho raz?(Y/N)\n"); ans = getch(); printf("%c\n", ans); free(str); } while (ans == 'Y' || ans == 'y'); } | |
Категория: Заказ 09.11.07 | Добавил: solver (09.11.2007) | |
Просмотров: 1926 |