Witam mam problem podczas usuwania elementu(z wybranego miejsca w tablicy) problemem prawdopodobnie jest usuwanie tablicy (tab)
Tutaj znajduje się alokacja 2 tablic:
void create(Alko *&tab, int &size, int&size_a)
{
if (tab == 0)
{
tab = (class Alko*)malloc(size * sizeof(class Alko));
}
else
{
Alko*a = (class Alko*)malloc((size_a + 1) * sizeof(class Alko));
//free(a);
for (int i = 0; i < size_a + 1; i++)
{
a[i] = tab[i];
}
free(tab);
tab = a;
}
}
a tu jest blok odpowiadający za usuwanie elementu z danej pozycji
void usun(Alko *&tab, int &size_a, int ktory)
{
if (tab == 0) {
cout << "Nie ma czego usuwac" << endl;
}
if (ktory > size_a)
{
cout << "Nie ma alkoholu o takim numerze" << endl;
}
else
{
Alko *a = (Alko*)malloc((size_a -1) * sizeof(Alko));
//Alko *a = new Alko ( size_a-1);
int licznik = 0;
for (int i = 0; i < size_a; i++)
{
if (ktory != i)
{
a[licznik] = tab[i];
licznik++;
}
}
free(tab);
tab = a;
size_a--;
}
}
+tu jest dodawaniu elementów do tablicy:
cout << "Ile alkoholow chcesz dodac" << endl;
cin >> ktory;
create(tab, ktory, size_a);
int i = size_a;
for (i; i < size_a + ktory; i++)
{
(tab)[i].dodawanie();
}
size_a += ktory;
cout << endl;
Program wywala się podczas dodawanie kilku elementów do tablicy ,usunięciu elementu nr1 ,dodaniu kilku elementów i usunięciu elementu nr1. Ktoś wie jak można poradzić sobie z tym problemem?
Z góry Dziękuje.