#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>

int getline(char s[], int lim){
	int i, c;
	for (i=0; i<lim && (c=getchar()) != EOF && c != '\n'; ++i) {
		s[i] = c;
	}
	s[i] = '\0';
	return (i);
}


int neve(char nev[]){
int i=0,h=0,ok=1, k=0;
h=strlen(nev);

for(i=0;i<h;i++)
{
	if(isdigit(nev[i]) || !isalpha(nev[i]) && nev[i]!=' ') {ok=0;}
}

if(nev[h-1]==' '){ok=0;}	
if(h==0){ok=0;}
if(nev[0]==' '){ok=0;}

if(ok==1){	
i=0;

do{
if(!isupper(nev[i])){ok=0;}
else{
	i++;
	while(islower(nev[i])){i++;}
		
	if(nev[i]!=' ' && i!=h){ok=0;}
	else{
	i++;}
}
}while(i-1!=h);

}

return ok;	
}

int eve(char ev[]){
int i,ok=1,h=0;
h=strlen(ev);

if(h<4){ok=0;}
if(ok==1){
	for(i=0;i<h;i++){	
		if(!isdigit(ev[i])){ok=0;}
	}
}
return ok;	
}

int szame(char km[]){
int i, ok=1,h=0;
h=strlen(km);

for(i=0;i<h;i++){	
if(!isdigit(km[i])){ok=0;}	
}
return ok;
}

void main(void){
char nev[128];
char ev[128];
char km[128];
char elozo[128];
char fiatal[128];
char nevsor[128];
char s[128];

int db=0,ok=1,h=0,n=0,el=0,f=0,k=0,j=0;

do{
db++;	
do{	
ok=1;
printf("\tAdja meg a %d. utas nevet:\n", db);

h=getline(nev,128);

if(h>0){
	if(db==1){strcpy(nevsor,nev);}

	if(neve(nev)){ok=1;
		if(nev[0]<nevsor[0]){
		strcpy(nevsor,nev);}
}

else{ok=0; printf("Nem jo nev, adjon meg ujat\n");}
}

if(h==0){ok=1;}

}while(ok!=1);

if(h>0){

ok=1;
do{
printf("\tAdja meg a %d. utas szuletesi datumat\n", db);
getline(ev,128);

if(eve(ev))
{ok=1;
k=atoi(ev);
	if(k>f){
	f=k;
	strcpy(fiatal,nev);
	}
	}
else{ok=0; printf("Nem jo");}

}while(ok!=1);

ok=1;
do{
printf("\tAdja meg a %d. utas utaozott kilometereit\n", db);
getline(km,128);

if(szame(km)){ok=1; 
n=atoi(km);

	if(n>el){
		el=n;
		strcpy(elozo,nev);
		}


}
else{ok=0; printf("Nem jo\n");}

}while(ok!=1);
}
}while(db!=4 && h>0);

printf("A legtobbet utazo utas neve: %s\n", elozo);
printf("A legfiatalabb utas neve: %s\n", fiatal);
printf("A nevsorban levo legelso utas neve: %s\n",nevsor);
}
