Advertisement
Guest User

Untitled

a guest
Nov 19th, 2019
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.13 KB | None | 0 0
  1. #include <iostream>
  2. int str_len(char* str);//количество символов в строке
  3. int str_cmp(char* str1, char* str2);//сравнивает 2 строки
  4. char* str_cpy(char* str1, char* str2);//копирует из 1 во 2
  5. char* str_cat(char* str1, char* str2);//добавляет к первой вторую
  6. int chr_str(char* str,char ch);//поиск символа в строке
  7. char* str_str(char* str1, char* str2);//поиск строки в строке ,возвращает адрес начала повторения ???
  8. int sum_of_decimals(char* str);//oo111ooo111->222 ???
  9. int sum_of_digits(char* str);//ooo123oo4->10
  10. int words_count(char* str);// подсчет слов с учетом разделителей ";,.!_- ???
  11. int longest(char* str);//самое длинное слово ???
  12. int shortest(char* str);//само короткое слово
  13. char* remove_dup(char* str);//удаляет повторение
  14. char* remove_char(char* str, char ch);//удаляет выборочный символ
  15. char* reverse(char* str);//переворот строки
  16. char* reverse_sub(char* str, int start, int end);//переворот подстроки
  17. void swap(char* a, char* b);//обычный свап лол
  18. char* reverse_words(char* str);
  19. void print_words(char* str);//каждое слово с новой строки
  20. char* s_gets_c(char* str, int size);
  21. char* s_gets(char* str, int size);
  22.  
  23.  
  24.  
  25. int main()
  26. {
  27. char ch = 'a';
  28. char str1[100] = "hkav56o44lox";
  29. char str2[100] = "kavo";
  30. char str3[100] = "Hello.My name is Ilya t da";
  31. //printf("symbols in string %d", str_len(str2));
  32. //str_cpy(str1, str2);
  33. //str_cat(str1, str2);
  34. //printf("%d",str_cmp(str1, str2));
  35. //printf("%s", str1);
  36. //printf("%d",chr_str(str1, ch));
  37. //printf("%d", str_str(str1, str2));
  38. //printf("%d", sum_of_digits(str1));
  39. //printf("%d", sum_of_decimals(str1));
  40. //printf("%d", words_count(str3));
  41. //printf("%d", longest(str3));
  42. //printf("%d", shortest(str3));
  43. //printf("%s", remove_char(str3,ch));
  44. //printf("%s", reverse(str1));
  45. print_words(str3);
  46. return 0;
  47. }
  48.  
  49. int str_len(char* str)
  50. {
  51. int i = 0;
  52. while (str[i])
  53. {
  54. i++;
  55. }
  56. return i;
  57. }
  58.  
  59.  
  60.  
  61. char* str_cpy(char* str1, char* str2)
  62. {
  63. int i = 0;
  64. while (str2[i])
  65. {
  66. str1[i] = str2[i++];
  67.  
  68. }
  69. str1[i] = '\0';
  70.  
  71. return str1;
  72. }
  73.  
  74. char* str_cat(char* str1, char* str2)
  75. {
  76. int i = 0,j = 0;
  77. while (str1[i])
  78. {
  79. i++;
  80. }
  81. while (str2[j])
  82. {
  83. str1[i + j] = str2[j];
  84. j++;
  85. }
  86. return str1;
  87. }
  88. int str_cmp(char* str1, char* str2) {
  89. int i = 0;
  90. while (str1[i] && str2[i]) {
  91. i++;
  92. }
  93. if ((str1[i] - str2[i])) return 1; else return 0;
  94. }
  95.  
  96. int chr_str(char* str, char ch)
  97. {
  98. int i = 0;
  99. while (str[i]) {
  100. if (str[i] == ch)
  101. {
  102. return i;
  103. }
  104. else i++;
  105. }
  106. return -1;
  107. }
  108.  
  109. char* str_str(char* str1, char* str2)
  110. {
  111. int i = 0, j = 0, flag = 1;
  112. while (str1[i])
  113. {
  114. flag = 1;
  115. j = 0;
  116. while (str2[j])
  117. {
  118. if (str1[i+j]!=str2[j])
  119. {
  120. flag = 0;
  121. }
  122. j++;
  123. }
  124. if (flag) return (&str1[i]);
  125. i++;
  126. }
  127.  
  128. return NULL;
  129. }
  130.  
  131. int sum_of_digits(char* str)
  132. {
  133. int sum=0, i=0;
  134. while (str[i])
  135. {
  136. if ((str[i]>='0')&&(str[i]<='9'))
  137. {
  138. sum = sum + (str[i] - '0');
  139. }
  140. i++;
  141. }
  142. return sum;
  143. }
  144.  
  145. int sum_of_decimals(char* str)
  146. {
  147. int sum = 0, i = 0, dec =0;
  148. while (str[i])
  149. {
  150. if ((str[i] >= '0') && (str[i] <= '9'))
  151. {
  152. dec *= 10;
  153. dec += (str[i] - '0');
  154. }
  155. else
  156. {
  157. sum += dec;
  158. dec = 0;
  159. }
  160. i++;
  161.  
  162. }
  163. sum += dec;
  164. return sum;
  165. }
  166.  
  167. int words_count(char* str)
  168. {
  169. int i = 0, counter = 0, in_word = 1;
  170. char sep[]= "., \n\t()!?";
  171. while (str[i])
  172. {
  173. if ((chr_str(sep, str[i])) != -1)
  174. {
  175. if (in_word)
  176. {
  177. counter++;
  178. in_word = 0;
  179. }
  180. }
  181. else
  182. {
  183. in_word = 1;
  184. }
  185. i++;
  186.  
  187. }
  188. if (in_word)
  189. {
  190. counter++;
  191. }
  192. return counter;
  193. }
  194.  
  195. int longest(char* str)
  196. {
  197. int i = 0, max_len = 0, current = 0, in_word = 1;
  198. char sep[] = "., \n\t()!?";
  199. while (str[i])
  200. {
  201. if ((chr_str(sep, str[i])) != -1)
  202. {
  203. if (in_word)
  204. {
  205. if (current > max_len)
  206. {
  207. max_len = current;
  208. }
  209. current = 0;
  210. in_word = 0;
  211. }
  212. }
  213. else
  214. {
  215. current++;
  216. in_word = 1;
  217. }
  218. i++;
  219. }
  220. if (in_word)
  221. {
  222. if (current > max_len)
  223. {
  224. current = max_len;
  225. }
  226. }
  227. return max_len;
  228. }
  229.  
  230. int shortest(char* str)
  231. {
  232. int i = 0, min_len =100, in_word = 1, current = 0;
  233. char sep[] = "., \n\t()!?";
  234. while (str[i])
  235. {
  236. if ((chr_str(sep, str[i])) != -1)
  237. {
  238. if (in_word)
  239. {
  240. if (current < min_len)
  241. {
  242. min_len = current;
  243. }
  244. current = 0;
  245. in_word = 0;
  246. }
  247. }
  248. else
  249. {
  250. current++;
  251. in_word = 1;
  252. }
  253. i++;
  254. }
  255. if (in_word)
  256. {
  257. if (current < min_len)
  258. {
  259. min_len = current;
  260. }
  261. }
  262. return min_len;
  263. }
  264.  
  265. char* remove_char(char* str, char ch)
  266. {
  267. int i = 0,j=0;
  268. while (str[i])
  269. {
  270. if (str[i] != ch)
  271. {
  272. str[j] = str[i];
  273. j++;
  274. }
  275. i++;
  276. }
  277. str[j] = '\0';
  278. return str;
  279. }
  280.  
  281. char* reverse_sub(char* str, int start, int end)
  282. {
  283. while (start < end)
  284. {
  285. swap(str + start++, str + end--);
  286. }
  287. return str;
  288. }
  289.  
  290. void swap(char* a, char* b)
  291. {
  292. char temp = *a;
  293. *a = *b;
  294. *b = temp;
  295. return;
  296. }
  297.  
  298. char* reverse(char* str)
  299. {
  300. return reverse_sub(str, 0, str_len(str) - 1);
  301. }
  302.  
  303. char* reverse_words(char* str)
  304. {
  305. int i = 0, in_word = 1;start=0
  306. char sep[] = "., \n\t()!?";
  307. while (str[i])
  308. {
  309. if ((chr_str(sep, str[i])) != -1)
  310. {
  311. if (in_word)
  312. {
  313. reverse_sub(str, start, i - 1);
  314. in_word = 0;
  315. }
  316. }
  317. else
  318. {
  319. if (!in_word)
  320. {
  321. start = i
  322. }
  323. in_word = 1;
  324. }
  325. i++;
  326. }
  327. if (in_word)
  328. {
  329. reverse_sub(str, start, i - 1);
  330. }
  331. return str;
  332. }
  333.  
  334. char* remove_dup(char* str)
  335. {
  336. int i = 0, j = 0,flag=1, count = 0;
  337. while (str[i])
  338. {
  339. j = 0;
  340. flag = 1;
  341. while (j < count)
  342. {
  343. if (str[i] == str[j])
  344. {
  345. flag = 0;
  346. break;
  347. }
  348. j++;
  349. }
  350. if (flag)
  351. {
  352. str[count] = str[i];
  353. count++;
  354. }
  355. i++;
  356. }
  357. str[count] = '\0';
  358. return str;
  359. }
  360.  
  361. void print_words(char* str)
  362. {
  363. int i = 0, in_word = 1;
  364. char sep[] = "., \n\t()!?";
  365. while (str[i])
  366. {
  367. if ((chr_str(sep, str[i])) != -1)
  368. {
  369. if (in_word)
  370. {
  371. putchar('\n');
  372. in_word = 0;
  373. }
  374. }
  375. else
  376. {
  377. putchar(str[i])
  378. in_word = 1;
  379. }
  380. i++;
  381. }
  382. if (in_word)
  383. {
  384. putchar('\n');
  385. }
  386. return;
  387. }
  388.  
  389. char* s_gets(char* str, int size)
  390. {
  391. if (!fgets(str, size, stdin)) { return NULL; }
  392. int i = 0, flag = 1;
  393. while (str[i]!='\0')
  394. {
  395. if (str[i] == '\n')
  396. {
  397. flag = 0;
  398. break;
  399. }
  400. i++;
  401. }
  402. str[i] = '\0';
  403. if (flag)
  404. {
  405. while (getchar() != '\n');
  406. }
  407. return str;
  408. }
  409.  
  410. char* s_gets_c(char* str, int size)
  411. {
  412. int i = 0;
  413. char ch = '\0';
  414. while ((ch = getchar()) != '\n' && i < size - 1)
  415. {
  416. str[i] = ch;
  417. i++;
  418. }
  419. str[i] = '\0';
  420. return str;
  421. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement