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