[ webskater1 @ 10.09.2006. 11:33 ] @
Moze li mi neko rijesiti ovaj zadatak?

Definisite slijedece funkcije:

Code:

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


Potom napravite neku testnu funkciju main u kojoj cete koristiti implementirane funkcije, kao npr.:

Code:

void 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;
}
   
[ pcaca @ 10.09.2006. 18:05 ] @
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