Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- typedef struct Porodiliste
- {
- int mesec;
- int godina;
- int brojdecaka;
- int brojdevojcica;
- struct Porodiliste* sledeca;
- } Porodiliste;
- typedef struct Mesec{
- int mesec;
- int brojdece;
- struct Mesec *sledeci;
- }Mesec;
- void IspisListe()
- {
- printf("(1)Ucitaj podatke u listu\n");
- printf("(2)Ispis broja meseci u kome je rodjeno vise od odredjenog broja dece\n");
- printf("(3)Ispis broja rodjenih decaka i devojcica u jednoj godini sortirano po ukupnom broju rodjenih\n");
- printf("(0)Izlaz iz programa\n");
- }
- Porodiliste *NapraviNovu(int m,int g, int brdecaka,int brdevojcica)
- {
- Porodiliste *nova=(Porodiliste *)malloc(sizeof(Porodiliste));
- nova->godina=g;
- nova->mesec=m;
- nova->brojdecaka=brdecaka;
- nova->brojdevojcica=brdevojcica;
- nova->sledeca=NULL;
- return nova;
- }
- Porodiliste *UbaciSortirano(Porodiliste *pocetak, Porodiliste *nova)
- {
- if(pocetak==NULL)
- {
- return nova;
- }
- if((pocetak->godina*12+pocetak->mesec)>(nova->godina*12+nova->mesec))
- {
- nova->sledeca = pocetak;
- return nova;
- }
- Porodiliste *tmp=pocetak;
- while(tmp->sledeca!=NULL)
- {
- if((tmp->sledeca->godina*12+tmp->sledeca->mesec)>(nova->godina*12+nova->mesec))
- {
- nova->sledeca=tmp->sledeca;
- tmp->sledeca=nova;
- return pocetak;
- }
- tmp=tmp->sledeca;
- }
- tmp->sledeca=nova;
- return pocetak;
- }
- void ispisPorodilista(Porodiliste *p){
- printf("%d %d %d %d\n", p->mesec, p->godina, p->brojdecaka, p->brojdevojcica);
- }
- void ispisiIzListe(Porodiliste *pocetak){
- if(pocetak==NULL){
- return;
- }
- Porodiliste *tmp=pocetak;
- while(tmp!=NULL){
- ispisPorodilista(tmp);
- tmp=tmp->sledeca;
- }
- }
- Mesec *napraviMesec(Porodiliste *p){
- Mesec *novi=(Mesec *)malloc(sizeof(Mesec));
- novi->mesec=p->mesec;
- novi->brojdece=p->brojdecaka+p->brojdevojcica;
- novi->sledeci=NULL;
- return novi;
- }
- Mesec *ubaciMesec(Mesec *pocetni, Porodiliste *p){
- if(pocetni==NULL){
- Mesec *novi=napraviMesec(p);
- return novi;
- }
- if(pocetni->mesec==p->mesec){
- pocetni->brojdece+=p->brojdecaka+p->brojdevojcica;
- return pocetni;
- }
- Mesec *tmp=pocetni;
- while(tmp->sledeci!=NULL){
- if(tmp->mesec==p->mesec){
- tmp->brojdece+=p->brojdecaka+p->brojdevojcica;
- return pocetni;
- }
- tmp=tmp->sledeci;
- }
- Mesec *novi=napraviMesec(p);
- tmp->sledeci=novi;
- return pocetni;
- }
- void ispisMeseca(Mesec *m){
- printf("%d %d\n", m->mesec, m->brojdece);
- }
- void ispisMeseci(Mesec *pocetni){
- if(pocetni==NULL){
- return;
- }
- Mesec *tmp=pocetni;
- while(tmp!=NULL){
- ispisMeseca(tmp);
- tmp=tmp->sledeci;
- }
- }
- int main()
- {
- int opcija;
- Porodiliste *pocetak=(Porodiliste*)malloc(sizeof(Porodiliste));
- pocetak=NULL;
- do
- {
- if(opcija==1)
- {
- char fileName[100];
- printf("Ucitajte ime fajla: ");
- scanf("%s",fileName);
- FILE *file=fopen(fileName,"r");
- char linija[100];
- int m,g,brdecaka,brdevojcica;
- char* token;
- while(fgets(linija,100,file)!=NULL)
- {
- token=strtok(linija," ");
- m=strtol(token,NULL,10);
- token=strtok(NULL," ");
- g=strtol(token,NULL,10);
- token=strtok(NULL," ");
- brdecaka=strtol(token,NULL,10);
- token=strtok(NULL,"\n");
- brdevojcica=strtol(token,NULL,10);
- Porodiliste* nova = NapraviNovu(m,g,brdecaka,brdevojcica);
- pocetak=UbaciSortirano(pocetak,nova);
- }
- ispisiIzListe(pocetak);
- }
- if(opcija==2)
- {
- Mesec *pocetni=(Mesec *)malloc(sizeof(Mesec));
- pocetni=NULL;
- Porodiliste *tmp=pocetak;
- while(tmp!=NULL){
- pocetni=ubaciMesec(pocetni, tmp);
- tmp=tmp->sledeca;
- }
- ispisMeseci(pocetni);
- }
- if(opcija==3)
- {
- }
- IspisListe();
- scanf("%d",&opcija);
- }
- while(opcija!=0);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement