Advertisement
Guest User

Untitled

a guest
Nov 29th, 2015
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.77 KB | None | 0 0
  1. #include<stdio.h>
  2. #include <stdarg.h>
  3.  
  4. void reverse(char *, char *);
  5. void reverseWords1(unsigned, char*, ...);
  6. void reverseWords2(char *, ...);
  7. void reverseWords3(char*, ...);
  8.  
  9.  
  10.  
  11. int main()
  12. {
  13. printf("\nExample of the first working function\n");
  14. char s[][30] = { "i like this program very much", "im the boss", "get that paper", "raise the pot" };
  15. reverseWords1(4, s[0], s[1], s[2], s[3]);
  16. printf("\nExample of the second working function\n");
  17. char p[][50] = { "i like this program very much", "im the boss", "get that paper", "raise the pot", "one more sentence", "0 this one wont work cuz it has zero in it" };
  18. reverseWords2(p[0], p[1], p[2], p[3], p[4], p[5]);
  19. char k[] = { "1234" };
  20. printf("\nExample of the third working function\n");
  21. reverseWords3(k, p[0], p[1], p[2], p[3]);
  22. getchar();
  23. return 0;
  24. }
  25.  
  26. void reverse(char *begin, char *end)
  27. {
  28. char temp;
  29. while (begin < end)
  30. {
  31. temp = *begin;
  32. *begin = *end;
  33. *end = temp;
  34. begin++;
  35. end--;
  36. }
  37. }
  38.  
  39. void reverseWords1(unsigned k, char *s, ...)
  40. {
  41. for (unsigned i = 0; i < k; ++i)
  42. {
  43. char *word_begin = s;
  44. char *temp = s;
  45.  
  46.  
  47. while (*temp)
  48. {
  49. temp++;
  50. if (*temp == '\0')// reverse the last word, cycle ends, temp is null
  51. {
  52. reverse(word_begin, temp - 1);
  53. }
  54. else if (*temp == ' ')// reverse the word before space and put word_begin on char after space
  55. {
  56. reverse(word_begin, temp - 1);
  57. word_begin = temp + 1;
  58. }
  59. }
  60. reverse(s, temp - 1);// temp-1 - the last char
  61. printf("\n%s\n", s);
  62. while (*temp == '\0')
  63. temp++;
  64. s = temp;
  65. }
  66.  
  67. }
  68.  
  69. void reverseWords2(char *s, ...)
  70. {
  71. while (*s != '0')
  72. {
  73. char *word_begin = s;
  74. char *temp = s;
  75.  
  76.  
  77. while (*temp)
  78. {
  79. temp++;
  80. if (*temp == '\0')// reverse the last word, cycle ends, temp is null
  81. {
  82. reverse(word_begin, temp - 1);
  83. }
  84. else if (*temp == ' ')// reverse the word before space and put word_begin on char after space
  85. {
  86. reverse(word_begin, temp - 1);
  87. word_begin = temp + 1;
  88. }
  89. }
  90. reverse(s, temp - 1);// temp-1 - the last char
  91. printf("\n%s\n", s);
  92. while (*temp == '\0')
  93. temp++;
  94. s = temp;
  95. }
  96. }
  97.  
  98. void reverseWords3(char *s, ...)
  99. {
  100. va_list parg;
  101. va_start(parg, s);
  102. char *pt = s;
  103. while (*pt != '\0')
  104. {
  105. char *word_begin = va_arg(parg, char*);
  106. char *temp = word_begin;
  107. char * d = word_begin;
  108.  
  109. while (*temp)
  110. {
  111. temp++;
  112. if (*temp == '\0')// reverse the last word, cycle ends, temp is null
  113. {
  114. reverse(word_begin, temp - 1);
  115. }
  116. else if (*temp == ' ')// reverse the word before space and put word_begin on char after space
  117. {
  118. reverse(word_begin, temp - 1);
  119. word_begin = temp + 1;
  120. }
  121. }
  122. reverse(d, temp - 1);// temp-1 - the last char
  123. printf("\n%s\n", d);
  124. pt++;
  125. }
  126. va_end(parg);
  127. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement