Programozó versenyek

Programozási nyelvek 1, 2019. május 15., Sz16 ZH

2019. május 15. 16:05 – 2019. május 15. 17:50

A nagy testvér figyel téged! #10

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 name[20];
  6.     int hour;
  7.     int minute;
  8. };
  9. #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 dolgozóknak egy épületbe történő be- és kilépési idejei találhatók. A dolgozókat a nevükkel azonosítjuk, nincs két azonos nevű dolgozó. Az adatokat az épület nyitásától gyűjtjük, és feltételezhetjük, hogy az épület a nyitáskor üres volt. Amikor egy dolgozó be- vagy kilép az épületből, egy-egy újabb rekord kerül rögzítésre ebbe az állományba.

A programja írja a standard kimenetre a dolgozók neveit azok hossza szerint növekvő sorrendben! Ha kettő vagy több dolgozónak is ugyanolyan hosszú lenne a neve, akkor az ő neveiket lexikografikusan növekvő sorrendben nyomtassa a kimenetre! Ügyeljen rá, hogy a kimeneten minden dolgozó neve pontosan egyszer szerepeljen!

Egy employees.bin bináris állományt generáló példaprogram

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include "myheader.h"
  4. int main()
  5. {
  6.     struct element t[] =
  7.     {
  8.         {"Peter", 8, 0},
  9.         {"Molly", 8, 5},
  10.         {"George", 8, 10},
  11.         {"Peter", 9, 0},
  12.         {"George", 10, 15}
  13.     };
  14.     FILE *f = fopen("employees.bin", "wb");
  15.     fwrite(t, sizeof(t), 1, f);
  16.     fclose(f);
  17.     return EXIT_SUCCESS;
  18. }
letöltés szöveges állományként

Parancssori argumentumok

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

A futtatás eredménye a standard kimeneten

  1. Molly
  2. Peter
  3. George
letöltés szöveges állományként
Debreceni Egyetem, Informatikai Kar, v. 2024.09.30.