|
Vének tanácsa
Adott a következő fejlécállomány:
myheader.h
#ifndef _MYHEADER_H#define _MYHEADER_H 1struct person{ char name[30]; int birth_year, birth_month, birth_day;};int foo(char *, struct person *, int, int);#endif /* myheader.h */
letöltés szöveges állományként
Írja meg a myheader.h fejlécállományban deklarált foo() nevű C
függvényt, amely paraméterként megkapja egy bináris állomány nevét, egy
struct person típusú adatokat tartalmazó tömb kezdőcímét, a tömb elemeinek
számát, valamint egy egész számot, amely egy években mért életkorhatárt ad meg! A függvény a
következő tevékenységeket végezze:
-
határozza meg és visszatérési értékként adja meg azt, hogy hány olyan személy található a
paraméterként megkapott tömbben, akinek az életkora meghaladja a paraméterként megkapott
határértéket (2015. június 2-höz viszonyítva);
-
a paramétereként megkapott bináris állományba írja ki az előző feltételnek megfelelő
tömbelemeket a személyek születési időpontja alapján csökkenő sorba rendezve (előre
kerüljön a legfiatalabb személy); ha két vagy több személy is azonos napon született
volna, akkor őket a nevük alapján lexikografikusan növekvő sorba rendezze!
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
#include <stdio.h>#include <stdlib.h>#include "myheader.h"int main(){ struct person p, t[] = {{"Teszt Elek", 1992, 10, 8}, {"Meno Jeno", 1990, 6, 1}, {"Bena Bela", 1991, 6, 1}, {"Cserepes Virag", 1991, 6, 2}}; FILE *fin; foo("foo.bin", t, 4, 24); if ((fin = fopen("foo.bin", "rb")) == NULL) { fprintf(stderr, "Error!\n"); return EXIT_FAILURE; } while (fread(&p, sizeof(p), 1, fin) == 1) printf("*%s* (%d-%02d-%02d)\n", p.name, p.birth_year, p.birth_month, p.birth_day); fclose(fin); return EXIT_SUCCESS;}
letöltés szöveges állományként
Makefile
SRCS = main.c foo.cOBJS = $(SRCS:%.c=%.o)TARGETS = main.PHONY: cleanall: $(TARGETS)main: $(OBJS) $(CC) $(OBJS) -o main%.o: %.c $(CC) -Wall -c $< -o $@clean: rm -rf $(OBJS) *~ $(TARGETS)
letöltés szöveges állományként
A példa tesztprogram kimenete
*Bena Bela* (1991-06-01)*Meno Jeno* (1990-06-01)
letöltés szöveges állományként
|
|