Programozó versenyek

Magas szintű programozási nyelvek 1, 2018. május 9., Sz14 ZH

2018. május 9. 14:15 – 2018. május 9. 16:00

Családi feladat

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

myheader.h

  1. #ifndef _MYHEADER_H
  2. #define _MYHEADER_H 1
  3. struct element
  4. {
  5.     char family[20];
  6.     int children[8];
  7. };
  8. #endif /* myheader.h */
letöltés szöveges állományként

Írjon programot, amelynek egyetlen parancssori argumentuma van, egy bináris állomány neve! A bináris állomány struct element típusú rekordjaiban családok azonosítóként szolgáló nevei és az adott családban élő gyermekek életkorai találhatók. Minden családnál legfeljebb 8 gyermek életkorát tartjuk nyilván. Azt, hogy hány gyermek van a családban, a struktúra children mezőjéből találhatjuk ki: ha a tömb egy eleme nemnegatív értékű, akkor egy gyermek életkorát jelzi, ráadásul ezek az értékek a tömb elejétől kezdve helyezkednek el folyamatosan, azaz ha a tömb egy adott eleme negatív értékű lenne, akkor az utána következő elemek is azok. A gyermekek életkorai tetszőleges sorrendben szerepelhetnek a tömbben.

A programja először is határozza meg és írja a standard kimenetre, hogy hány család adatai szerepelnek a bináris állományban, majd írja ki az adataikat is oda a példa kimenetben látható formában, ahol a családok neve után a gyermekeik száma és a gyermekek életkora szerepel a tömbben megadott sorrendben! A standard kimenetre a családok adatait a család legidősebb gyermekének életkora alapján csökkenő sorrendbe rendezve nyomtassa ki! Ha ez alapján nem tudja két család sorrendjét eldönteni, akkor az ő adataikat a családhoz tartozó gyermekek számának növekvő sorrendjében írja a standard kimenetre! Ha ez alapján sem tudna két család között egyértelmű sorrendet felállítani, akkor őket a családok neve alapján rendezze lexikografikusan növekvő sorba! Figyeljen oda rá, hogy a sorok végén ne szerepeljenek felesleges szóköz karakterek!

Parancssori argumentumok

  1. families.bin
letöltés szöveges állományként

A futtatás egy lehetséges eredménye a standard kimeneten

  1. 4
  2. Williams (6): 0 3 4 14 2 6
  3. Smith (7): 3 9 2 1 11 13 8
  4. Davis (6): 1 4 9 5 12 5
  5. Moore (6): 12 2 7 5 10 3
letöltés szöveges állományként
Debreceni Egyetem, Informatikai Kar, v. 2019.03.01.