Witam. Męczę się od kilku godzin z pewną strukturą. Otóż mam napisać strukturę, która będzie modelować informacje o imionach i nazwisku. Ma zawierać konstruktor przyjmujący trzy napisy(dwa zawierające imiona i jeden nazwisko) i metody:
- IleImion zwracającą 1 lub 2 w zależności od ilości imion,
- Imie zwracającą napis zawierający pierwsze imię,
- Imiona zwracającą napis zawierający imiona, lub tylko pierwsze imię, jeżeli nie ma drugiego,
- Nazwisko zwracającą napis zawierający nazwisko,
- ImionaINazwisko zwracającą napis zawierający pełne imiona i nazwisko,
- InicjalyINazwisko zwracającą napis zawierający inicjały (inicjał) i nazwisko.
Ponadto ma przejść testy, które zamieściłem w programie. Jestem zielony w temacie struktur, więc proszę o pomoc. Program nie działa, uruchamia się, ale wywala błędy asserta. Co jest w nim do bani? Oto co udało mi się napisać:
#include <iostream>
#include <string>
#include <assert.h>
struct Osoba
{
std::string imie;
std::string drugie_imie;
std::string nazwisko;
int IleImion() //metoda IleImion
{
if( drugie_imie[1] >= 'A' && drugie_imie[1] <= 'Z')
return 2;
else
return 1;
}
std::string Imie() //metoda Imie
{
return imie;
}
std::string Imiona() //metoda Imiona
{
if(drugie_imie[1] >= 'A' && drugie_imie[1] <= 'Z')
return imie + " " + drugie_imie;
else
return imie;
}
std::string Nazwisko() //metoda Nazwisko
{
return nazwisko;
}
std::string ImionaINazwisko() //metoda ImionaINazwisko
{
if(drugie_imie[1] >= 'A' && drugie_imie[1] <= 'Z')
return imie + " " + drugie_imie + " " + nazwisko;
else
return imie + " " + nazwisko;
}
Osoba(std::string imie, std::string drugie_imie, std::string nazwisko);
};
Osoba::Osoba(std::string imie, std::string drugie_imie, std::string nazwisko) {}
void test_Osoba(void)
{
Osoba jkw("Piotr", "Andrzej", "Golota");
assert(jkw.IleImion()==2);
assert(jkw.Imie()=="Piotr");
assert(jkw.Imiona()=="Piotr Andrzej");
assert(jkw.Nazwisko()== "Golota");
assert(jkw.ImionaINazwisko()=="Piotr Andrzej Golota");
const Osoba aa("Ilona", "", "Rzeznik");
assert(aa.IleImion()==1);
assert(aa.Imie()=="Ilona");
assert(aa.Imiona()=="Rzeznik");
assert(aa.Nazwisko()=="Rzeznik");
assert(aa.ImionaINazwisko()=="Ilona Rzeznik");
}
int main(void)
{
test_Osoba();
return 0;
}