Witam, chcę napisać funkcję w c++ która przyjmuje jako parametr pewien ciąg danych, ilość elementów tego ciągu oraz indeks elementu który ma być wykreślony z ciągu. Robię to na tej zasadzie że w funkcji tworzę sobie 2 ciąg któremu funkcją mallock alokuję odpowiednio mniej miejsca niż pierwotnemu ciągowi i dodaje do niego wszystkie elementy oprócz tego elementu który ma być wykreślony. Potem trzeba jakoś przypisać do pierwotnego ciągu wartości z nowego ciągu i tu pojawiają się problemy.
robię to tak:
free(ciag);
ciag = (int*) malloc(iloscElementowCiagu * sizeof(int));
for(int i=0; i<iloscElementowCiagu; i++)
{
*(ciag + i) = *(nowy_ciag+i);
}
free(nowy_ciag);
Czyli po prostu zwalniam pamięć ze starego ciągu a potem na nowo alokuję dla niego pamięć i przepisuję każdy element z nowego ciągu do starego ciągu, na koniec zwalniam pamięć z nowego ciągu. Niestety gdy spróbuję poza funkcją odczytać wartości z ciągu to wychodzą ogromne liczby ze znakiem minus. Tak wygląda sygnatura metody:
void usunLiczbezCiagu(int* ciag, int liczbaElementow, int indeks)
Dodam że jednym z wymogów jest to że nie mogę skorzystać z z operatorów new[] ani delete[], wszystko muszę robić przy użyciu starych funkcje z języka C, jakieś podpowiedz? Z góry dziękuję.