#include <iostream>
using namespace std;
void dolacz(char docelowa[], int rozmiar, char dolaczana[]); //deklaracja funkcji
//***********************************
int main()
{
char bazowa[]={"Baza"};
cout<<"Przed dolaczeniem:\n";
int rozmiar1=0; //inicjalizacja rozmiaru bazowego C-stringu
for(int i=0; ; i++) //wypisanie i policzenie rozmiaru bazowej tablicy
{
rozmiar1++;
if(bazowa[i]==NULL)
break;
cout<<bazowa[i];
}
char dodatkowa[]={"Dolaczenie"};
cout<<"\nTo sie dolaczy:\n";
int rozmiar2=0; //inicjalizacja rozmiaru dołączanego C-stringu
for(int i=0; ; i++) //wypisanie i policzenie rozmiaru dołączanej tablicy
{
rozmiar2++;
if(dodatkowa[i]==NULL)
break;
cout<<dodatkowa[i];
}
int rozmiar = rozmiar1 + rozmiar2 - 1; //inicjalizacja rozmiaru całego C-stringu(po dołączeniu)
cout<<endl;
dolacz(bazowa, rozmiar, dodatkowa); //Wywołanie funkcji
cout<<endl;
return 0;
}
//************************************
void dolacz(char docelowa[], int rozmiar, char dolaczana[])
{
cout<<"Po dolaczeniu:\n";
int rozmiar2=0;
for(int i=0; ; i++) //rozmiar dołączanej tablicy
{
rozmiar2++;
if(dolaczana[i]==NULL)
break;
}
for(int i=rozmiar-rozmiar2; ; i++) //operacja dołączania
{
docelowa[i]=dolaczana[i-(rozmiar-rozmiar2)];
if(docelowa[i] == NULL)
break;
}
for(int i=0; ; i++) //wypisanie po dołączeniu
{
if(docelowa[i]==NULL)
break;
cout<<docelowa[i];
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgogCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKdm9pZCBkb2xhY3ooY2hhciBkb2NlbG93YVtdLCBpbnQgcm96bWlhciwgY2hhciBkb2xhY3phbmFbXSk7ICAvL2Rla2xhcmFjamEgZnVua2NqaQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCmludCBtYWluKCkKewogICAgICAgIGNoYXIgYmF6b3dhW109eyJCYXphIn07CiAgICAgICAgY291dDw8IlByemVkIGRvbGFjemVuaWVtOlxuIjsKICAgICAgICBpbnQgcm96bWlhcjE9MDsgICAgICAgICAgICAgICAgLy9pbmljamFsaXphY2phIHJvem1pYXJ1IGJhem93ZWdvIEMtc3RyaW5ndQogICAgICAgIGZvcihpbnQgaT0wOyA7IGkrKykgICAgICAgIC8vd3lwaXNhbmllIGkgcG9saWN6ZW5pZSByb3ptaWFydSBiYXpvd2VqIHRhYmxpY3kKICAgICAgICB7CiAgICAgICAgICAgICAgICByb3ptaWFyMSsrOwogICAgICAgICAgICAgICAgaWYoYmF6b3dhW2ldPT1OVUxMKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNvdXQ8PGJhem93YVtpXTsKICAgICAgICB9CiAgICAgICAgY2hhciBkb2RhdGtvd2FbXT17IkRvbGFjemVuaWUifTsKICAgICAgICBjb3V0PDwiXG5UbyBzaWUgZG9sYWN6eTpcbiI7CiAgICAgICAgaW50IHJvem1pYXIyPTA7ICAgICAgICAgICAgICAgIC8vaW5pY2phbGl6YWNqYSByb3ptaWFydSBkb8WCxIVjemFuZWdvIEMtc3RyaW5ndQogICAgICAgIGZvcihpbnQgaT0wOyA7IGkrKykgICAgICAgIC8vd3lwaXNhbmllIGkgcG9saWN6ZW5pZSByb3ptaWFydSBkb8WCxIVjemFuZWogdGFibGljeQogICAgICAgIHsKICAgICAgICAgICAgICAgIHJvem1pYXIyKys7CiAgICAgICAgICAgICAgICBpZihkb2RhdGtvd2FbaV09PU5VTEwpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY291dDw8ZG9kYXRrb3dhW2ldOwogICAgICAgIH0KICAgICAgICBpbnQgcm96bWlhciA9IHJvem1pYXIxICsgcm96bWlhcjIgLSAxOyAgICAgICAgLy9pbmljamFsaXphY2phIHJvem1pYXJ1IGNhxYJlZ28gQy1zdHJpbmd1KHBvIGRvxYLEhWN6ZW5pdSkKICAgICAgICBjb3V0PDxlbmRsOwogICAgICAgIGRvbGFjeihiYXpvd2EsIHJvem1pYXIsIGRvZGF0a293YSk7ICAvL1d5d2/FgmFuaWUgZnVua2NqaQogICAgICAgIGNvdXQ8PGVuZGw7CiAgICAgICAgcmV0dXJuIDA7Cn0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKdm9pZCBkb2xhY3ooY2hhciBkb2NlbG93YVtdLCBpbnQgcm96bWlhciwgY2hhciBkb2xhY3phbmFbXSkKewogICAgICAgIGNvdXQ8PCJQbyBkb2xhY3plbml1OlxuIjsKICAgICAgICBpbnQgcm96bWlhcjI9MDsKICAgICAgICBmb3IoaW50IGk9MDsgOyBpKyspICAgICAgICAgICAgICAgIC8vcm96bWlhciBkb8WCxIVjemFuZWogdGFibGljeQogICAgICAgIHsKICAgICAgICAgICAgICAgIHJvem1pYXIyKys7CiAgICAgICAgICAgICAgICBpZihkb2xhY3phbmFbaV09PU5VTEwpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBmb3IoaW50IGk9cm96bWlhci1yb3ptaWFyMjsgOyBpKyspICAgICAgICAgICAgICAgIC8vb3BlcmFjamEgZG/FgsSFY3phbmlhCiAgICAgICAgewogICAgICAgICAgICAgICAgZG9jZWxvd2FbaV09ZG9sYWN6YW5hW2ktKHJvem1pYXItcm96bWlhcjIpXTsKICAgICAgICAgICAgICAgIGlmKGRvY2Vsb3dhW2ldID09IE5VTEwpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBmb3IoaW50IGk9MDsgOyBpKyspICAgICAgICAgICAgICAgIC8vd3lwaXNhbmllIHBvIGRvxYLEhWN6ZW5pdQogICAgICAgIHsKICAgICAgICAgICAgICAgIGlmKGRvY2Vsb3dhW2ldPT1OVUxMKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNvdXQ8PGRvY2Vsb3dhW2ldOwogICAgICAgIH0KfQ==