Funkcja nie przesyła wyników+ scalanie dwóch ciągów

0

Dzień dobry,

Jestem początkującym programistą i w ramach zajęć musze zrobić projekt z C++ operujący na sekwencjach RNA (generalnie można uznać to za działania na ciągu liter)

Wymaganymi operacjami są m.in. usuwanie i edycja wybranego znajdującego się we wprowadzonej przez użytkownika sekwencji. Do tego stworzyłam 2 funkcje, w obu mam identyczny problem: mimo przesłania do funkcji wskaźnika na konkretną sekwencje, zmiany dokonują się jedynie na kopiach lokalnych i nie są zwracane poza funkcje usuń/edytuj. Być może problemem jest niewłasciwe użycie wskaźników, jednak konsultacje z 2 informatykami 'in spe' też nie przyniosły rozwiązania. Oto kod (a raczej wybrane fragmenty):

//usuwanie elementu
string Usuniecie (RNA sekwencje1, int ktora)
{
    int i;
    for (i=ktora; i<=sekwencje1.dlugosc-2; i++)
    {
        sekwencje1.t[i]=sekwencje1.t[i+1];
    }
    sekwencje1.dlugosc--;
    return sekwencje1.t;
}


//zamiana elementu
void Zamiana (RNA sekwencje1, int ktora, char na)
{
     sekwencje1.t[ktora]=na;
}




int main(int argc, char *argv[])
{
map <int, RNA*> RNAsekwencje;
//po tym nastepuje switch , tam m.in. wprowadzanie sekwencji, ale w nim najbardziej nas interesujace: 

                    system ("CLS");
                    long int x;
                    int ktora, i;
                    char na;
                    cout<<"Podaj indeks sekwencji, ktora chcesz edytowac: "<<endl;
                    cin>>i;
                    cout<<"Podaj numer nukleotydu, ktory chcesz zmienic: "<<endl;
                    cin>>ktora;
                    cout<<"Podaj symbol docelowego nukleotydu (Pamietaj o duzej literze!)"<<endl;
                    cin>>na;
                    Zamiana(*RNAsekwencje[i], ktora-1, na);
                    break;
}

Jeśli chodzi o usuwanie, to sytuacja wygląda analogicznie, więc nie będę dodatkowo wklejać kodu.

I drugi problem- dopisywanie sekwencji tab do sekwencji "sekwencje1" tworząc nową: "sekwencja" - jaki tutaj jest błąd? Generalnie string nie chce wyjść poza funkcję.

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

Przepraszam za wszelakie głupie błedy, program przeszedł juz przez sito znajomych i niestety nie potrafimy rozwiązać problemu.

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

Alicja

0

Zgaduje ze RNA jest obiektem Twojej klasy. Pierwszym bledem rzucajacym sie w oczy jest przesylanie wszedzie do funkcji obiektu RNA nie jako wskaznika czy referencji tylko jako zwykly obiekt. Przez to na stosie tworzy sie lokalna kopia tego obiektu i zmiana poza funkcjami nie nastepuje. Jest jeszcze kilka mniejszych bledow, ale to pozniej jesli nie bedzie dalej dzialac.

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