Dopisywanie ciągu do istniejącego- ograniczona wielkosc zwracanego ciągu

0

Dzień dobry,

Po pierwsze- jestem początkującym programistą i proszę o wyrozumiałość :)
Mam pewien problem: program działa na sekwencjach RNA (ciągi znaków), jedną z wymaganych operacji jest dopisanie sekwencji do juz istniejącej. RNA-klasa przechowująca obiekty- sekwencje, tab- sekwencja, którą należy dopisać (wprowadzana przez użytkownika), RNAsekwencje= mapa przechowująca wskaźniki do obiektów klasy RNA. Kod:

Funkcja:

string operator += (RNA &sekwencje1, string &tab)
{
    int a= tab.length();
    int i,s=0;
    string przechowywanie=tab;
    for (i=0; i<=sekwencje1.dlugosc-1; i++)
    {
        tab[i]= sekwencje1.t[i];
    }
    for (i=sekwencje1.dlugosc; i<=a+sekwencje1.dlugosc-1; i++)
    {
        tab[i]=przechowywanie[s];
        s++;
    }
    cout<<"Stworzona sekwencja:";
    for (i=0; i<=a+sekwencje1.dlugosc-1; i++)
    {
        cout<<tab[i];
    }
    return tab;
}

Odpowiedni fragment w main:

cout<<"Do ktorej sekwencji chcesz dopisac nowa? ";
cin>>jaka;
string tab;
cout<<"Podaj sekwencje do dopisania: "<<endl;
cin>>tab;
dlugosc=tab.length();
string *wsk;
wsk=&tab;
string tablica=(*RNAsekwencje[jaka]+=*wsk);
int dl=tablica.length();
RNAsekwencje[licznik]=new RNA(tablica,dl);

Problem polega na tym, że nie wiem, jak można "przedłużyć" wskaźnik, by po wykonaniu działania += zwrócona została cała długość sekwencji (istniejąca+dopisana), a nie tylko ilość jej elementów równa ilości elementów w pierwotnym tab. A jeżeli taka możliwość nie istnieje- jak rozwiązać problem przekazania całej sekwencji?

W załączniku umieszczam cały program, by możliwe było sprawdzenie praktyczne.

Z góry dziękuję za odpowiedź,

Alicja

1

WTF? Ja chyba śnię. Co to w ogóle jest? Jakie znów wksaźniki na stringa? I po co skoro zaraz je dereferujesz. Komuś się chyba wydaje że operator pobrania adresu & i operator referencji & to jedno i to samo, a tak nie jest. Zgaduje że chodziło o coś takiego:

string operator += (RNA &sekwencje1, string &tab)
{
    return (sekwencje1.t+=tab);
}
//main
cout<<"Do ktorej sekwencji chcesz dopisac nowa? ";
cin>>jaka;
string tab;
cout<<"Podaj sekwencje do dopisania: "<<endl;
cin>>tab;
*RNAsekwencje[jaka]+=tab;

i voila, sekwencja "jaka" została rozszerzona o podaną tablicę.

1 użytkowników online, w tym zalogowanych: 0, gości: 1