Witam, mam taką funkcję jak poniżej i do tej pory program działał tak że miałem wprowadzane pliki i za każdym razem jak był dodawany następny plik to tamten wcześniej był zamykany a potem otwierany na nowo i dopisywany więc było to nie poprawnie. Chodzi mi o to że wprowadzam jakiś plik i z tego pliku wejscie >> dane są zapisywane do tablicy, pętla się kończy i powiedzmy że mam tą tablice na indeksach 0-5(oczywiście danych może być dowolna ilość), a gdy dodaje następny plik i wywołuję znowu tą funkcję to on mi nadpisuje te dane które dodałem wcześniej bo pętla zaczyna się od zera i nie wiem jak zrobić tak żeby funkcja zaczynała dopisywanie do tablicy do tej danej na której skończyła czyli jak wywołuje dla kolejnego pliku to żeby dopisywało do tablicy dla indeksu 678itd a nie leciało od 0. Mam jeszcze drugi problem jest pod poniższą funkcją, tam jest funkcja do powiększania tablicy i nie wiem jak się z niej pozbyć wycieków.
Z góry dziękuję za pomoc.
void Wypisz_osoby(Studenci **osoby, int ile_osob, string plik_wej_z_param) {
ifstream wejscie(plik_wej_z_param);
Studenci przedmiot;
getline(wejscie, przedmiot.nazwa_przedmiotu);
cout << przedmiot.nazwa_przedmiotu << endl;
getline(wejscie, przedmiot.prowadzacy);
cout << przedmiot.prowadzacy << endl;
for (int i = 0; i < ile_osob; i++)
{
osoby[i]->nazwa_przedmiotu = przedmiot.nazwa_przedmiotu;
osoby[i]->prowadzacy = przedmiot.prowadzacy;
wejscie >> osoby[i]->imie >> osoby[i]->nazwisko >> osoby[i]->nr_albumu >> osoby[i]->ocena >> osoby[i]->data;
cout << osoby[i]->imie << " " << osoby[i]->nazwisko << " " << osoby[i]->nr_albumu << " " << osoby[i]->ocena << " " << osoby[i]->data << "\n";
}
wejscie.close();
}
A tu nie wiem gdzie wsadzić delete żeby program się nie sypał
bool Odczyt_imion(Studenci **&tablica_osoby, string plik_wej_z_param, int &rozmiar_tablicy, int &licznik) {
ifstream wejscie(plik_wej_z_param);
string nazwa_przedmiotu_a;
string prowadzacy_a;
string imie_a;
string nazwisko_a;
string nr_albumu_a;
string ocena_a;
string data_a;
string test;
if (!wejscie) {
cout << "Nie udana proba odczytu pliku: " << plik_wej_z_param << endl;
return EXIT_FAILURE;
}
else {
getline(wejscie, nazwa_przedmiotu_a);
getline(wejscie, prowadzacy_a);
while (wejscie >> imie_a >> nazwisko_a >> nr_albumu_a >> ocena_a >> data_a) {
if (licznik >= rozmiar_tablicy)
{
rozmiar_tablicy += 1 / 2 * rozmiar_tablicy; // powiększenie rozmiaru;
Studenci **tmp = new Studenci*[rozmiar_tablicy];
for (int i = 0; i < licznik; ++i) tmp[i] = tablica_osoby[i];
delete[] tablica_osoby;
tablica_osoby = tmp;
//delete[] tmp;
}
tablica_osoby[licznik] = new Studenci{ nazwa_przedmiotu_a, prowadzacy_a, imie_a, nazwisko_a, nr_albumu_a, ocena_a, data_a };
licznik++;
}
}
return EXIT_SUCCESS;
}