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