Patey

Untitled

Jan 18th, 2021
535
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 fotbal
  6. {
  7.     char *echipa, *tara;
  8.     int nr_trofee, val;
  9. }b;
  10.  
  11. int cmp_tara(const void *a, const void *b)
  12. {
  13.     struct fotbal *ia = (struct fotbal*)a;
  14.     struct fotbal*ib = (struct fotbal*)b;
  15.     return strcmp(ib->tara, ia->tara);
  16. }
  17.  
  18.  
  19. void citire(b *a,int *n, char* echipa, char* tara, int nr_trofee, int val)
  20. {
  21.     (*n)++;
  22.     (a + *n)->echipa = (char*)malloc(strlen(echipa) + 1);
  23.     (a + *n)->tara = (char*)malloc(strlen(tara) + 1);
  24.     strcpy((a + *n)->tara, tara);
  25.     strcpy((a + *n)->echipa, echipa);
  26.     (a + *n)->val = val;
  27.     (a + *n)->nr_trofee = nr_trofee;
  28. }
  29.  
  30. void afisare_struct(b *a, int n)
  31. {
  32.     int i;
  33.     for (i = 0; i <= n; i++)
  34.         printf("Echipa: %s\nTara: %s\nNr. trofee: %d\nValoarea lotului: %d\n\n", (a + i)->echipa, (a + i)->tara, (a + i)->nr_trofee, (a + i)->val);
  35. }
  36.  
  37. void afisarenrcsiv(b*a, int n)
  38. {
  39.     printf("\n");
  40.     int i,nrc=0,nrv=0,j;
  41.     for (i = 0; i <= n; i++)
  42.     {
  43.         nrc = 0;
  44.         nrv = 0;
  45.         for (j = 0; j < strlen((a + i)->tara); j++)
  46.         {
  47.             if (strchr("AEIOUaeiou", (a + i)->tara[j]));
  48.             else
  49.                 nrc++;
  50.         }
  51.         for (j = 0; j < strlen((a + i)->echipa); j++)
  52.         {
  53.             if (strchr("AEIOUaeiou",(a+i)->echipa[j]))
  54.                 nrv++;
  55.         }
  56.         printf("Numar vocale: %d      Numar consoane: %d\n", nrv, nrc);
  57.     }
  58.     printf("\n");
  59. }
  60.  
  61. void afisare_fisier(b *a, int n)
  62. {
  63.     FILE *fis = fopen("Echipe.txt", "w+t");
  64.     int i;
  65.     for (i = 0; i <= n; i++)
  66.     {
  67.         if ((a + i)->val > 500 && (a + i)->nr_trofee < 3)
  68.             fprintf(fis, "Echipa: %s\nTara: %s\nNr. trofee: %d\nValoarea lotului: %d\n\n", (a + i)->echipa, (a + i)->tara, (a + i)->nr_trofee, (a + i)->val);
  69.     }
  70. }
  71.  
  72. void reprezentare(b *a, int n)
  73. {
  74.     printf("\n");
  75.     int i,j;
  76.     for (i = 0; i <= n; i++)
  77.     {
  78.         for (j = 31; j >= 0; j--)
  79.         {
  80.             if ((a + i)->val >> j & 1)
  81.                 printf("1");
  82.             else
  83.                 printf("0");
  84.         }
  85.         printf("\n");
  86.     }
  87.     printf("\n");
  88. }
  89.  
  90. int main()
  91. {
  92.     b a[50];
  93.     int n = -1, nr_trofee, val;
  94.     char echipa[20], tara[20];
  95.     enum{iesire, adaugare, afisare, afisarenrcv, afisarefis, binar, sortare}opt;
  96.     do {
  97.         printf("0. Iesire\n");
  98.         printf("1. Adaugare\n");
  99.         printf("2. Afisare\n");
  100.         printf("3. Afisare nr consoane din tara si nr vocale din echipa\n");
  101.         printf("4. Afisare in fisier a echipelor cu mai putin de 3 trofee si un lot mai mare de 500 euro\n");
  102.         printf("5. Reprezentare binara a valorii\n");
  103.         printf("6. Sortare in ordine invers alfabetica in functie de numele tarii\n");
  104.         printf("opt= ");
  105.         scanf("%d", &opt);
  106.         switch (opt)
  107.         {
  108.         case iesire:exit(0);
  109.             break;
  110.         case adaugare:printf("Echipa: ");
  111.             scanf("%s", echipa);
  112.             printf("Tara: ");
  113.             scanf("%s", tara);
  114.             printf("Nr. trofee: ");
  115.             scanf("%d", &nr_trofee);
  116.             printf("Valoarea lotului: ");
  117.             scanf("%d", &val);
  118.             citire(a, &n, echipa, tara, nr_trofee, val);
  119.             break;
  120.         case afisare:afisare_struct(a, n);
  121.             break;
  122.         case afisarenrcv:afisarenrcsiv(a, n);
  123.             break;
  124.         case afisarefis:afisare_fisier(a, n);
  125.             break;
  126.         case binar:reprezentare(a, n);
  127.             break;
  128.         case sortare:qsort(a, n + 1, sizeof(b), cmp_tara);
  129.             afisare_struct(a, n);
  130.             break;
  131.         default:printf("Eroare!\n");
  132.             break;
  133.         }
  134.     } while (1);
  135. }
RAW Paste Data