Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string.h>
- #include <stdio.h>
- using namespace std;
- int lengthString(char*);
- void strinsi(char*, char*, unsigned* mas1);
- char* Strcpy1(char*, char*);
- int main()
- {
- char* stroka1 = new char[15];
- char* stroka2 = new char[5];
- int n;
- cout << "Enter number of pastes: " << endl;
- cin >> n;
- unsigned int* mas = new unsigned int[n + 1];
- cout << "Enter positions: " << endl;
- mas[0] = n; //количество вставок
- for (int i = 1; i < n + 1; i++)
- {
- cin >> *(mas + i);
- }
- cout << "Enter stroka1: ";
- getchar(); //чтобы \n не попал в ввод
- scanf("%s", stroka1);
- cout << "Enter stroka2: ";
- getchar();
- scanf("%s", stroka2);
- strinsi(stroka1, stroka2, mas);//DANGER!!!!!!!!!!!
- }
- int lengthString(char* stroka)
- {
- int i;
- for (i = 0; *(stroka + i) != '\0'; i++); ////////////[]
- return i;
- }
- char* Strcpy1(char* dst, char* src)
- {
- char* pt = dst;
- while (*src)
- *(dst++) = *(src++);
- *dst = 0;
- return pt;
- }
- void strinsi(char* str, char* substr, unsigned* i)
- {
- int count = 0;
- int n = i[0];
- for (int j = 1; j < (n+1); j++)
- {
- int l1 = lengthString(str);
- int l2 = lengthString(substr);
- char* rezult_str = new char[l1 + l2 + 1]; // строка - сборка +1 для символа конца строки
- i[j]--;
- int poz = i[j] + count * l2;
- for (int x = 0; x < poz; x++) // копируем часть первой строки до нужного индекса
- *(rezult_str + x) = *(str + x);
- for (int x = 0; x < l2; x++) //добавляем вставляемую строку
- *(rezult_str + x + poz) = *(substr + x);
- for (int x = poz; *(str + x) != 0; x++) //добавляем оставшуюся часть первой строки///////////
- *(rezult_str + x + l2) = *(str + x);/////////////
- *(rezult_str + l1 + l2) = '\0';///////////////
- Strcpy1(str, rezult_str);
- count++;
- }
- cout << "Result: ";
- printf("%s", str);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement