Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 4

#include <iostream>

#include <string.h>
using namespace std;
struct elev{
int nrmatr;
char nume[20], prenume[20];
char clasa[4];
float media;
int absente_m, total_a;
char navetist;
}v[100];
int n;
void init()
{
n=0;
cout<<"Am initializat vectorul "<<endl;
}
void adaug()
{
elev x;
cout<<"Numar matricol:"; cin>>x.nrmatr;
cin.get();
cout<<"Nume:"; cin.getline(x.nume,21);
cout<<"Prenume:"; cin.getline(x.prenume,21);
cout<<"Clasa:"; cin>>x.clasa;
cout<<"Media:";cin>>x.media;
cout<<"Absente motivate:"; cin>>x.absente_m;
cout<<"Total absente:"; cin>>x.total_a;
cout<<"Navetist:"; cin>>x.navetist;
n++;
v[n]=x;
cout<<"Am adaugat elevul "<<n<<endl;
}
void cautare()
{
int m;
cout<<"Numarul matricol:";cin>>m;
for(int i=1;i<=n;i++)
if(v[i].nrmatr==m)
{
cout<<"NUmar matricol:"; cout<<v[i].nrmatr<<endl;
cin.get();
cout<<"Nume:"; cout<<v[i].nume<<endl;
cout<<"Prenume:"; cout<<v[i].prenume<<endl;
cout<<"Clasa:"; cout<<v[i].clasa<<endl;
cout<<"Media:";cout<<v[i].media<<endl;
cout<<"Absente motivate:"; cout<<v[i].absente_m<<endl;
cout<<"Total absente:"; cout<<v[i].total_a<<endl;
cout<<"Navetist:"; cout<<v[i].navetist<<endl;
cout<<endl<<endl;
}
}
void stergere()
{
int m;
cout<<"Numarul matricol:";cin>>m;
for(int i=1;i<=n;i++)
if(v[i].nrmatr==m)
{
for(int j=i;j<=n-1;j++)
v[j]=v[j+1];
n--;
}
}

void afisare_absente()
{
char cl[4];
int s=0;
cout<<"Clasa:";cin>>cl;
for(int i=1;i<=n;i++){
if(strcmp(v[i].clasa,cl)==0) s=s+v[i].total_a;
}
cout<<s<<endl;
}
void stergere_np()
{
char m, num[20], pre[20];
cout<<"Numele:"; cin.getline(num,20);
cout<<"Prenumele:"; cin.getline(pre,20);
for(int i=1;i<=n;i++)
if(strcmp(v[i].nume, num)==0 && strcmp(v[i].prenume, pre)==0)
{
for(int j=i;j<=n-1;j++)
v[j]=v[j+1];
n--;
}
}
void afisare_media()
{
char cl[4];
float s=0;
int nr=0;
cout<<"Clasa:";cin>>cl;
for(int i=1;i<=n;i++)
if(strcmp(v[i].clasa,cl)==0){ s=s+v[i].media; nr++;}

cout<<s/nr<<endl;
}
void primii_trei()
{
float max1=0, max2=0, max3=0;
int ind1=0,ind2=0,ind3=0;
for(int i=1;i<=n;i++){
if(v[i].media>max3) {max1=max2;
max2=max3;
max3=v[i].media;
ind1=ind2;
ind2=ind3;
ind3=i;}
else if(v[i].media>max2) {max1=max2;
max2=v[i].media;
ind1=ind2;
ind2=i;}
else if(v[i].media>max1) {max1=v[i].media;
ind1=i;}
}
cout<<"1. "<<max3<<endl;
cout<<"2. "<<max2<<endl;
cout<<"3. "<<max1<<endl;
}
int main()
{
int opt;
elev x;
do
{
cout<<"1.Initializare lista elevi:"<<endl;
cout<<"2.Adaugare elev"<<endl;
cout<<"3.Cautare elev dupa numarul matricol:"<<endl;
cout<<"4.Stergere elev dupa numar matricol"<<endl;
cout<<"5.Stergere elev dupa nume si prenume"<<endl;
cout<<"6.Afisare media clasei pentru o clasa citita de la tastatura"<<endl;
cout<<"7.Afisare numar absente pentru o clasa citita de la tastatura"<<endl;
cout<<"8.Afisare primii trei elevi din liceu"<<endl;
cout<<"9.Ordonarea elevilor descrescator dupa medie"<<endl;
cout<<"10.Ordonarea elevilor pe clase si in cadrul claselor alfabetic"<<endl;
cout<<"11.Iesire"<<endl;
cout<<endl;
cout<<"Alege o optiune:";cin>>opt;
switch (opt){
case 1:init();
break;
case 2:adaug();
break;
case 3:cautare();
break;
case 4:stergere();
break;
case 5:stergere_np();
break;
case 6:afisare_media();
break;
case 7:afisare_absente();
break;
case 8:primii_trei();
break;
}
} while(opt<11);
return 0;
}

You might also like