Programozó versenyek

Levelező Magas szintű programozási nyelvek 1 beugró, 2015. május 29.

2015. május 29. 13:10 – 2015. május 29. 17:10

C azonosítók

Írjon függvényt, amely a paramétereként megkapott tetszőleges hosszúságú sztringről eldönti, hogy az a C/C++ nyelvek azonosítókra vonatkozó elnevezési konvencióinak megfelel-e! Ha igen, akkor a függvény igaz értéket, ha nem, hamisat adjon vissza! A C/C++ nyelvekben az elnevezési konvenciók szerint az azonosítókban csak kisbetűket használnak, a többszavas azonosítókban pedig a szavakat az aláhúzás ('_') karakterrel választják el egymástól. Példa C/C++ azonosítókra: i, long_and_mnemonic_identifier.

A függvény specifikációja

int is_c_identifier( char * );

Megjegyzés

A függvényt helyezze az identifier.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_c_identifier( char * );
  7.   while ( gets( line ) != NULL )
  8.     if ( is_c_identifier( 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 identifier.o
  3. TARGETS = main 
  4. all: $(TARGETS)
  5. main: main.o identifier.o
  6. $(CC) main.o identifier.o -o main
  7. main.o: main.c
  8. $(CC) -c main.c
  9. identifier.o: identifier.c
  10. $(CC) -c identifier.c
  11. clean:
  12. rm -rf $(OBJS) *~ $(TARGETS)
letöltés szöveges állományként

Példa bemenet

  1. i
  2. long_and_mnemonic_identifier
  3. it_contains_1number
  4. it_contains_CapitalLetters
  5. dot.is_not_accepted
  6. thisiscorrectalthoughthewordsarenotseparated
  7. _
  8. _foo
  9. foo_
  10. _foo_
  11. foo_bar
  12. foo__bar
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. YES
  7. NO
  8. NO
  9. NO
  10. NO
  11. NO
  12. YES
  13. NO
letöltés szöveges állományként
Debreceni Egyetem, Informatikai Kar, v. 2019.03.01.