Mam do zrobienia program na podstawie listy jednokierunkowej ktory wpisuje do listy dane np. studenta wczytane z klawiatury i wypisuje je
Problem polega na tym ze wypisuje mi dane pierwszej osoby ale drugiej juz nie , bo wyskakuje jakis błąd , nowe elementy do listy dodawane sa na koniec listy
oto kod:
#include
#include
#include
#include
#include
#include
using namespace std;
struct student //struktura opisujaca studenta
{
int id;
string imie;
string nazwisko;
string data_ur;
string kierunek_studiow;
int rok_studiow;
student * nastepny; //wskaznik na nastepnego studenta
};
int nr_id=0;
void wypisz(student* osoba) //wypisuje zawartosc listy, osoba - wskaznik na pierwszego studenta
{
cout<
while(osoba != NULL) //powtarzamy dopoki wskaznik na nastepnego studenta jest rozny od NULL
{
cout<< osoba->id <<"\t"; //wypisywanie wszystkich danych dotyczacych studenta
cout<< osoba->imie <<"\t";
cout<< osoba->nazwisko <<"\t";
cout<< osoba->data_ur <<"\t";
cout<< osoba->kierunek_studiow <<"\t";
cout<< osoba->rok_studiow<
osoba = osoba->nastepny; //ustawienie wskaznika na nastepna osobe
}
cout<
}
student* dodaj(student* pierwszy,student* nowy)
{
nr_id++; //zwiekszenie Id
nowy->id=nr_id; //nadanie studentowi nowego Id
student* ostatni=NULL;
if(pierwszy==NULL) //jesli lista jest pusta
{
pierwszy=nowy;
ostatni=pierwszy;
}
else //jesli lista nie jest pusta
{
ostatni->nastepny=nowy;
ostatni=nowy;
}
return pierwszy;
}
void wyswietl_menu()
{
cout<<" ***MENU***"<
cout<<"1 - wypisz zawartosc bazy"<
cout<<"2 - dodaj nowego studenta"<
cout<<"Twoj wybor to:";
}
int main()
{
student* pierwszy=NULL;
int wybor = 0;
while(wybor!=3) // powtarzamy dopoki wybor jest rozny od 9(koniec)
{
wyswietl_menu(); //wywolanie funkcji wyswietlajacej menu
cin>>wybor; // pobranie wybory uzytkownika
switch(wybor) //spawdzenie wyboru uzytkowwnika
{
case 1:
wypisz(pierwszy);
break;
case 2:
{
// Tworzenie nowego studenta
student* nowy=new student();
nowy->nastepny=NULL;
cout<
cin>>nowy->imie;
cout<
cin>>nowy->nazwisko;
cout<
cin>>nowy->data_ur;
cout<
cin>>nowy->kierunek_studiow;
cout<
cin>>nowy->rok_studiow;
cout<
pierwszy=dodaj(pierwszy,nowy);
break;
}
default:
break;
}
}
cin.ignore();
getchar();
return 0;
}
Jak wpisuje dane drugiego studenta to wyskakuje taki błąd:
Proszę o odp