/* Loesung der Aufgabe 1-31 (3. Aufl.: 1-29) */


#include <stdio.h>

#define TRUE  1
#define FALSE 0
#define NMAX  100


void zahlen_einlesen (int x[], int *n)
{
  int i;

  printf("Bubble sortiert maximal %3d Zahlen !\n", NMAX);
  printf("Wieviele Zahlen sollen sortiert werden? ");
  scanf("%i", n);      /* ohne &, weil n bereits die Adresse ist */
  printf("%i ganze Zahlen eingeben!\n", *n);
  for (i = 0; i < *n; i++) {
    printf("%2i : ", i+1);
    scanf("%i", &x[i]);
  }
}


void zahlen_sortieren (int x[], int n)
{
  int sortiert;
  int h;
  int i;

  do {
    sortiert = TRUE;
    for (i = 0; i < n-1; i++)
      if ( x[i+1] < x[i] ) {
        h = x[i]; x[i] = x[i+1]; x[i+1] = h;  /* tauschen */
        sortiert = FALSE;
      }
  } while (sortiert == FALSE);
}


void zahlen_ausgeben (int x[], int n)
{
  int i;

  printf("--------------------------\n");
  for (i = 0; i < n; i++)
    printf("%2i : %6i\n", i, x[i]);
}


int main(void)
{
  int i, n;           /* Index, Anzahl der Zahlen    */
  int v[NMAX];        /* Indizierte Zahlenwerte      */

  zahlen_einlesen(v, &n);
  printf("\n\nNicht sortierte Zahlen\n");
  zahlen_ausgeben(v, n);
  zahlen_sortieren(v, n);
  printf("\n\nSortierte Zahlen\n");
  zahlen_ausgeben(v, n);

  return 0;
}