Advertisement
VictoriaLodochkina

hgjgjhg

Mar 5th, 2020
275
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.29 KB | None | 0 0
  1. #include <iostream>
  2. #include <string.h>
  3. #include <stdio.h>
  4. using namespace std;
  5.  
  6. int lengthString(char*);
  7. char* insertnString(char*, char*, unsigned* mas1);
  8. char* Strcpy1(char*, char*);
  9.  
  10. int main()
  11. {
  12.     //setlocale(LC_ALL, "Russian");
  13.     char* stroka1 = new char[15];
  14.     char* stroka2 = new char[5];
  15.    // int pozic;
  16.     int n;
  17.     cout << "Enter number of pastes: " << endl;
  18.     cin >> n;
  19.     unsigned int* mas = new unsigned int[n+1];
  20.     cout << "Enter positions: " << endl;
  21.     mas[0] = n; //количество вставок
  22.     for (int i = 1; i < n+1; i++)
  23.     {
  24.         cin >> *(mas + i);
  25.     }
  26.     cout << "Enter stroka1: ";
  27.     getchar(); //чтобы \n не попал в ввод
  28.     scanf("%s", stroka1);
  29.     //cin >> stroka1;
  30.     cout << "Enter stroka2: ";
  31.     getchar();
  32.     scanf("%s", stroka2);
  33.     //cin >> stroka2;
  34.     insertnString(stroka1, stroka2, mas);//DANGER!!!!!!!!!!!
  35.     /*int countV = 0;
  36.     for (int i = 0; i < n; i++)
  37.     {
  38.         insertnString(stroka1, stroka2, mas);//DANGER!!!!!!!!!!!
  39.         countV++;
  40.     }*/
  41.     cout << "Result: ";
  42.     printf("%s", stroka1);
  43. }
  44. int lengthString(char* stroka)
  45. {
  46.     int i;
  47.     for (i = 0; *(stroka+i) != '\0'; i++); ////////////[]
  48.     return i;
  49. }
  50. /*char* insertnString(char* s1, char* s2, int n, int count)
  51. {
  52.     int l1 = lengthString(s1);
  53.     int l2 = lengthString(s2);
  54.     char* rezult_str = new char[l1 + l2 + 1];                // строка - сборка +1 для символа конца строки
  55.     n--;
  56.     int poz = n + count * l2;
  57.     for (int x = 0; x < poz; x++)            // копируем часть первой строки до нужного индекса
  58.         *(rezult_str+x) = *(s1+x);
  59.     for (int x = 0; x < l2; x++)            //добавляем вставляемую строку
  60.         *(rezult_str+x + poz) = *(s2+x);
  61.     for (int x = poz; *(s1+x) != 0; x++)     //добавляем оставшуюся часть первой строки///////////
  62.         *(rezult_str+x + l2) = *(s1+x);/////////////
  63.     *(rezult_str+l1 + l2) = '\0';///////////////
  64.     Strcpy1(s1, rezult_str);
  65.     return  s1;
  66. }*/
  67. char* Strcpy1(char* dst, char* src)
  68. {
  69.     char* pt = dst;
  70.     while (*src)
  71.         *(dst++) = *(src++);
  72.     *dst = 0;
  73.     return pt;
  74. }
  75.  
  76.  
  77.  
  78.  
  79. char* insertnString(char* s1, char* s2, unsigned *mas1)
  80. {
  81.     int count = 0;
  82.     int n = mas1[0];
  83.     cout << n;
  84.     //for (int i = 0; i<(sizeof(*mas1)/(sizeof(unsigned int))); i++)
  85.     while (mas1)
  86.     {
  87.         int l1 = lengthString(s1);
  88.         int l2 = lengthString(s2);
  89.         char* rezult_str = new char[l1 + l2 + 1];                // строка - сборка +1 для символа конца строки
  90.         n--;
  91.         int poz =n + count * l2;
  92.         for (int x = 0; x < poz; x++)            // копируем часть первой строки до нужного индекса
  93.             *(rezult_str + x) = *(s1 + x);
  94.         for (int x = 0; x < l2; x++)            //добавляем вставляемую строку
  95.             *(rezult_str + x + poz) = *(s2 + x);
  96.         for (int x = poz; *(s1 + x) != 0; x++)     //добавляем оставшуюся часть первой строки///////////
  97.             *(rezult_str + x + l2) = *(s1 + x);/////////////
  98.         *(rezult_str + l1 + l2) = '\0';///////////////
  99.         Strcpy1(s1, rezult_str);
  100.         count++;
  101.         return  s1;
  102.     }
  103. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement