Programozó versenyek

Magas szintű programozási nyelvek 1, 2014. május 27., K14 ZH

2014. május 27. 14:05 – 2014. május 27. 19:20

Vonalkód

Írjon függvényt, amely paraméterként megkap egy sztringet, amely pontosan 12 decimális számjegyet tartalmaz! Ez a sztring egy vonalkód első 12 számjegye. A függvény a sztring megváltoztatása nélkül határozza meg és adja vissza a vonalkód tizenharmadik, ellenőrző számjegyét! Az ellenőrző számjegyet a következőképpen kapjuk meg: a vonalkód minden páratlan helyen álló (első, harmadik stb.) számjegyét eggyel, a páros helyeken állókat hárommal kell megszorozni, majd a kapott szorzatokat összeadni. Ezt az értéket végül ki kell vonni 10-nek az összeghez legközelebb eső, nála nagyobb vagy vele egyenlő többszöröséből. A vonalkód számjegyeit balról jobbra sorszámozzuk 1-től 12-ig.

A függvény specifikációja

int lastdigit( char * );

Megjegyzés

A függvényt helyezze a lastdigit.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 három á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!

myheader.h

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

main.c

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include "myheader.h"
  4. int main()
  5. {
  6.   char line[ 13 ] = "629104150021";
  7.   printf( "%d\n", lastdigit( line ) );
  8.   return EXIT_SUCCESS;
  9. }
letöltés szöveges állományként

Makefile

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

A fenti program kimenete

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