80 lines
1.9 KiB
Plaintext
80 lines
1.9 KiB
Plaintext
/*
|
|
** Es soll die Stellung aller Angestellten bestimmt werden.
|
|
**
|
|
** Die Stellung kann sein:
|
|
** Direktor Der Angestellte hat keinen Leiter.
|
|
** Leiter Der Angestellte hat einen Leiter und Unterstellte.
|
|
** Angestellter Der Angestellte hat keine Unterstellte.
|
|
**
|
|
** Gleichzeitig soll die Anzahl der Direktoren, Leiter und
|
|
** Angestellten gezaehlt werden.
|
|
*/
|
|
## shared Dt
|
|
## i2 leiter;
|
|
## char name[21];
|
|
## char *name_arg;
|
|
amx(argc, argv)
|
|
int argc;
|
|
char **argv;
|
|
{
|
|
register int unterstellte;
|
|
register int direktor_zaehler;
|
|
register int leiter_zaehler;
|
|
register int angestellten_zaehler;
|
|
name_arg = (argc == 1)? "*": argv[1];
|
|
direktor_zaehler = leiter_zaehler = angestellten_zaehler = 0;
|
|
## open Personal
|
|
## retrieve Personal $Name == name_arg (name = $Name, leiter = $Leiter)
|
|
## {
|
|
printf("%-20s ", name);
|
|
if (leiter == 0)
|
|
{
|
|
/*
|
|
** Wir haben einen Direktor gefunden !
|
|
*/
|
|
printf("Direktor\n");
|
|
direktor_zaehler++;
|
|
## nextretrieve
|
|
}
|
|
/*
|
|
** Mit der Variable `unterstellte' soll bestimmt werden,
|
|
** ob wir den eben gefundenen Angestellten auch als Leiter
|
|
** bei einem beliebigen anderen Angestellten finden.
|
|
*/
|
|
unterstellte = 0;
|
|
## retrieve Personal $Leiter == $Num
|
|
## {
|
|
/*
|
|
** Ein gefundener Unterstellter reicht uns, wir
|
|
** brechen die Suche nach weiteren ab !
|
|
*/
|
|
unterstellte++;
|
|
## endretrieve
|
|
## }
|
|
if (unterstellte)
|
|
{
|
|
/*
|
|
** Wir haben Unterstellte gefunden, als muss der
|
|
** Angestellte ein Leiter sein, die Direktoren
|
|
** haben wir ja schon abgehandelt.
|
|
*/
|
|
printf("Leiter\n");
|
|
leiter_zaehler++;
|
|
}
|
|
else
|
|
{
|
|
/*
|
|
** Die Angestellten bleiben uebrig.
|
|
*/
|
|
printf("Angestellter\n");
|
|
angestellten_zaehler++;
|
|
}
|
|
## }
|
|
## close Personal
|
|
printf("TOTAL:\t%3d\n", direktor_zaehler + leiter_zaehler + angestellten_zaehler);
|
|
printf("\t%3d Direktoren\n", direktor_zaehler);
|
|
printf("\t%3d Leiter\n", leiter_zaehler);
|
|
printf("\t%3d Angestellte\n", angestellten_zaehler);
|
|
fflush(stdout);
|
|
}
|