///////////////////////////////////////////////////////////////////////
// ITS – Visoka Škola Strukovnih Studija Za Informacione Tehnologije
//
http://www.its.edu.rs/
// Predmet: Osnovi Programiranja – Programski jezik C
//
// Primer: Program za sortiranje u alfabetskom redosledu
//ucitanog niza stringova. Odredjivanje dužine sortiranih stringova.
///////////////////////////////////////////////////////////////////////

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

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

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

main()
{

 //Deklarisanje promenljivih
 char str[MAX][DUZINA];
 //Niz pokazivaca
 char *pokstr[MAX];
 int duz[MAX];
 int i=0,j;

 //poruka korisniku za unos stringova
 
printf("Unesite do %d stringova, zatim praznu liniju pa <ENTER> za kraj:
",MAX);
 
 while(gets(str[i])!=NULL && strcmp(str[i],STOP)!=0 && i<MAX)
 {
       pokstr[i]=str[i];
       duz[i]=strlen(str[i]);
       i++;
 }

 //Poziv funkcije 'sortiraj'
 sortiraj(pokstr, duz, i);

 //Poruka korisniku o izgledu sotiranih stringova
 printf("Sortirani stringovi izgledaju:
");


 for(j=0;j<i;j++)
 {
       printf("String [%d]:",j);
       puts(pokstr[j]);
 }

 //Poruka korisniku o duzini sortiranih stringova
 printf("Duzine sortiranih stringova su:
");

 for(j=0;j<i;j++)
 {
       printf("String [%d]:",j);
       printf("%d
",duz[j]);
 }
 }

 //Funkcija 'sortiraj' 
 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;
                  }
 }

 


NAPOMENA:U koliko zelimo da sortiramo niz u rastucem redosledu prebrojavanjem karaktera
izmene vrsimo samo unutar postojece funkcije(izmena je oznacena crvenom bojom):


 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(d[i]>d[j])
          {
          pom=st[i];
          st[i]=st[j];
          st[j]=pom;

          m=d[i];
          d[i]=d[j];
          d[j]=m;
 }