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

#define MAX_LEN 15

typedef struct 
{
	char naziv[MAX_LEN];
	unsigned int cena;
} artikal;

int poredi_po_ceni(const void* arg1, const void* arg2)
{
	return (((artikal*)arg1)->cena - ((artikal*)arg2)->cena);
}

int poceni_2(const void* arg1, const void* arg2)
{
	return *(int*)arg1 - ((artikal*)arg2)->cena 	;
}

int artikli_po_nazivu(const void* arg1, const void* arg2)
{
	return strcmp(((artikal*)arg1)->naziv,((artikal*)arg2)->naziv);
}

int poredi(const void* arg1,const void* arg2)
{
	return (*(int*)arg1) - (*(int*)arg2);
}

int s_compare(const void *arg1,const void *arg2)
{
	return strcmp(*(char**)arg1,*(char**)arg2);
}

int main(int argc, char *argv[])
{
	int n,i,j,cena;
	artikal *niz,*adresa;

	printf("Unesite broj artikala:\n");
	scanf("%d",&n);
	/*zauzimamo memoriju*/

	if(!(niz=malloc(n*sizeof(artikal))))
	{
		fprintf(stderr,"greska pri  alokaciji memorije");
		exit(1);
	}

	for(i=0;i<n;i++)
	{
		printf("\nUnesite naziv %d tog artikla:",i+1);
		scanf("%s",niz[i].naziv);
		printf("\nUnesite cenu %d tog artikla:",i+1);
		scanf("%d",&(niz[i].cena));
	}

	qsort((void*)niz,n,sizeof(artikal),artikli_po_nazivu);

	printf("\nSortirano po nazivu:\n\n");
	for(i=0;i<n;i++)
	{
		printf(" %s - cena %d din\n",niz[i].naziv,niz[i].cena);
	}
	
	qsort((void*)niz,n,sizeof(artikal),poredi_po_ceni);
	
	printf("\n    Sortirano po ceni:\n\n");
	for(i=0;i<n;i++)
	{
		printf(" %s - cena %d din\n",niz[i].naziv,niz[i].cena);
	}

	printf("Unesite cenu koju trazite:\n");
	scanf("%d",&cena);
	adresa = (artikal*)bsearch((void*)&cena,(void*)niz,n,sizeof(artikal),poceni_2);
	
	if(adresa)
		printf("\nArtikl %s ima cenu %d",(artikal*)adresa->naziv, (artikal*)adresa->cena);
	else
		printf("\nNema takbog artikla");
	free(niz);
 	
}


