[C++] Usuwanie elementu z tablicy struktur

0

Witam, potrzebuję napisać funkcję która usunie dowolny element z tablicy struktur. Mam taki kod:

void RemoveBook(Book booksCollection[], int *booksCount)
{
	int index;
	cout << "Podaj numer ksiazki ktora chcesz usunac: ";
	cin >> index;

	if (index >= 0 && index < *booksCount)
	{
		for (int i = index; i < *booksCount - 1; i++)
		{
			booksCollection[index] = booksCollection[index + 1];
		}

		(*booksCount)--;

		cout << "Ksiazka zostala usunieta!" << endl;
	}
	else
	{
		cout << "Podano zly indeks !" << endl;
	}
}

gdzie Book to pewna struktura, a booksCount to wskaźnik do liczby elementów znajdujących się w tablicy.
Niestety ten kod nie działa... Będę wdzięczny jeśli komuś chciało by się go poprawić :)

0

A nie powinieneś czasem przekazać wskaźnika do tablicy ?
Bo jak na razie to pracujesz na lokalnej kopi tej tablicy, która po wyjściu z funkcji jest usuwana

Zainteresuj się zmianą:

void RemoveBook(Book booksCollection[], int *booksCount)

na

void RemoveBook(Book* booksCollection, int *booksCount)
0

Niestety nie mogę się z Tobą zgodzić.... Tablica w C++ sama w sobie jest wskaźnikiem, a zapis

void RemoveBook(Book* booksCollection, int *booksCount)

oznacza, że booksCollection jest po prostu wskaźnikiem do struktury... Nawet nie tablicą.

Wracając do tematu, nadal proszę o poprawienie tej funkcji, bo ja już dziś prawie nie myślę... <lol>

2

W sumie obaj nie macie racji. Nie pracuje na kopii tej tablicy, ale też tablica nie jest wskaźnikiem(co najwyżej zachodzi niejawna konwersja tablicy na wskaźnik).Ten drugi prototyp funkcji też działałby prawidłowo.

Co do kodu to nie działa ponieważ, w pętli, która przesuwa elementy powinieneś indeksować tablicę zmienną i, a nie index - taki czeski błąd.

0

Nom, dobra to ja już może na dziś daję sobie jednak z tym spokój... W każdym razie ta funkcja już działa, dzięki. Pozdro

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