Programozó versenyek

Magas szintű programozási nyelvek 1, 2014. április 9., Sz16 ZH

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

Könyvcímek

Írjon függvényt, amely a paramétereként megkapott tetszőleges hosszúságú sztringről eldönti, hogy az egy könyv szerzőinek nevét és címét tartalmazza-e a következő formában:

szerző_neve[, szerző_neve]...: mű_címe

Ez a jelölés azt fejezi ki, hogy a könyvnek több szerzője is lehet, ebben az esetben a szerzőket mindig egy vessző és egy szóköz karakter választja el egymástól. A mű címe az utolsóként feltüntetett szerző neve után áll, attól egy kettőspont és egy szóköz karakterrel van elválasztva. A szerző(k) neve(i) és a mű címe minden esetben egy betűvel kezdődő karaktersorozat. A szerzők nevében nem fordul elő sem vessző, sem kettőspont karakter, tehát ezek a karakterek a fent megadott formában (az őket követő szóközzel együtt) a fent megadott előfordulási helyeken kizárólag elválasztó karaktercsoportként funkcionálnak.

Ha a sztring ilyen alakú, akkor a függvény igaz értéket, egyébként hamisat adjon vissza!

A függvény specifikációja

int is_book_title( char * );

Megjegyzés

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

Példa bemenet

  1. Ivor Horton: Beginning C
  2. Stanley B. Lippman, Josée Lajoie, Barbara E. Moo: C++ Primer
  3. Ivor Horton:Beginning C
  4. Ivor Horton:  Beginning C
  5. Ivor Horton:
  6. : Beginning C
  7. , Josée Lajoie, Barbara E. Moo: C++ Primer
  8. Stanley B. Lippman,Josée Lajoie, Barbara E. Moo: C++ Primer
  9. Stanley B. Lippman,  Josée Lajoie, Barbara E. Moo: C++ Primer
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
  7. NO
  8. NO
  9. NO
letöltés szöveges állományként
Debreceni Egyetem, Informatikai Kar, v. 2019.03.01.