///////////////////////////////////////////////////////////////////////
// ITS – Visoka Škola Strukovnih Studija Za Informacione Tehnologije
//
https://www.its.edu.rs/
// Predmet: Osnovi Programiranja – Programski jezik C
//
// Primer: Program za sortiranje u alfabetskom redosledu ucitanog
//            niza stringova i odredjivanje duzine sortiranih stringova.
///////////////////////////////////////////////////////////////////////

#include <stdio.h>
#include <string.h>

#define DUZINA 80
#define MAX 50
#define STOP ""

void sortiraj( char *st[], int d[],int n);

main()
{
  char str[MAX][DUZINA];
  char *pokstr[MAX]; // niz pokazivaca
  int duz[MAX];
  int i=0,j;
  printf("Unesite do %d stringova za sortiranje, zatim praznu liniju pa <ENTER> za kraj: !nl!", MAX);
  while(gets(str[i])!= NULL && strcmp(str[i],STOP)!=0 && i<MAX)
  {
    pokstr[i] = str[i];
    duz[i] = strlen(str[i]);
    i++;
  }
  sortiraj(pokstr,duz,i);
  // stampanje sortiranog niza
  printf("Sortirani stringovi izgledaju:!nl!");
  for(j=0;j<i; j++)
  {
    printf("String[%d]:",j);
    puts(pokstr[j]);
  }
  // stampanje duzina sortiranog niza
  printf("Duzine sortiranih stringova su:!nl!");
  for(j=0;j<i; j++)
  {
    printf("String[%d]:",j);
    printf("%d!nl!
", duz[j]);
  }
}
//funkcija za sortiranje
void sortiraj(char *st[],int d[], int n)
{
  char *pom;
  int i,j,m;
  for(i=0;i<n-1;i++)
  {
    for(j=i+1;j<n;j++)
    {
      if(strcmp(st[i],st[j])>0)
      {
        // zamena mesta
        pom = st[i];
        st[i] = st[j];
        st[j] = pom;
       
// zamena duzine
        m = d[i];
        d[i] = d[j];
        d[j] = m;
      }
    }
  }
}