P
struct A {
char kz[5];
char firma[5];
char person[5];
char datum[5];
} sVorgaenge[99999]; // komplette historie, nur inserts
struct B {
char firma[5];
char person[5];
char blabla[5];
...
} sHeutigerTag[99999]; // daraus wird sVorgaenge befuellt
Kurz etwas abstrahierter:
Das Schließsystem des Hochhauses protokolliert 24 Stunden lang in die Liste sHeutigerTag, wer das Gebäude betritt oder verlässt.
Wenn eine Person vorgestern ins Haus und bisher nicht mehr raus ist, wird diese Person seit vorgestern täglich in dieser Liste auftauchen.
Die EDV verarbeitet jeden Morgen die gestrigen Vorgänge und zusammen mit den vergangenen Daten in sVorgaenge ergibt sich gegebenenfalls bezogen auf die Firma, deren Untermenge eine Person immer ist, ein Zuwachs, Verlassen oder ein Erstbetritt des Hauses.
Wenn Person irgendwer (z.B. 7777) aus der Firma kkkk bereits im Gebäude ist und deren Angestellter 5555 kommt hinzu, ergibt sich in sVorgaenge ein entsprechender Satz mit einem Zuwachs für kkkk durch 5555 und dem gestrigen Datum.
Laut sVorgaenge sei Angestellter 7777 ja bereits im Haus, wird aber in sHeutigerTag nicht gefunden. Daraus folgt für heute ein Verlassen-Eintrag für 7777 & kkkk & heute in sVorgaenge.
Die folgenden Schleifen und Suchvorgänge sind haarsträubend und zum Teil redundant. Ich habe mich gerade entschieden, alles etwas zu entwirren. Mal sehen, welchen Ärger mir das dann einbringt... Danke auf jeden Fall für die Unterstützung