/**********************************************

 Dimostrazione per Arrays bidimensionali
           last update 10/07/87
      AMIGA-Version by Frank Kremser
PC-Original-Version by Dr. Edgar Huckent
       (C) 1987  by Markt & Technik

************************************************

Programma dimostrativo per Arrays bidimensionali

	Ordinamento con Bubble Sort

***********************************************/

#include <stdio.h>

char wort[10][20],hfeld[20];

void main()
{
  int diff,dim1,dim2,maxwort;
  int i,n,m,klflag;

  maxwort = 0;
  dim2    = sizeof(wort[0]);
  dim1    = sizeof(wort) / dim2;

  /* Lettura vocaboli e memorizzazione in wort  */
  /* Linea vuota = Fine */
  while (maxwort < dim1)
    {
     printf("\nProssima parola (return per finire) :");
     gets(&wort[maxwort][0]);
     if (strlen(&wort[maxwort][0]) == 0) break;
     maxwort++;
    }   /* while maxwort ... */

  /* Ordinamento crescente */
  for (n = 0; n < maxwort; n++)
    {
     for (m = n+1; m < maxwort; m++)
       {
        klflag = 0;
        /* confronto di stringhe (e' possibile usare anche strcmp) */
        for (i = 0; i < dim2; i++)
          {
           diff = wort[m][i] - wort[n][i];
           if (diff < 0)
             {
              klflag = 1;
              break;
             }
           if (diff > 0)        break;
           if (wort[n][i] == 0) break;
          }   /* for i = ... */
        if (klflag)
          {
           /* La parola in Pos. m e' minore della parola in Pos. n */
           /* Scambio posizioni n e m nell' Array      */
           /* Salva Pos. n in hfeld                    */
           strcpy(hfeld,&wort[n][0]);
           strcpy(&wort[n][0],&wort[m][0]);
           strcpy(&wort[m][0],hfeld);
          }
       }   /* for m .... */
    }  /* for n.... */

  /* Output del risultato ordinato */
  for (n=0; n < maxwort; n++)
    printf("\n%s",&(wort[n][0]));
  printf ("\n\n");
}   /* end main */