Patey

Untitled

Oct 30th, 2020
633
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include<string.h>
  4.  
  5. typedef struct biblioteca {
  6.     char titlu[255];
  7.     char autor[255];
  8.     int an;
  9.     int nr_pag;
  10.     char domeniul[255];
  11. }b;
  12.  
  13. void adaugarea(b *a, int *nr)
  14. {
  15.     (*nr)++;
  16.     printf("Titlu: ");
  17.     scanf("%s", (a + *nr)->titlu);
  18.     printf("Autor: ");
  19.     scanf("%s", (a + *nr)->autor);
  20.     printf("Anul aparitiei: ");
  21.     scanf("%d", &((a + *nr)->an));
  22.     printf("Nr. pagini: ");
  23.     scanf("%d", &((a + *nr)->nr_pag));
  24.     printf("Domeniu: ");
  25.     scanf("%s", (a + *nr)->domeniul);
  26. }
  27.  
  28. void afisarea(b *a, int nr)
  29. {
  30.     int i;
  31.     for (i = 0; i <= nr; i++)
  32.         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);
  33. }
  34.  
  35. void cautarea(b *a, int nr)
  36. {
  37.     char s[20];
  38.     int i;
  39.     printf("Dati titlu: ");
  40.     scanf("%s", s);
  41.     for(i=0;i<=nr;i++)
  42.         if(strcmp(s,(a+i)->titlu)==0)
  43.             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);
  44. }
  45.  
  46. void cautarean(b *a, int nr)
  47. {
  48.     int i,f;
  49.     printf("Dati an: ");
  50.     scanf("%d", &f);
  51.     for (i = 0; i <= nr; i++)
  52.         if (f==(a+i)->an)
  53.             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);
  54. }
  55.  
  56. void stergerea(b *a, int *nr)
  57. {
  58.     int k = 0, i, j;
  59.     char s1[20];
  60.     printf("Dati titlul: ");
  61.     scanf("%s", s1);
  62.     for (i = 0; i <= (*nr - k); i++)
  63.     {
  64.         if (strcmp(s1, (a + i)->titlu) == 0)
  65.         {
  66.             k++;
  67.             for (j = i; j <= (*nr - k); j++)
  68.                 *(a + j) = *(a + j + 1);
  69.             i--;
  70.         }
  71.     }
  72.     /*if (strcmp(s1, (a + i)->titlu) == 0)
  73.         *nr = *nr - 1;*/
  74.     *nr = *nr - k;
  75. }
  76.  
  77. void sortarea(b *a, int nr)
  78. {
  79.     int k = 1,i;
  80.     char s1[20];
  81.     b aux;
  82.     printf("Dati domeniu: ");
  83.     scanf("%s", s1);
  84.     do {
  85.         k = 1;
  86.         for (i = 0; i < nr; i++)
  87.         {
  88.             if (strcmp((a + i)->titlu, (a + i + 1)->titlu) > 0)
  89.             {
  90.                 aux = *(a + i);
  91.                 *(a + i) = *(a+i+1);
  92.                 *(a + i + 1) = aux;
  93.                 k = 0;
  94.             }
  95.         }
  96.     } while (k == 0);
  97.     for (i = 0; i <= nr; i++)
  98.     {
  99.         if (strcmp((a + i)->domeniul, s1) == 0)
  100.             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);
  101.     }
  102. }
  103. int main()
  104. {
  105.     b a[20];
  106.     int nr = -1;
  107.     enum {adaugare=1, afisare_domeniu, cautare_titlu, cautare_an, stergere, sortare_titlu_domeniu, iesire}opt;
  108.     do {
  109.         printf("1. Adaugarea unei carti\n");
  110.         printf("2. Afisarea cartilor dintr-un domeniu citit de la tastatura\n");
  111.         printf("3. Cautarea unei carti dupa titlu\n");
  112.         printf("4. Cautarea unei carti după anul aparitiei.\n");
  113.         printf("5. Stergerea unei carti\n");
  114.         printf("6. Sortarea cartilor dupa titlu dintr-un anumit domeniu citit de la tastaura\n");
  115.         printf("7. Exit\n");
  116.         printf("Dati optiunea ");
  117.         scanf("%d", &opt);
  118.         switch (opt)
  119.         {
  120.         case adaugare:adaugarea(a, &nr);
  121.             break;
  122.         case afisare_domeniu:afisarea(a, nr);
  123.             break;
  124.         case cautare_titlu:cautarea(a, nr);
  125.             break;
  126.         case cautare_an:cautarean(a, nr);
  127.             break;
  128.         case stergere:stergerea(a, &nr);
  129.             break;
  130.         case sortare_titlu_domeniu:sortarea(a, nr);
  131.             break;
  132.         case iesire:exit(0);
  133.             break;
  134.         default:printf("Nu ii bine!");
  135.             break;
  136.         }
  137.     } while (opt != 7);
  138.  
  139.     system("pause");
  140.     return 0;
  141. }
RAW Paste Data