Witam, moja druga funkcja wyszykaj() powinna zwrócić tablicę do głównego programu, ale gdy próbuję ją wyświetlić to program się wysypuję. W czym leży błąd?
#include <iostream>
#include <string>
#include <time.h>
#include <cstdio>
#define BL cout<<endl;
using namespace std;
struct dane
{
bool chory_przewlekle;
bool opieka_onkologiczna;
bool emeryt;
bool kombatant;
};
struct pacjent
{
string imie;
string nazwisko;
int wiek;
int nr_ubez;
char grupa;
dane dane;
};
pacjent wypelnij(pacjent, string, string, int, int, char, bool, bool, bool, bool);
string *wyszukaj(pacjent *, int);
int main()
{
srand(time(0));
pacjent chory1;
chory1 = wypelnij(chory1,"Wojtek", "Guralski", 18, 1234567890, 'a', true, true, true, false);
pacjent chorzy[5];
for (int i = 0; i < 5; i++)
{
chorzy[i] = wypelnij(chory1, "Wojtek", "Guralski", 18+i, rand()% 8999999999 +1000000000, 'a', true, true, true, false);
}
for (int i = 0; i < 5; i++)
{
cout << chorzy[i].imie << " " << chorzy[i].nazwisko << " " << chorzy[i].wiek << " " << chorzy[i].nr_ubez << endl;
}
cout << "Podaj nr_ubez: ";
int nr;
cin >> nr;
string * tab;
tab = wyszukaj(chorzy, nr);
cout << *tab;
return 0;
}
pacjent wypelnij(pacjent obecny,string imie, string nazwisko, int wiek, int nr_ubez, char grupa, bool chory_przewlekle, bool opieka_onkologiczna, bool emeryt, bool kombatant) {
obecny.dane.chory_przewlekle = chory_przewlekle;
obecny.dane.emeryt = emeryt;
obecny.dane.kombatant = kombatant;
obecny.dane.opieka_onkologiczna = opieka_onkologiczna;
obecny.grupa = grupa;
obecny.imie = imie;
obecny.nazwisko = nazwisko;
obecny.nr_ubez = nr_ubez;
obecny.wiek = wiek;
return obecny;
}
string * wyszukaj(pacjent * chorzy, int nr) {
string tab[2];
for (int i = 0; i < 5; i++)
{
if (chorzy[i].nr_ubez == nr) {
cout << "znalazlo";
tab[0] = chorzy[i].imie;
tab[1] = chorzy[i].nazwisko;
}
}
return tab;
}