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 biblioteca {
- char titlu[255];
- char autor[255];
- int an;
- int nr_pag;
- char domeniul[255];
- }b;
- void adaugarea(b *a, int *nr)
- {
- (*nr)++;
- printf("Titlu: ");
- scanf("%s", (a + *nr)->titlu);
- printf("Autor: ");
- scanf("%s", (a + *nr)->autor);
- printf("Anul aparitiei: ");
- scanf("%d", &((a + *nr)->an));
- printf("Nr. pagini: ");
- scanf("%d", &((a + *nr)->nr_pag));
- printf("Domeniu: ");
- scanf("%s", (a + *nr)->domeniul);
- }
- void afisarea(b *a, int nr)
- {
- int i;
- for (i = 0; i <= nr; i++)
- printf("\tTitlu: %s\n\tAutor: %s\n\tAn aparitie: %d\n\tNr. pagini: %d\n\tDomeniul: %s\t\n\n", (a + i)->titlu, (a + i)->autor, (a + i)->an, (a + i)->nr_pag, (a + i)->domeniul);
- }
- void cautarea(b *a, int nr)
- {
- char s[20];
- int i;
- printf("Dati titlu: ");
- scanf("%s", s);
- for(i=0;i<=nr;i++)
- if(strcmp(s,(a+i)->titlu)==0)
- printf("\tTitlu: %s\n\tAutor: %s\n\tAn aparitie: %d\n\tNr. pagini: %d\n\tDomeniul: %s\t\n\n", (a + i)->titlu, (a + i)->autor, (a + i)->an, (a + i)->nr_pag, (a + i)->domeniul);
- }
- void cautarean(b *a, int nr)
- {
- int i,f;
- printf("Dati an: ");
- scanf("%d", &f);
- for (i = 0; i <= nr; i++)
- if (f==(a+i)->an)
- printf("\tTitlu: %s\n\tAutor: %s\n\tAn aparitie: %d\n\tNr. pagini: %d\n\tDomeniul: %s\t\n\n", (a + i)->titlu, (a + i)->autor, (a + i)->an, (a + i)->nr_pag, (a + i)->domeniul);
- }
- void stergerea(b *a, int *nr)
- {
- int k = 0, i, j;
- char s1[20];
- printf("Dati titlul: ");
- scanf("%s", s1);
- for (i = 0; i <= (*nr - k); i++)
- {
- if (strcmp(s1, (a + i)->titlu) == 0)
- {
- k++;
- for (j = i; j <= (*nr - k); j++)
- *(a + j) = *(a + j + 1);
- i--;
- }
- }
- /*if (strcmp(s1, (a + i)->titlu) == 0)
- *nr = *nr - 1;*/
- *nr = *nr - k;
- }
- void sortarea(b *a, int nr)
- {
- int k = 1,i;
- char s1[20];
- b aux;
- printf("Dati domeniu: ");
- scanf("%s", s1);
- do {
- k = 1;
- for (i = 0; i < nr; i++)
- {
- if (strcmp((a + i)->titlu, (a + i + 1)->titlu) > 0)
- {
- aux = *(a + i);
- *(a + i) = *(a+i+1);
- *(a + i + 1) = aux;
- k = 0;
- }
- }
- } while (k == 0);
- for (i = 0; i <= nr; i++)
- {
- if (strcmp((a + i)->domeniul, s1) == 0)
- printf("\tTitlu: %s\n\tAutor: %s\n\tAn aparitie: %d\n\tNr. pagini: %d\n\tDomeniul: %s\t\n\n", (a + i)->titlu, (a + i)->autor, (a + i)->an, (a + i)->nr_pag, (a + i)->domeniul);
- }
- }
- int main()
- {
- b a[20];
- int nr = -1;
- enum {adaugare=1, afisare_domeniu, cautare_titlu, cautare_an, stergere, sortare_titlu_domeniu, iesire}opt;
- do {
- printf("1. Adaugarea unei carti\n");
- printf("2. Afisarea cartilor dintr-un domeniu citit de la tastatura\n");
- printf("3. Cautarea unei carti dupa titlu\n");
- printf("4. Cautarea unei carti după anul aparitiei.\n");
- printf("5. Stergerea unei carti\n");
- printf("6. Sortarea cartilor dupa titlu dintr-un anumit domeniu citit de la tastaura\n");
- printf("7. Exit\n");
- printf("Dati optiunea ");
- scanf("%d", &opt);
- switch (opt)
- {
- case adaugare:adaugarea(a, &nr);
- break;
- case afisare_domeniu:afisarea(a, nr);
- break;
- case cautare_titlu:cautarea(a, nr);
- break;
- case cautare_an:cautarean(a, nr);
- break;
- case stergere:stergerea(a, &nr);
- break;
- case sortare_titlu_domeniu:sortarea(a, nr);
- break;
- case iesire:exit(0);
- break;
- default:printf("Nu ii bine!");
- break;
- }
- } while (opt != 7);
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement