Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <conio.h>
- #include <string.h>
- typedef struct
- {
- int numar_pagini,anul_aparitiei;
- char titlu[20],autor[20],domeniu[20];
- }autor;
- void citire(autor *a,int *nr)
- {
- (*nr)++;
- printf("Introduceti titlul cartii: ");
- fflush(stdin);
- gets((a+*nr)->titlu);
- printf("Introduceti autorul cartii: ");
- fflush(stdin);
- gets((a+*nr)->autor);
- printf("Introduceti domeniul cartii: ");
- fflush(stdin);
- gets((a+*nr)->domeniu);
- printf("Introduceti numarul de pagini al cartii: ");
- scanf("%d",&(a+*nr)->numar_pagini);
- printf("Introduceti anul aparitiei cartii: ");
- scanf("%d",&(a+*nr)->anul_aparitiei);
- }
- void afisare(autor *a,int nr)
- {
- printf("\n%5s \t %5s \t %5s \t %5d \t %5d",(a+nr)->titlu,(a+nr)->autor,(a+nr)->domeniu,(a+nr)->numar_pagini,(a+nr)->anul_aparitiei);
- }
- void cautare_domeniu(autor *a, int *nr,char domeniu[20])
- {
- int i;
- printf("Introduceti domeniul pe care il cautati: ");
- fflush(stdin);
- gets(domeniu);
- for(i=0;i<=(*nr);i++)
- if(strcmp((a+i)->domeniu,domeniu)==0)
- afisare(&a[0],i);
- }
- void cautare_an(autor *a,int *nr,int an)
- {
- int i;
- printf("Introduceti anul pe care il cautati: ");
- scanf("%d",&an);
- for(i=0;i<=(*nr);i++)
- if((a+i)->anul_aparitiei==an)
- afisare(&a[0],i);
- }
- void cautare_titlu(autor *a, int *nr,char titlu[20])
- {
- int i;
- printf("Introduceti domeniul pe care il cautati: ");
- fflush(stdin);
- gets(titlu);
- for(i=0;i<=(*nr);i++)
- if(strcmp((a+i)->titlu,titlu)==0)
- afisare(&a[0],i);
- }
- void stergere(autor *a,int *nr, char titlu2[20])
- {
- int i,j,k=0;
- printf("Introduceti cartea pe care o stergeti: ");
- fflush(stdin);
- gets(titlu2);
- for(i=0;i<=(*nr-k);i++)
- if(strcmp((a+i)->titlu,titlu2)==0)
- {
- k++;
- for(j=i;j<=(*nr-k);j++)
- *(a+j)=*(a+j+1);
- i--;
- }
- *nr=*nr-k;
- }
- void sortare(autor *a,int *nr)
- {
- int i,j,k;
- autor aux;
- do
- {
- k=1;
- for(i=0;i<(*nr);i++)
- if(strcmp((a+i)->titlu,(a+i+1)->titlu)>0)
- {
- aux=*(a+i+1);
- *(a+i+1)=*(a+i);
- *(a+i)=aux;
- k=0;
- }
- }while(!k);
- }
- void salvare(autor *a,int *nr)
- {
- FILE *f;
- int i;
- f=fopen("bac1.in","wt");
- for(i=0;i<=(*nr);i++)
- if((a+i)->anul_aparitiei>=2000)
- {
- fprintf(f,"\nTitlul cartii este: %s",(a+i)->titlu);
- fprintf(f,"\nAutorul cartii este: %s",(a+i)->autor);
- fprintf(f,"\nDomeniu cartii este: %s",(a+i)->domeniu);
- fprintf(f,"\nNumarul de pagini al cartii este: %d",(a+i)->numar_pagini);
- fprintf(f,"\nAnul aparitiei cartii este: %d\n\n",(a+i)->anul_aparitiei);
- }
- fclose(f);
- }
- int main()
- {
- autor a[10];
- int optiune,nr=-1,i,an;
- char domeniu[20],titlu[20],titlu2[20];
- do
- {
- printf("\n1. Adaugarea unei carti\n");
- printf("2. Afisarea tuturor cartilor\n");
- printf("3. Afisarea cartilor dintr-un domeniu citit de la tastatura\n");
- printf("4. Cautarea unei carti dupa titlu\n");
- printf("5. Cautarea unei carti dupa anul aparitiei\n");
- printf("6. Stergerea unei carti\n");
- printf("7. Sortarea cartilor dupa titlu dintr-un anumit domeniu citit de la tastatura\n");
- printf("8. Salvarea cartior care au anul aparitiei mai mare sau egal cu 2000 intr-un fisier\n");
- printf("0. Iesire\n");
- printf("Introduceti o optiune: ");
- scanf("%d",&optiune);
- switch(optiune)
- {
- case 1:
- citire(&a[0],&nr);
- break;
- case 2:
- for(i=0;i<=nr;i++)
- afisare(&a[0],i);
- break;
- case 3:
- cautare_domeniu(&a[0],&nr,domeniu);
- break;
- case 4:
- cautare_titlu(&a[0],&nr,titlu);
- break;
- case 5:
- cautare_an(&a[0],&nr,an);
- break;
- case 6:
- stergere(&a[0],&nr,titlu2);
- for(i=0;i<=nr;i++)
- afisare(&a[0],i);
- break;
- case 7:
- sortare(&a[0],&nr);
- for(i=0;i<=nr;i++)
- afisare(&a[0],i);
- break;
- case 8:
- salvare(&a[0],&nr);
- break;
- case 0:
- exit(0);
- default:
- printf("Optiune gresita");
- break;
- }
- }while(optiune);
- getch();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement