Programozó versenyek

Magas szintű programozási nyelvek 1, 2017. május 30., K16 ZH

2017. május 30. 16:15 – 2017. május 30. 17:55

Kötélhúzás

Adott a következő fejlécállomány:

myheader.h

  1. #ifndef _MYHEADER_H
  2. #define _MYHEADER_H 1
  3. int foo(char *);
  4. #endif /* myheader.h */
letöltés szöveges állományként

Egy falunap fénypontjaként a falusiak kötélhúzóversenyt rendeztek a mindenre elszánt jelentkezők között. Jelentkeztek kicsik és nagyok, a gyerekeket 'o'-val, a felnőtteket pedig 'O'-val jelölve mi magunk is könnyen leírhatjuk a két szembenálló csapat felállását.

Írja meg a myheader.h állományban deklarált foo() függvényt, amely paraméterként megkap egy sztringet, amely kizárólag kis és nagy O betűkből (az 'o' és az 'O' karakterekből), valamint egyetlen darab mínuszjelből áll. A betű karakterek a kötélhúzóverseny csapatainak tagjait jelölik, a mínuszjel pedig a két csapatot választja el egymástól. A függvény határozza meg és adja vissza azt, hogy mekkora a két csapat ereje közötti különbség, ha feltételezzük, hogy egy felnőtt kétszer akkora erővel húzza a kötelet, mint egy gyerek! Ha az első (bal oldali csapat) az erősebb, akkor pozitív, ha a második (jobb oldali) csapat az erősebb, akkor negatív értéket, egyébként pedig nullát adjon vissza a függvény!

Megjegyzés

A függvényt helyezze a foo.c nevű állományba, és ezt az állományt küldje be megoldásként a kiértékelő rendszernek! Megoldását az alábbi állományok 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. #include "myheader.h"
  4. int main()
  5. {
  6.     printf("%d\n", foo("Oo-Oo"));
  7.     printf("%d\n", foo("oOo-OoO"));
  8.     printf("%d\n", foo("OoOo-oOo"));
  9.     return EXIT_SUCCESS;
  10. }
letöltés szöveges állományként

Makefile

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

A példa tesztprogram kimenete

  1. 0
  2. -1
  3. 2
letöltés szöveges állományként
Debreceni Egyetem, Informatikai Kar, v. 2019.03.01.