Hejka Pisze w C++, chciałem napisać dziennik uwag uzywając struktur i list jednokierunkowych. Niestety w moim kodzie podczas kompilacji pojawia się kilka błędów m.i.n
Zgłoszono wyjątek: naruszenie dostępu do odczytu.
this było 0xCDCDCDCD. w lini 24
Prosiłbym o pomoc, i sprawdzenie tego kodu, mam tez pewne watpliowsci cz poprawnie napisalem funkcje dodaj oraz usun. Z gory dziekuje za pokazanie mi bledow i wskazowki ;)
Oto kod:
#include <iostream>
#include <string>
using namespace std;
struct uczen {
string imie;
string nazwisko;
int data;
string uwaga;
void drukuj();
uczen *nastepny;
uczen();
};
uczen::uczen()
{
nastepny == nullptr;
}
void uczen::drukuj()
{
cout << imie << " " << nazwisko << " " << data <<" "<< uwaga << endl;
}
struct ListaUczniow {
uczen *pierwszy;
void dodaj(string imie, string nazwisko, int data, string uwaga);
void usun(int nr);
void drukujListe();
ListaUczniow();
};
ListaUczniow::ListaUczniow()
{
pierwszy = nullptr;
}
void ListaUczniow::dodaj(string imie, string nazwisko, int data, string uwaga)
{
uczen *nowa = new uczen;
nowa->imie = imie;
nowa->nazwisko = nazwisko;
nowa->data = data;
nowa->uwaga = uwaga;
if (pierwszy == nullptr)
pierwszy = nowa;
else
{
uczen*biezaca = pierwszy;
while (biezaca->nastepny) {
biezaca = biezaca->nastepny;
}
biezaca->nastepny = nowa;
nowa->nastepny = nullptr;
}
}
void ListaUczniow::usun(int nr)
{
int licznik = 1;
if (pierwszy == nullptr)
return;
if (nr == 1)
{
uczen *biezaca = pierwszy->nastepny;
delete pierwszy;
pierwszy = biezaca;
}
if(nr>=2) {
uczen *tymczasowa;
uczen * biezaca = pierwszy;
while (biezaca)
{
if ((licznik + 1) == nr) break;
biezaca = biezaca->nastepny;
licznik++;
}
if (biezaca->nastepny->nastepny == nullptr)
{
delete biezaca->nastepny;
biezaca->nastepny == nullptr;
}
tymczasowa = biezaca->nastepny->nastepny;
delete biezaca->nastepny;
biezaca->nastepny = tymczasowa;
}
}
void ListaUczniow::drukujListe()
{
uczen *biezaca = pierwszy;
while (biezaca != nullptr)
{
biezaca->drukuj();
biezaca = biezaca->nastepny;
}
}
void menu();
int main()
{
menu();
getchar();
system("pause");
return 0;
}
void menu()
{
ListaUczniow* baza = new ListaUczniow;
baza->dodaj("Pawel", "Kowalsz", 12, "Nie uczy sie");
baza->drukujListe();
}