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*);
- char* insertnString(char*, char*, unsigned* mas1);
- char* Strcpy1(char*, char*);
- int main()
- {
- //setlocale(LC_ALL, "Russian");
- char* stroka1 = new char[15];
- char* stroka2 = new char[5];
- // int pozic;
- 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);
- //cin >> stroka1;
- cout << "Enter stroka2: ";
- getchar();
- scanf("%s", stroka2);
- //cin >> stroka2;
- insertnString(stroka1, stroka2, mas);//DANGER!!!!!!!!!!!
- /*int countV = 0;
- for (int i = 0; i < n; i++)
- {
- insertnString(stroka1, stroka2, mas);//DANGER!!!!!!!!!!!
- countV++;
- }*/
- cout << "Result: ";
- printf("%s", stroka1);
- }
- int lengthString(char* stroka)
- {
- int i;
- for (i = 0; *(stroka+i) != '\0'; i++); ////////////[]
- return i;
- }
- /*char* insertnString(char* s1, char* s2, int n, int count)
- {
- int l1 = lengthString(s1);
- int l2 = lengthString(s2);
- char* rezult_str = new char[l1 + l2 + 1]; // строка - сборка +1 для символа конца строки
- n--;
- int poz = n + count * l2;
- for (int x = 0; x < poz; x++) // копируем часть первой строки до нужного индекса
- *(rezult_str+x) = *(s1+x);
- for (int x = 0; x < l2; x++) //добавляем вставляемую строку
- *(rezult_str+x + poz) = *(s2+x);
- for (int x = poz; *(s1+x) != 0; x++) //добавляем оставшуюся часть первой строки///////////
- *(rezult_str+x + l2) = *(s1+x);/////////////
- *(rezult_str+l1 + l2) = '\0';///////////////
- Strcpy1(s1, rezult_str);
- return s1;
- }*/
- char* Strcpy1(char* dst, char* src)
- {
- char* pt = dst;
- while (*src)
- *(dst++) = *(src++);
- *dst = 0;
- return pt;
- }
- char* insertnString(char* s1, char* s2, unsigned *mas1)
- {
- int count = 0;
- int n = mas1[0];
- cout << n;
- //for (int i = 0; i<(sizeof(*mas1)/(sizeof(unsigned int))); i++)
- while (mas1)
- {
- int l1 = lengthString(s1);
- int l2 = lengthString(s2);
- char* rezult_str = new char[l1 + l2 + 1]; // строка - сборка +1 для символа конца строки
- n--;
- int poz =n + count * l2;
- for (int x = 0; x < poz; x++) // копируем часть первой строки до нужного индекса
- *(rezult_str + x) = *(s1 + x);
- for (int x = 0; x < l2; x++) //добавляем вставляемую строку
- *(rezult_str + x + poz) = *(s2 + x);
- for (int x = poz; *(s1 + x) != 0; x++) //добавляем оставшуюся часть первой строки///////////
- *(rezult_str + x + l2) = *(s1 + x);/////////////
- *(rezult_str + l1 + l2) = '\0';///////////////
- Strcpy1(s1, rezult_str);
- count++;
- return s1;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement