Advertisement
codegod313

kr(OAIP)3

Nov 29th, 2019
278
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.93 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <string>
  4.  
  5. using namespace std;
  6.  
  7. int str_len(char *s){
  8.     int k = 0;
  9.     while (s[k++]);
  10.     return --k;
  11. }
  12.  
  13.  
  14. int atoi(char *s) { // задание 1
  15.     int mn = 1;
  16.     int ans = 0;
  17.     for (int i = str_len(s) - 1; i >= 0; i--) {
  18.         if (s[i] >= '0' && s[i] <= '9') {
  19.             ans += (s[i] - '0') * mn;
  20.             mn *= 10;
  21.         }
  22.         else return -1;
  23.     }
  24.     return ans;
  25. }
  26.  
  27. void init(char *&s) { // воодит строку до нажатия Enter
  28.     rewind(stdin);
  29.     s = (char*)malloc(sizeof(char));
  30.     s[0] = getchar();
  31.     int i = 0;
  32.     while (s[i] != '\n') {
  33.         i++;
  34.         s = (char*)realloc(s, (i + 1) * sizeof(char));
  35.         s[i] = getchar();
  36.     }
  37.     s[i] = '\0';
  38. }
  39.  
  40. void push_d(char *s, int l, int r) {
  41.     for (int i = l; i < str_len(s) - (r - l) - 2; i++) {
  42.         s[i] = s[i + (r - l) + 2];
  43.     }
  44.     s[str_len(s) - (r - l) - 2] = '\0';
  45. }
  46.  
  47. void deleteword(char *s, int number) { // задание 2
  48.     int n = 0;
  49.     int i = 0;
  50.     int l;
  51.     int r;
  52.     while (s[i]) {
  53.         while (s[i] == ' ') i++;
  54.         l = i;
  55.         while (s[i] && s[i] != ' ')i++;
  56.         r = i - 1;
  57.         n++;
  58.         if (n == number) {
  59.             push_d(s, l, r);
  60.             break;
  61.         }
  62.            
  63.     }
  64. }
  65.  
  66.  
  67. void deletesymbol(char *s, char c) { // задание 3
  68.     for (int i = 0; i < str_len(s); i++) {
  69.         if (s[i] == c) {
  70.             for (int j = i; j < str_len(s) - 1; j++) {
  71.                 s[j] = s[j + 1];
  72.             }
  73.             s[str_len(s) - 1] = '\0';
  74.             i--;
  75.         }
  76.     }
  77. }
  78.  
  79. void reverser(char *s, int l, int r) {
  80.     int j = 0;
  81.     for ( int i = l; i <= (l + r) / 2; i++) {
  82.         swap(s[i], s[r - j]);
  83.         j++;
  84.     }
  85. }
  86.  
  87. void swapper(char *s, int n1, int n2) { // задаиние 4
  88.     if (n2 < n1) {
  89.         swap(n1, n2);
  90.     }
  91.     int n = 0;
  92.     int i = 0;
  93.     int l,l1,l2;
  94.     int r,r1,r2;
  95.     while (s[i]) {
  96.         while (s[i] == ' ') i++;
  97.         l = i;
  98.         while (s[i] && s[i] != ' ')i++;
  99.         r = i - 1;
  100.         n++;
  101.         if (n == n1) {
  102.             r1 = r;
  103.             l1 = l;
  104.         }
  105.         if (n == n2) {
  106.             r2 = r;
  107.             l2 = l;
  108.         }
  109.     }
  110.     reverser(s, l1, r2);
  111.     r1 = l1;
  112.     while (s[r1] && s[r1] != ' ') r1++;
  113.     r1--;
  114.     reverser(s, l1, r1);
  115.     l2 = r2;
  116.     while (s[l2] && s[l2] != ' ') l2--;
  117.     l2++;
  118.     reverser(s, l2, r2);
  119.     reverser(s, r1 + 1, l2 - 1);
  120. }
  121.  
  122. void inputer(char *s, char *inp, int number) { // задание 5
  123.     int n = 0;
  124.     int i = 0;
  125.     int l;
  126.     int r;
  127.     while (s[i]) {
  128.         while (s[i] == ' ') i++;
  129.         l = i;
  130.         while (s[i] && s[i] != ' ')i++;
  131.         r = i - 1;
  132.         n++;
  133.         if (n == number) {
  134.             s = (char *)realloc(s,(str_len(s) + str_len(inp) + 1) * sizeof(char));
  135.             s[str_len(s) + str_len(inp) + 1] = '\0';
  136.             s[str_len(s)] = '%';
  137.            
  138.             for (int i = str_len(s)-1; i > r; i--) {
  139.                 s[i] = s[i - str_len(inp) - 1];
  140.             }
  141.             s[r + 1] = ' ';
  142.             for (int i = r + 2; i < r + 2 + str_len(inp); i++) {
  143.                 s[i] = inp[i - r - 2];
  144.             }
  145.         }
  146.  
  147.     }
  148. }
  149.  
  150. int main()
  151. {
  152.     char *s = (char *)malloc(sizeof(char));
  153.     char *inp = (char *)malloc(sizeof(char));
  154.     free(s);
  155.     free(inp);
  156.     init(s);
  157.     init(inp);
  158.     //int a = atoi(s);
  159.     //deleteword(s, 1);
  160.     //deletesymbol(s, 'a');
  161.     //swapper(s, 1, 2);
  162.     //inputer(s, inp, 2);
  163. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement