Hej, na laborki ze studiów, muszę oddać program który wczytuje ilość osób, imie nazwisko, date urodzenia (dzien, miesiac, rok) posortować po roku i zwrócić liste nazwisk od najstarszych.
Wszystko fajnie, program się kompiluje ale wywala mi po wpisaniu wszystkich użytkowników.. Nie wiem ocb... Help!!!!
#include <iostream>
int const maxOsob = 40;
struct Data
{
int rok;
int miesiac;
int dzien;
};
struct Osoba
{
struct Data data;
char imie[] ;
char nazwisko[];
};
struct Osoby
{
struct Osoba osoby[maxOsob];
int liczba_Osob;
};
bool wczytajDate(struct Data* data)
{
std::cout << "dzień=";
std::cin >> data->dzien;
if (std::cin.fail())
return false;
std::cout << "miesiac=";
std::cin >> data->miesiac;
if (std::cin.fail())
return false;
std::cout << "rok=";
std::cin >> data->rok;
if (std::cin.fail())
return false;
return true;
}
bool wczytajJednaOsobe(struct Osoba* osoba)
{
std::cout << "Podaj imie: ";
std::cin >> osoba->imie;
std::cout << "Podaj nazwisko: ";
std::cin >> osoba->nazwisko;
if (std::cin.fail())
return false;
if (!wczytajDate(&(osoba->data)))
return false;
return true;
}
void sortowanie(struct Osoby *osoby)
{
for (int i = 1; i < osoby->liczba_Osob; i++)
for (int j = 0; j < (osoby->liczba_Osob - i); j++)
{
if (osoby->osoby[j].data.rok < osoby->osoby[j + 1].data.rok )
{
Osoby temp;
temp = osoby[j];
osoby[j] = osoby[j + 1];
osoby[j + 1] = temp;
}
}
}
bool wczytajOsoby(struct Osoby* osoby)
{
osoby->liczba_Osob = 0;
int liczba_Osob;
std::cout << "Podaj liczbe osob";
std::cin >> liczba_Osob;
if (std::cin.fail())
return false;
if (liczba_Osob<0 || liczba_Osob>maxOsob)
return false;
for (int i = 0; i < liczba_Osob; i++)
{
if (!wczytajJednaOsobe(&(osoby->osoby[i])))
return false;
}
osoby->liczba_Osob = liczba_Osob;
return true;
}
void wyswietl_nazwiska(struct Osoby* osoby)
{
std::cout << "Lista nazwisk posortowanych";
for(int i=0; i<=osoby->liczba_Osob; i++){
std::cout << " ";
std::cout << osoby->osoby[i].nazwisko;
}
}
int main()
{
struct Osoby osoby;
if (!wczytajOsoby(&osoby))
{
std::cout << "Niepoprawne dane.\n";
return 0;
}
sortowanie(&osoby);
wyswietl_nazwiska(&osoby);
// sorotwanie()
// wyswietlOsoby(&osoby);
}