Cóż, może się to skończyć bólem oka 
Jak Ci się już skończą to się zapytaj. 
A tak serio, nie możesz sobie sprawdzać poprawności danych w dowolnej kolejności. Co twój program wypisze, gdy zarówno data jak i imie jest błędne? Wróć do treści zadania i poczytaj co program powinien wypisać.
Potestuj sobie taki programik:
blablabla
while (cin >> a >> b >> c >> d >> e >> f >> g)
cout << a << blabla ... << g << endl;
albaalbaalba
Dobra funkcja powinna robić dobrze jedną rzecz, a nie zajmować się wszystkim.
Więc twój program mógłby wyglądać np tak:
funkcja check (imie, nazwisko, data)
if imie bad or wrong or evil return ....
if nazwisko do du...py return ...
if data ha..owa return ...
return wszystko ok
main
jsk wyżej:
while (cin >> ......)
cout << check (imie ....i takie tam) << endl;
PS
To co miałeś potestować, potestuj dla danych z zadania, a także możesz dla:sprawdzenia dla
Imie: ; Nazwisko: ; Data ur.: 1