Witam, piszę program, który usuwa osobę, która w nazwisku ma 3 samogłoski. Program się zacina w czasie, kiedy ma usunąć. Co jest źle?
#include <iostream>
#include <string>
#include <list>
using namespace std;
struct dane
{
string imie;
string nazwisko;
int rok_urodzenia;
};
void pobierz_dane(list <dane>& d)
{
dane x;
cin>>x.imie>>x.nazwisko;
//cin>>x.rok_urodzenia;
d.push_back(x);
}
void usuwanie(list <dane>& d)
{
dane zmienna;
int licznik=0;
for (auto v=d.begin(); v!=d.end(); ++v)
{
string napis = v->nazwisko;
size_t pos = napis.find_first_of( "aeiouy" ); // wyszukuje frazy
while( pos != string::npos )//Jeżeli w trakcie wykonywania przeszukania funkcja szukająca osiągnie oznacza brak dopasowania.
{
licznik++;
pos = napis.find_first_of( "aeiouy", pos ); // ponownie szuka
}
if (licznik>3)
{
v->nazwisko.erase();
v->imie.erase();
}
}
}
void wyswietl(list <dane>&d)
{
for (auto v=d.begin(); v!=d.end(); ++v)
cout<<v->imie<<" "<<v->nazwisko<<endl;
}
int main()
{
list<dane> danka;
pobierz_dane(danka);
pobierz_dane(danka);
pobierz_dane(danka);
usuwanie (danka);
wyswietl(danka);
system ("pause");
return 0;
}