Advertisement
Patey

Untitled

Nov 14th, 2020
938
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.96 KB | None | 0 0
  1. #include<stdlib.h>
  2. #include<stdio.h>
  3. #include<string.h>
  4.  
  5. typedef struct calculator {
  6.     int serie_calculator, memorie, hdd;
  7.     char tip_procesor[20], monitor[10];
  8. }b;
  9.  
  10. int cmp_monitor(const void *a, const void *b)
  11. {
  12.     struct calculator *ia = (struct calculator *)a;
  13.     struct calculator *ib = (struct calculator *)b;
  14.     return strcmp(ia->monitor, ib->monitor);
  15. }
  16. void adaugare_calc(b *a, int*n)
  17. {
  18.     (*n)++;
  19.     printf("Seria: ");
  20.     scanf("%d", &((a + *n)->serie_calculator));
  21.     printf("Memorie: ");
  22.     scanf("%d", &((a + *n)->memorie));
  23.     printf("HDD: ");
  24.     scanf("%d", &((a + *n)->hdd));
  25.     printf("Tip Procesor: ");
  26.     scanf("%s", (a + *n)->tip_procesor);
  27.     printf("Monitor: ");
  28.     scanf("%s", (a + *n)->monitor);
  29. }
  30.  
  31. void afisare_calc(b *a, int n,int i)
  32. {
  33.     printf("Seria: %d\nMemorie: %d\nHDD: %d\nTip Procesor: %s\nMonitor: %s\n\n", (a + i)->serie_calculator, (a + i)->memorie, (a + i)->hdd, (a + i)->tip_procesor, (a + i)->monitor);
  34. }
  35.  
  36. void afisare_calc_procesor(b *a, int n)
  37. {
  38.     char s[20];
  39.     int i;
  40.     printf("Dati procesorul cautat: ");
  41.     scanf("%s", s);
  42.     printf("\n");
  43.     for (i = 0; i <= n; i++)
  44.     {
  45.         if (strcmp(s, (a + i)->tip_procesor) == 0)
  46.             afisare_calc(a, n, i);
  47.     }
  48. }
  49.  
  50. void cautare_calc_serie(b *a, int n)
  51. {
  52.     int nr,i;
  53.     printf("Dati seria cautat: ");
  54.     scanf("%d", &nr);
  55.     printf("\n");
  56.     for (i = 0; i <= n; i++)
  57.         if (nr == (a + i)->serie_calculator)
  58.             afisare_calc(a, n, i);
  59. }
  60.  
  61. void stergere_calc_serie(b* a, int *n)
  62. {
  63.     int nr,i,k=0,j;
  64.     printf("Dati seria: ");
  65.     scanf("%d", &nr);
  66.     for (i = 0; i <= *n - k; i++)
  67.     {
  68.         if (nr == (a + i)->serie_calculator)
  69.         {
  70.             k++;
  71.             for (j = i; j < *n - k; j++)
  72.                 *(a + j) = *(a + j + 1);
  73.             i--;
  74.         }
  75.     }
  76.     *n = *n - k;
  77. }
  78.  
  79. void stergere_calc_hdd(b* a, int *n)
  80. {
  81.     int nr,nr1,i,k=0,j;
  82.     printf("Dati hdd: ");
  83.     scanf("%d", &nr);
  84.     printf("Dati memoria: ");
  85.     scanf("%d", &nr1);
  86.     for (i = 0; i <= *n - k; i++)
  87.     {
  88.         if ((nr == (a + i)->hdd)&&(nr1==(a+i)->memorie))
  89.         {
  90.             k++;
  91.             for (j = i; j < *n - k; j++)
  92.                 *(a + j) = *(a + j + 1);
  93.             i--;
  94.         }
  95.     }
  96.     *n = *n - k;
  97. }
  98.  
  99. int main()
  100. {
  101.     b a[20];
  102.     int n = -1,i;
  103.     char *cit, *sir[20];
  104.     FILE *fis;
  105.     FILE *fis_citire;
  106.     fis = fopen("Fisier.txt", "w+t");
  107.     fis_citire = fopen("Citire.txt", "r+t");
  108.     enum{adaugare=1,afisare,salvare,afisare_procesor,afisare_fisier,cautare_serie,stergere_serie,stergere_hdd,sortare,iesire}opt;
  109.     do {
  110.         printf("1. Adaugarea unui calculator\n");
  111.         printf("2. Afisarea calculatoarelor.\n");
  112.         printf("3. Salvarea calculatoarelor intr-un fisier\n");
  113.         printf("4. Afisarea calculatoarelor cu un anumit procesor.\n");
  114.         printf("5. Afisarea calculatoarelor dintr-un fisier\n");
  115.         printf("6. Cautarea unui calculator dupa serie_calculator.\n");
  116.         printf("7. Stergerea unui calculator dupa serie.\n");
  117.         printf("8. Stergerea calculatorelor dupa hdd si memorie.\n");
  118.         printf("9. Sortarea calculatorelor dupa monitor.\n");
  119.         printf("10. Iesire\n");
  120.         printf("opt= ");
  121.         scanf("%d", &opt);
  122.         switch (opt)
  123.         {
  124.         case adaugare:adaugare_calc(a, &n);
  125.             break;
  126.         case afisare:for (i = 0; i <= n; i++)
  127.             afisare_calc(a, n, i);
  128.             break;
  129.         case salvare:for (i = 0; i <= n; i++)
  130.             fprintf(fis, "Seria: %d\nMemorie : %d\nHDD : %d\nTip Procesor : %s\nMonitor : %s\n\n", (a + i)->serie_calculator, (a + i)->memorie, (a + i)->hdd, (a + i)->tip_procesor, (a + i)->monitor);
  131.             printf("\nSalvare reusita\n");
  132.             break;
  133.         case afisare_procesor:afisare_calc_procesor(a, n);
  134.             break;
  135.         case afisare_fisier:while (!feof(fis_citire))
  136.                 {
  137.                     cit = fgets(sir, 20, fis_citire);
  138.                     printf("%s\n", sir);
  139.                 }
  140.             break;
  141.         case cautare_serie:cautare_calc_serie(a, n);
  142.             break;
  143.         case stergere_serie:stergere_calc_serie(a, &n);
  144.             break;
  145.         case stergere_hdd:stergere_calc_hdd(a, &n);
  146.             break;
  147.         case sortare:qsort(a, n + 1, sizeof(b), cmp_monitor);
  148.             for (i = 0; i <= n; i++)
  149.                 afisare_calc(a, n, i);
  150.             break;
  151.         case iesire:exit(0);
  152.             break;
  153.         default:printf("Eroare !");
  154.             break;
  155.         }
  156.     } while (1);
  157.  
  158.     system("pause");
  159.     return 0;
  160. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement