Advertisement
VictoriaLodochkina

lab 3 z3 test

Mar 3rd, 2020
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.10 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int lengthString(char*);
  5. char* insertnString(char*, char*, int, int);
  6. char* Strcpy1(char*, char*);
  7.  
  8. int main()
  9. {
  10.     setlocale(LC_CTYPE, "rus");
  11.  
  12.     char* stroka1 = new char[15];
  13.     char* stroka2 = new char[5];
  14.     int pozic;
  15.     int n;
  16.     cout << "Введите n: " << endl;
  17.     cin >> n;
  18.     int* mas = new int[n];
  19.     cout << "Введите массив: " << endl;
  20.     for (int i = 0; i < n; i++)
  21.     {
  22.         cin >> *(mas + i);
  23.         //cin >> mas[i];
  24.     }
  25.     cout << "Введите первую строку для конкатенации: ";
  26.     cin >> stroka1;
  27.     cout << "Введите вторую строку для конкатенации: ";
  28.     cin >> stroka2;
  29.     int countV = 0;
  30.     for (int i = 0; i < n; i++)
  31.     {
  32.         insertnString(stroka1, stroka2, *(mas+i), countV);//DANGER!!!!!!!!!!!
  33.         countV++;
  34.     }
  35.     cout << "Результат объединения: ";
  36.     printf("%s", stroka1);
  37. }
  38. int lengthString(char* stroka)
  39. {
  40.     int i;
  41.     //for (i = 0; stroka[i] != '\0'; i++);
  42.     for (i = 0; *(stroka+i) != '\0'; i++); ////////////[]
  43.     return i;
  44. }
  45. char* insertnString(char* s1, char* s2, int n, int count)
  46. {
  47.     int l1 = lengthString(s1);
  48.     int l2 = lengthString(s2);
  49.     char* rezult_str = new char[l1 + l2 + 1];                // строка - сборка +1 для символа конца строки
  50.     n--;
  51.     int poz = n + count * l2;
  52.     for (int x = 0; x < poz; x++)
  53.         //rezult_str[x] = s1[x];                       // копируем часть первой строки до нужного индекса
  54.         *(rezult_str+x) = *(s1+x);
  55.     for (int x = 0; x < l2; x++)            //добавляем вставляемую строку
  56.         //rezult_str[x + poz] = s2[x];
  57.         *(rezult_str+x + poz) = *(s2+x);
  58.     for (int x = poz; *(s1+x) != 0; x++)     //добавляем оставшуюся часть первой строки///////////
  59.         *(rezult_str+x + l2) = *(s1+x);/////////////
  60.     *(rezult_str+l1 + l2) = '\0';///////////////
  61.     Strcpy1(s1, rezult_str);
  62.     return  s1;
  63. }
  64. char* Strcpy1(char* dst, char* src)
  65. {
  66.     char* pt = dst;
  67.     while (*src)
  68.         *(dst++) = *(src++);
  69.     *dst = 0;
  70.     return pt;
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement