|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T s
Length: 2716 (0xa9c) Types: TextFile Names: »sscore.c«
└─⟦87ddcff64⟧ Bits:30001253 CPHDIST85 Tape, 1985 Autumn Conference Copenhagen └─⟦this⟧ »cph85dist/search/sscore.c« └─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987 └─⟦this⟧ »EUUGD18/General/Search/sscore.c«
#ifndef lint static char rcsid[] = "$Header: sscore.c,v 1.4 85/07/08 17:22:57 matt Exp $"; #endif /* * * search * * multi-player and multi-system search and destroy. * * Original by Dave Pare 1983 * Ported & improved * by Matt Crawford 1985 * * program to sort and print the player scoreboard. * * I'm not even going to Copyright (c) this one! * * $Log: sscore.c,v $ * Revision 1.4 85/07/08 17:22:57 matt * prepare for preliminary distribution * * Revision 1.3 84/07/08 17:04:42 matt * Added Log * * Revision 1.2 84/07/08 15:37:52 matt * Test for denominator == 0, not numerator, when finding averages. * Changed the loop limits when sorting -- was getting core dumps on sun. */ #include <stdio.h> #include <ctype.h> #include <sys/types.h> #include <sys/file.h> #include "defines.h" #include "structs.h" struct totals { char ptname[20]; /* player name */ int ptpoints; /* total points */ int pthits; /* total player hits */ int ptahits; /* total alien hits */ int ptkills; /* total player kills */ int ptkilled; /* total times killed */ int ptlast; /* last game's score */ int ptbest; /* best score */ int ptgames; /* # games played */ int average; /* average score */ } ; struct totals *malloc(); main() { register int i, j, found, next; register struct totals *lp; int pointfd; struct totals *list[2000]; long number; for (i=0; i<2000; i++) list[i] = NULL; if ((pointfd = open(POINTFILE, O_RDONLY, 0)) < 0) fatal("can't open points file %s", POINTFILE); printf("%-17s %-5s %-8s %-7s %-7s %-5s %-6s %-5s %-5s %-4s\n", "Player", "Games", "Total", "Hits(p)", "Hits(a)", "Kills", "Killed", "Best", "Last", "Avg"); for (number=0; number<2000; number++) { lp = malloc(sizeof(struct totals)); if (lp == NULL) fatal("out of memory\n"); if (read(pointfd, lp, sizeof(t_totals)) <= 0) { free(lp); break; } if (lp->ptgames > 0) lp->average = lp->ptpoints/lp->ptgames; else lp->average = 0; list[number] = lp; } if ( number == 0 ) exit(0); found = 1; for (i=number-1; i && found; i--) { found = 0; for (j=0, next=1; j<i; j++, next++) { if (list[j]->average < list[next]->average) { lp = list[j]; list[j] = list[next]; list[next] = lp; found++; } } } for (i=0; i<2000; i++) { lp = list[i]; if (lp == NULL || lp->ptpoints == 0) continue; printf("%-17s %-5d %-8d %-7d %-7d %-5d %-6d %-5d %-5d %-4d\n", lp->ptname, lp->ptgames, lp->ptpoints, lp->pthits, lp->ptahits, lp->ptkills, lp->ptkilled, lp->ptbest, lp->ptlast, lp->average); } } fatal(fmt, arg) char *fmt; { fprintf(stderr, "sscore:"); fprintf(stderr, fmt, arg); fputc('\n', stderr); exit(1); }