Pravilo foruma je da se ne resavaju domaci, ako se sam ne potrudis i da potrazis pomoc gde zaglavis. Ali evo jedan iskljucak, jer sam danas dobre volje
Pretpostavljam da ne smes koristiti funkcije strcat ili sprintf. Ako smes onda je mnogo lakse
Kod bez strcat i sprintf
Code:
#include <iostream>
using namespace std;
char* dodjeli_str(char* s);
void dodaj_str(char* &a, char* b);
char* spoji_str(char* a, char* b); //ovo su overloaded funkcije
char* spoji_str(char* a, char* b, char* c); //ovo su overloaded funkcije
int main()
{
char* str1=dodjeli_str("Prva recenica");
dodaj_str(str1, ", ");
char* str2=spoji_str(str1, "Treca recenica");
char* str3=spoji_str(">>>>>", str2, "<<<<<<");
cout << str1 << endl; //sipis: "Prva recenica, "
cout << str2 << endl; //ispis: "Prva recenica, Treca recenica"
cout << str3 << endl; //ispis: ">>>>>Prva recenica, Treca recenica<<<<<<"
delete [] str1;
delete [] str2;
delete [] str3;
return 0;
}
char* dodjeli_str(char* s)
{
char* tmp = new char[strlen(s) + 1];
for (unsigned i = 0; i <= strlen(s); ++i)
tmp[i] = s[i];
return tmp;
}
void dodaj_str(char* &a, char* b)
{
char* tmp = new char[strlen(a) + strlen(b) + 1];
for (unsigned i = 0; i <= strlen(a); ++i)
tmp[i] = a[i];
for (unsigned i = 0; i <= strlen(b); ++i)
tmp[strlen(a) + i] = b[i];
a = tmp;
}
char* spoji_str(char* a, char* b)
{
char* tmp = new char[strlen(a) + strlen(b) + 1];
for (unsigned i = 0; i <= strlen(a); ++i)
tmp[i] = a[i];
for (unsigned i = 0; i <= strlen(b); ++i)
tmp[strlen(a) + i] = b[i];
return tmp;
}
char* spoji_str(char* a, char* b, char* c)
{
char* tmp = new char[strlen(a) + strlen(b) + strlen(c) + 1];
for (unsigned i = 0; i <= strlen(a); ++i)
tmp[i] = a[i];
for (unsigned i = 0; i <= strlen(b); ++i)
tmp[strlen(a) + i] = b[i];
for (unsigned i = 0; i <= strlen(c); ++i)
tmp[strlen(a) + strlen(b) + i] = c[i];
return tmp;
}
Sa mnogo copy&paste