Advertisement
DanikKUL

Рекурсивно развернуть последнее слово

Jan 18th, 2022
220
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.00 KB | None | 0 0
  1. // разработать рекурсивную функцию принимающую символьную строку
  2. // и выполняющую переворот последнего слова доп строк не использовать
  3.  
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6.  
  7. void revLast(char *str, int i, int j){
  8.     static int flag = 0;
  9.     static int index = 0;
  10.     static int space = 0;
  11.     static int count = 0;
  12.     if(str[index + 1] == '\0'){
  13.         flag = 1;
  14.     }
  15.     if(str[index] == ' '){
  16.         space = index;
  17.     }
  18.     if(flag == 0){
  19.         index++;
  20.         revLast(str, space + 1, index);
  21.         return;
  22.     }
  23.     if(count <= (index - space) / 2){
  24.         char tmp = str[i];
  25.         str[i] = str[j];
  26.         str[j] = tmp;
  27.         count++, i++, j--;
  28.         revLast(str, i, j);
  29.     } else {
  30.         return;
  31.     }
  32. }
  33.  
  34. int main(){
  35.     char *str = (char*) malloc(1000 * sizeof(char));
  36.     gets(str);
  37.     puts(str);
  38.     revLast(str, 0, 0);
  39.     puts(str);
  40. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement