///////////////////////////////////////////////////////////////////////
// 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;
}
}
}
}