/* File: sortintp.c (Zeiger-Variante) -- zu Kap. 2.9.2. Beispiele
   Fkt.: Sortieren von n eingegebenen int-Werten */
#define void int /* nicht ANSI-C */
#include <stdio.h>
#define MAX 100
main()
{	int ifeld[MAX];
	register int i, j, m;
	int temp, anz;
	void ssort();
	/* Einlesen von maximal MAX int-Werten */
	fprintf(stderr, "Eingabe von n int-Werten (unsortiert) - bis EOF\n");
	for(m = 0; m < MAX; m++) {
		if((anz = scanf("%d", &ifeld[m])) == EOF)
			break;
		if(anz < 1) {
			fprintf(stderr, "Eingabeformat-Fehler\n");
			scanf("%*s");
			m--;
	}	}
	(void)ssort(ifeld, &ifeld[m]);
	/* Ausgabe der sortierten int-Werte */
	for(j = 0; j < m; j++) {
		printf(" %6d%c", ifeld[j], (j+1) % 8 ? ' ' : '\n');
	}
	putchar('\n');
}
/* straight insertion sort */
void ssort(first, last)
	int *first, *last;
{	register int *i, *j, temp;
	for(i = first; i < last; i++) {
		for(j = i-1; j >= first && *j > *(j+1); j--) {
			temp = *(j+1);
			*(j+1) = *j;
			*j = temp;
}	}	}
