#include<stdio.h>
#define MAX 1000

/* Funkcja wzraca adres największego elementu tablicy t */
float* maks(float *t, int n)
{
    float *w = t;

    while(n > 1)
    {
        t++;
        if (*t > *w) w = t;
        n--;
    }
    return w;
}

/*  Funkcja wczytuje n liczb rzeczywistych do tablicy t[].
 *  Funkcja zwraca adres tablicy t[]*/
float* wczytaj(float *t, int n)
{
   int i;

   printf("Podaaj %d liczb\n", n);

   for(i=0; i < n; i++)
   {
      printf("tab[%d]= ", i);
      scanf("%f", t+i);
   }
   return t;
}

/*  Funkcja wyswietla n pierwszych elementow tablicy t[] */
void wypisz(float *t, int n)
{
   int i;

   for(i=0; i<n; i++)
      printf("%d : %f\n", i, *(t+i));
}

/* Funkcja zamienia wartosci na ktore wzkazuja adesy 'a' i 'b' */
void zamien(float *a, float *b)
{
    float x = *a;
    *a = *b;
    *b = x;
}

int main()
{
    float t[MAX];
    int i, n;

    printf("Ile liczb? ");
    scanf("%d", &n);

    if ( n > MAX) n = MAX;

    wczytaj(t, n);

    /* Sortowanie przez wstawianie */
    for(i=0; i<n; i++)
    {
        /* Zamien i-ty elementent z najwiekszym elementem z zakresu od i do ostatniego elementu */
        zamien(maks(t+i, n-i), t+i);
    }

    wypisz(t, n);
}
