#include <cstdio> //standardna i/o biblioteka
#include <string.h> //biblioteka za rabota so stringovi
#define MAXVEL 100 //Definiranje na maks golemina na nizi vo prog.
struct CDa { /*Како sto rece pogore Naslov=naslov,godina na nastanok=godina,glaven glumec=glumec i zanr=Zanr*/
char naslov[15];
char reziser[15];
char glumec[15];
char zanr[15];
int godina;
};
void sortiraj(struct CDa* niza, int vel) /*sortiraj so bubble sort pri toa primi max broj na gol na niz i pokazuvac kon nizata za da se izmini sekoj clen na nizata*/
{
int i,j;
for (i=0; i<vel-1; i++)
for (j=i+1; j<vel; j++)
{
int nasl = strcmp(niza[i].naslov,niza[j].naslov);
int rez = strcmp(niza[i].reziser,niza[j].reziser);
int glum = strcmp(niza[i].glumec,niza[j].glumec);
int zan = strcmp(niza[i].zanr,niza[j].zanr);
if (nasl>0 || (nasl==0 && rez>0))
if (glum>0 || (glum==0 && zan>0))
{
{
struct CDa priv=niza[i];
niza[i]=niza[j];
niza[j]=priv;
}
}
}
}
void vnes(struct CDa* niza, int* vel)/*Otkako ke bide vnesena nizata sortiraj ja*/
{
struct CDa a;
if (*vel>=MAXVEL)
{
printf("Nema mesto!\n");
return;
}
printf ("vnesi naslov: ");
scanf("%s",a.naslov);
printf ("Vnesi reziser: ");
scanf("%s",a.reziser);
printf ("Vnesi glumec: ");
scanf("%s",a.glumec);
printf ("Vnesi zanr: ");
scanf("%s",a.zanr);
printf ("Vnesi godina na nastanok: ");
scanf("%d",&a.godina);
niza[(*vel)++]=a;
sortiraj(niza,*vel);
printf ("\n");
}
void ispis(struct CDa* niza, int vel) /*ispisuvanjeto se pravi so eden for pri sto se izminuvaat site clenovi na nizata*/
{
int i;
for (i=0; i<vel; i++)
printf ("%d. Naslov:%s, Reziser:%s, Glaven glumec:%s Zanr: %s,Godina: %d\n", i+1, niza[i].naslov, niza[i].reziser, niza[i].glumec, niza[i].zanr, niza[i].godina);
printf ("\n");
}
void prebaraj(struct CDa* niza, int vel)/*Ovaa funkcija se izvrsuva edna na pocetokot i dava izgled na ednostanvo meni kade sto korisnikot ke izbira brojki kako opcii */
{
int tip,i,tel,pronadjen=0;
char prebaraj[15];
printf ("\n Vnesi 1 za prebaruvanje po naslov ,2 za reziser i 3 za glumec: ");
scanf("%d",&tip);
if (tip==1)
{
printf("Vnesi baran naslov: ");
scanf("%s",prebaraj);
for (i=0; i<vel; i++)
{
if ((strcmp(prebaraj,niza[i].naslov)==0))
{
printf ("%d. Naslov:%s, Reziser:%s, Glaven glumec:%s Zanr: %s,Godina: %d\n", i+1, niza[i].naslov, niza[i].reziser, niza[i].glumec, niza[i].zanr, niza[i].godina);
pronadjen=1;
}
}
}
if (tip==2)
{
printf("Vnesi baran reziser: ");
scanf("%s",prebaraj);
for (i=0; i<vel; i++)
{
if ((strcmp(prebaraj,niza[i].reziser)==0))
{
printf ("%d. Reziser:%s, Naslov:%s, Glaven glumec:%s Zanr: %s,Godina: %d\n", i+1, niza[i].reziser, niza[i].naslov, niza[i].glumec, niza[i].zanr, niza[i].godina);
pronadjen=1;
}
}
}
if (tip==3)
{
printf("Vnesi baran glumec: ");
scanf("%s",prebaraj);
for (i=0; i<vel; i++)
{
if ((strcmp(prebaraj,niza[i].glumec)==0))
{
printf ("%d. Glaven glumec:%s, Naslov:%s, Reziser:%s Zanr: %s,Godina: %d\n", i+1, niza[i].glumec, niza[i].naslov, niza[i].reziser, niza[i].zanr, niza[i].godina);
pronadjen=1;
}
}
}
if (pronadjen==0)
{
printf ("Ne e pronajden nieden rezultat.\n");
}
int pronajden;
if(pronajden==0)
{
printf ("Ne e pronajden nieden rezultat .\n\n");
}
printf ("\n");
}
void listanjesporedzanr(struct CDa* niza, int vel)
{
int stip,i;
char prebaraj[15];
printf ("\n Vnesi 1 za prebaruvanje po zanr: ");
scanf("%d",&stip);
if (stip==1)
{
printf("Vnesi baran zanr: ");
scanf("%s",prebaraj);
}
else
{
printf("Ne vnesvte znak 1.");
}
for (i=0; i<vel; i++)
{
if ((strcmp(prebaraj,niza[i].zanr)==0))
{
printf ("Filmovi spored toj zanr se: %s,\n", niza[i].naslov);
}
}
}
int main(int* argc,char *args[])
{
struct CDa imenik[MAXVEL];
int velicina=0,izbor=-1;
while (izbor!=0)
{
printf ("Pritisni 1 za vnes, 2 za ispis, 3 za prebaruvanje, 4 za listanje spored zanr, 0 za izlez : ");
scanf ("%d", &izbor);
switch (izbor)
{
case 1:
vnes(imenik,&velicina);
break;
case 2:
ispis(imenik,velicina);
break;
case 3:
prebaraj(imenik,velicina);
break;
case 4:
listanjesporedzanr(imenik,velicina);
break;
case 0:
break;
default:
printf ("Pogresen vnes !\n");
}
}
return 0;
}