Advertisement
Zharenkov

Untitled

Nov 18th, 2019
249
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.51 KB | None | 0 0
  1. #include <iostream>
  2. int ch_str(char* str, char ch);
  3. int sum_of_digits(char* str);
  4. int sum_of_decimal(char* str);
  5. char* reverse_str(char* str);
  6. char* reverse_substr(char* str, int a, int b);
  7. int str_len(char* str);
  8. int words_count(char* str);
  9. int longest_word(char* str);
  10. int shortest_word(char* str);
  11. void print_words(char* str);
  12. char* reverse_words(char* str);
  13. int main()
  14. {
  15. const int size = 50;
  16. char str[size] = "Alo!!!suka pidaras huly !? ne poluchaetsa!!!blya";
  17. //printf("%d\n", ch_str(str, 's'));
  18. //printf("%d\n", sum_of_digits(str));
  19. //printf("%s\n", reverse_substr(str, 2, 7));
  20. //printf("%d\n", sum_of_decimal(str));
  21. //printf("%d\n", shortest_word(str));
  22. //print_words(str);
  23. printf("%s\n", reverse_words(str));
  24. //printf("%s", str);
  25. }
  26. int ch_str(char* str, char ch) {
  27. int i = 0;
  28. while (str[i]) {
  29. if (str[i] == ch) {
  30. return i;
  31. }
  32. i++;
  33. }
  34. return -1;
  35. }
  36. int sum_of_digits(char* str) {
  37. int i = 0, j = 0;
  38. while (str[i]) {
  39. if (str[i] >= '0' && str[i] <= '9') {
  40. j = j+ (str[i] - '0');
  41. }
  42. i++;
  43. }
  44. return j;
  45. }
  46. int sum_of_decimal(char* str) {
  47. int i = 0, j = 0, k = 0;
  48. while (str[i]) {
  49. k = 0;
  50. while (str[i] >= '0' && str[i] <= '9') {
  51. k = k * 10 + (str[i] - '0');
  52. i++;
  53. }
  54. i++;
  55. j = j + k;
  56. }
  57. return j;
  58. }
  59.  
  60. char* reverse_str(char* str) {
  61. int i = 0;
  62. char k;
  63. while(str[i] && i<(str_len(str)/2)){
  64. k = str[i];
  65. str[i] = str[str_len(str) - i - 1];
  66. str[str_len(str) - i - 1] = k;
  67. i++;
  68. }
  69. return str;
  70. }
  71. int str_len(char* str) {
  72. int i = 0;
  73. while (str[i]) {
  74. i++;
  75. }
  76. return i;
  77. }
  78. char* reverse_substr(char* str, int a, int b) {
  79. int i =0;
  80. char k;
  81. while (str[a+i]&& a+i<b-((b-a)/2)) {
  82. k = str[a+i];
  83. str[a + i] = str[b - i];
  84. str[b - i] = k;
  85. i++;
  86. }
  87. return str;
  88. }
  89. int words_count(char* str) {
  90. int i = 0;
  91. int num = 0;
  92. int flag = 1;
  93. char chek[] = "!&?\t\n '()&^;:`.,";
  94. while (str[i]) {
  95. if (ch_str(chek, str[i]) != -1) {
  96. if (flag == 0) {
  97. num++; flag = 1; i++;
  98. }
  99. else { i++; }
  100. }
  101. else {
  102. i++;
  103. flag = 0;
  104. }
  105.  
  106. }
  107. if (flag == 0) num++;
  108. return num;
  109. }
  110. int longest_word(char* str) {
  111. int i = 0;
  112. int num = 0, max = 0;
  113. int flag = 1;
  114. char chek[] = "!&?\t\n '()&^;:`.,";
  115. while (str[i]) {
  116. if (ch_str(chek, str[i]) != -1) {
  117. if (flag == 0) {
  118. num=0; flag = 1; i++;
  119. }
  120. else { i++; }
  121. }
  122. else {
  123. num++;
  124. i++;
  125. flag = 0;
  126. }
  127. if (num > max) max = num;
  128.  
  129. }
  130.  
  131. return max;
  132. }
  133. int shortest_word(char* str) {
  134. int i = 0;
  135. int num = 0, min = str_len(str);
  136. int flag = 1;
  137. char chek[] = "!&?\t\n '()&^;:`.,";
  138. while (str[i]) {
  139. if (ch_str(chek, str[i]) != -1) {
  140. if (num != 0 && num < min) { min = num; }
  141. num = 0; i++;
  142. }
  143. else {
  144. num++;
  145. i++;
  146. flag = 0;
  147. }
  148.  
  149.  
  150. }
  151. if (flag == 1)min = 0;
  152. return min;
  153. }
  154. void print_words(char* str) {
  155. int i = 0, flag = 0;
  156. char chek[] = "!&?\t\n '()&^;:`.,";
  157. while (str[i]) {
  158. if (ch_str(chek, str[i]) == -1) {
  159. flag = 0;
  160. printf("%c", str[i]);
  161. i++;
  162. }
  163. else {
  164. if (flag == 0) { flag = 1; printf("\n"); i++; }
  165. else { i++; }
  166. }
  167. }
  168. }
  169. char* reverse_words(char* str) {
  170. int i = 0, flag = 1,s = 0, e = 0;
  171. char chek[] = "!&?\t\n '()&^;:`.,";
  172. while (str[i]) {
  173. if (ch_str(chek, str[i]) != -1) {
  174. i++;
  175. }
  176. else {
  177. s = i;
  178. while (str[i]) {
  179. if (ch_str(chek, str[i]) != -1) {
  180. e = i-1 ; str=reverse_substr(str, s, e); break;
  181. }
  182. i++;
  183. if (i == str_len(str)) { e = i - 1; str = reverse_substr(str, s, e ); }
  184.  
  185. }
  186. }
  187. }
  188. return str;
  189. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement