Advertisement
Guest User

Untitled

a guest
Nov 20th, 2019
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.90 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3.  
  4. using namespace std;
  5.  
  6. struct student
  7. {
  8.     int bursa, grupa;
  9.     double media;
  10.     char cod[30],nume[30], prenume[30];
  11. }v[10009],bursieri[10009];
  12.  
  13. int n, suma_burse,grupe[101],cerinta, gr_max,m;
  14. double media_maxima;
  15. void adauga_student()
  16. {
  17.     student a;
  18.     cout << "Numele studentului:\n";
  19.     cin >> a.nume;
  20.     cout << "Numele studentului: (scrieti cu cratima)\n";
  21.     cin >> a.prenume;
  22.     cout << "Grupa studentului:\n";
  23.     cin >> a.grupa;
  24.     cout << "Media elevului:\n";
  25.     cin >> a.media;
  26.     cout << "Codul elevului:\n";
  27.     cin >> a.cod;
  28.     if(a.media >= 9.00 && a.media <= 9.49)
  29.     {
  30.         m++;
  31.         a.bursa = 300;
  32.         bursieri[m] = a;
  33.     }
  34.     else if(a.media >= 9.50 )
  35.     {
  36.         m++;
  37.         a.bursa = 500;
  38.         bursieri[m] = a;
  39.     }
  40.     else a.bursa = 0;
  41.     suma_burse += a.bursa;
  42.     n++;
  43.     grupe[a.grupa]++;
  44.     v[n] = a;
  45.     media_maxima = max(media_maxima, a.media);
  46.     gr_max = max(gr_max, a.grupa);
  47.     cout << '\n';
  48. }
  49. void afisare_student(student a)
  50. {
  51.     cout << a.nume << ' ' << a.prenume << '\n';
  52.     cout << "Cod: " << a.cod << '\n';
  53.     cout << "Grupa: " << a.grupa << '\n';
  54.     cout << "Media: " << a.media << '\n';
  55.     cout << "Bursa: " << a.bursa << '\n';
  56.     cout << '\n';
  57. }
  58. void studenti_grupe()
  59. {
  60.     if(n == 0)
  61.     {
  62.         cout << "NU EXISTA STUDENTI INTRODUSI\n";
  63.         return;
  64.     }
  65.     for(int i = 1; i <= gr_max; ++i)
  66.         if(grupe[i] != 0)
  67.             cout << "Grupa " << i << ": " << grupe[i] << " elevi\n";
  68. }
  69. void studenti_media_maxima()
  70. {
  71.     if(n == 0)
  72.     {
  73.         cout << "NU EXISTA STUDENTI INTRODUSI\n";
  74.         return;
  75.     }
  76.     cout << "Elevi cu media " << media_maxima << '\n';
  77.     for(int i = 1; i <= n; ++i)
  78.         if(v[i].media == media_maxima)
  79.             afisare_student(v[i]);
  80.  
  81. }
  82. void cautare_student()
  83. {
  84.     char key[30];
  85.     int gasit = 0;
  86.     cout << "Introduceti codul stundentului: ";
  87.     cin >> key;
  88.     for(int i = 1; i <= n; ++i)
  89.         if(strcmp(v[i].cod, key) == 0)
  90.         {
  91.             gasit = 1;
  92.             afisare_student(v[i]);
  93.             break;
  94.         }
  95.     if(!gasit)
  96.         cout << "Student inexistent\n";
  97. }
  98. bool compara(student a, student b)
  99. {
  100.     if(strcmp(a.nume, b.nume) == 0)
  101.     {
  102.         if(strcmp(a.prenume, b.prenume) == 0)
  103.         {
  104.             return strcmp(a.cod, b.cod) > 0;
  105.         }
  106.         else return strcmp(a.prenume, b.prenume) > 0;
  107.     }
  108.     else return strcmp(a.nume, b.nume) > 0;
  109. }
  110. void studenti_bursieri()
  111. {
  112.     if(m == 0)
  113.         cout << "Nu exista studenti bursieri\n";
  114.     else
  115.     {
  116.         for(int i = 1; i <= m; ++i)
  117.             for(int j = i + 1; j <= m; ++j)
  118.                 if(compara(bursieri[i], bursieri[j]))
  119.                 {
  120.                     student aux = bursieri[i];
  121.                     bursieri[i] = bursieri[j];
  122.                     bursieri[j] = aux;
  123.                 }
  124.         cout << "Elevi bursieri:\n";
  125.         for(int i = 1; i <= m; ++i)
  126.             cout << bursieri[i].nume << ' ' << bursieri[i].prenume << '\n';
  127.         cout << '\n';
  128.     }
  129. }
  130. void valoare_burse()
  131. {
  132.     cout << "Valoarea totala a burselor este de: " << suma_burse << '\n';
  133. }
  134. void lista_elevi()
  135. {
  136.     if(n == 0)
  137.         cout << "Nu exista studenti inscrisi\n";
  138.     else
  139.     {
  140.         for(int i = 1; i <= n; ++i)
  141.             for(int j = i + 1; j <= n; ++j)
  142.                 if(v[i].media < v[j].media || (v[i].media == v[j].media && compara(v[i], v[j]) ) )
  143.                 {
  144.                     student aux = v[i];
  145.                     v[i] = v[j];
  146.                     v[j] = aux;
  147.                 }
  148.         cout << "Lista elevi:\n";
  149.         for(int i = 1; i <= n; ++i)
  150.             cout << v[i].nume << ' ' << v[i].prenume << '\n';
  151.         cout << '\n';
  152.     }
  153. }
  154. void elevi_din_grupa()
  155. {
  156.     int gr;
  157.     cout << "Introduceti grupa: ";
  158.     cin >> gr;
  159.     if(grupe[gr] == 0)
  160.         cout << "Nu exista elevi in aceasta grupa\n";
  161.     else
  162.     {
  163.         cout << "Elevi din grupa " << gr << ": \n";
  164.         for(int i = 1; i <= n; ++i)
  165.             if(v[i].grupa == gr)
  166.                 afisare_student(v[i]);
  167.     }
  168. }
  169. void eliminare_student()
  170. {
  171.     int poz = 0;
  172.     char key[30];
  173.     cout << "Introduceti codul elevului: ";
  174.     cin >> key;
  175.     for(int i = 1; i <= n && !poz; ++i)
  176.         if(strcmp(v[i].cod, key) == 0)
  177.             poz = i;
  178.     if(poz == 0)
  179.         cout << "Elev inexistent\n";
  180.     else
  181.     {
  182.         for(int i = poz + 1; i <= n; i++)
  183.             v[i - 1] = v[i];
  184.         n--;
  185.         cout << "Stergere efectuata\n";
  186.     }
  187. }
  188. int main()
  189. {
  190.     do
  191.     {
  192.         cout << "Alegeti o actiune:\n";
  193.         cout << "1 - Adaugare student\n";
  194.         cout << "2 - Afisare numar de studenti din fiecare grupa\n";
  195.         cout << "3 - Afisarea studentilor cu cea mai mare medie\n";
  196.         cout << "4 - Afisarea informatiilor unui student cautat dupa cod\n";
  197.         cout << "5 - Lista alfabetica a studentilor bursieri\n";
  198.         cout << "6 - Valoarea totala a burselor\n";
  199.         cout << "7 - Lista studentilor in ordinea descrescatoare a mediilor\n";
  200.         cout << "8 - Lista studentilor dintr-o grupa\n";
  201.         cout << "9 - Eliminare student\n";
  202.         cout << "10 - Iesire\n";
  203.         cout << "Introduceti un numar: ";
  204.         cin >> cerinta;
  205.         cout << '\n';
  206.         if(cerinta == 1)
  207.             adauga_student();
  208.         if(cerinta == 2)
  209.             studenti_grupe();
  210.         if(cerinta == 3)
  211.             studenti_media_maxima();
  212.         if(cerinta == 4)
  213.             cautare_student();
  214.         if(cerinta == 5)
  215.             studenti_bursieri();
  216.         if(cerinta == 6)
  217.             valoare_burse();
  218.         if(cerinta == 7)
  219.             lista_elevi();
  220.         if(cerinta == 8)
  221.             elevi_din_grupa();
  222.         if(cerinta == 9)
  223.             eliminare_student();
  224.         cout << '\n';
  225.  
  226.     }while(cerinta != 10);
  227.     return 0;
  228. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement