|
Vének tanácsa
Adott a következő fejlécállomány:
myheader.h
#ifndef _MYHEADER_H #define _MYHEADER_H 1
struct 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.c OBJS = $(SRCS:%.c=%.o) TARGETS = main
.PHONY: clean
all: $(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
|
|