Programozó versenyek

Magas szintű programozási nyelvek 1, 2014. április 8., K16 ZH

2014. április 8. 16:05 – 2014. április 8. 17:50

Email címek

Írjon függvényt, amely a paramétereként megkapott tetszőleges hosszúságú sztringről eldönti, hogy az szabályos email cím-e! Ha az, akkor a függvény igaz értéket, egyébként hamisat adjon vissza! Egy sztringet szabályos email címnek tekintünk, ha

  1. csak betű, számjegy, '-' (mínuszjel), '@' (kukac) és '.' (pont) karaktereket tartalmaz,
  2. pontosan egy darab '@' (kukac) karaktert tartalmaz,
  3. a '@' (kukac) karakter nem a legelső és nem is a legutolsó karakter a sztringben,
  4. a '@' (kukac) karakter mögötti rész legalább egy '.' (pont) karaktert tartalmaz,
  5. a '@' (kukac) karakter utáni részben minden '.' (pont) karaktert megelőz legalább egy karakter, amely nem '.' (pont) és nem is '@' (kukac), és
  6. az utolsó '.' (pont) karakter utáni részsztring legalább 2 karakter hosszúságú.

A függvény specifikációja

int is_email_address( char * );

Megjegyzés

A függvényt helyezze az email.c nevű állományba, és ezt az állományt küldje be megoldásként a kiértékelő rendszernek! Megoldását a példa bemenetben szereplő adatokkal az alábbi két állomány segítségével tesztelheti. Megoldásának kiértékelését a tesztelő rendszer nem feltétlenül ezeknek az állományoknak a felhasználásával végzi!

main.c

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main()
  4. {
  5.   char line[ 50 ];
  6.   int is_email_address( char * );
  7.   while ( gets( line ) != NULL )
  8.     if ( is_email_address( line ) )
  9.       puts( "YES" );
  10.     else
  11.       puts( "NO" );
  12.   return EXIT_SUCCESS;
  13. }
letöltés szöveges állományként

Makefile

  1. CC = gcc
  2. OBJS = main.o email.o
  3. TARGETS = main 
  4. all: $(TARGETS)
  5. main: main.o email.o
  6. $(CC) main.o email.o -o main
  7. main.o: main.c
  8. $(CC) -c main.c
  9. email.o: email.c
  10. $(CC) -c email.c
  11. clean:
  12. rm -rf $(OBJS) *~ $(TARGETS)
letöltés szöveges állományként

Példa bemenet

  1. user@company.com
  2. -@-.--
  3. where-is-the-end@
  4. user@nodot
  5. user@twodots..com
  6. user@short-domain.x
letöltés szöveges állományként

A példa bemenethez tartozó kimenet

  1. YES
  2. YES
  3. NO
  4. NO
  5. NO
  6. NO
letöltés szöveges állományként
Debreceni Egyetem, Informatikai Kar, v. 2019.03.01.