Advertisement
VictoriaLodochkina

base lab 3

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