Sunteți pe pagina 1din 3

#include <iostream>

#include<string.h>
using namespace std;
struct elev
{
char nume[256];
float m1,m2,mg;
};
elev v[50];
int n,i;
void adaugare( elev v[50], int &n)
{
cin.get();
cout<<"numele noului elev ";
cin.get(v[n+1].nume,256); cin.get();
cout<<"dati media semestrului I ";
cin>>v[n+1].m1;
cin.get();
cout<<"dati media semestrului II ";
cin>>v[n+1].m2;
v[n+1].mg=(v[n+1].m1+v[n+1].m2)/2;
n++;
}
void listare( elev v[50], int n)
{
for(int i=0;i<n;i++)
cout<<"elevii sunt : "<<v[i].nume<<" "<<v[i].m1<<" "<<v[i].m2<<" "<<v[i]
.mg<<" "<<endl;
}
void sort_alf (elev v[],int n)
{
int i,ok;
elev aux;
do{
ok=0;
for(i=0;i<n-1;i++)
if(strcmp(v[i].nume,v[i+1].nume)>0)
{
aux=v[i];
v[i]=v[i+1];
v[i+1]=aux;
ok=1;
}
}
while(ok);
}
void sortcresc (elev v[],int n)
{
int i,ok;
elev aux;
do{
ok=0;
for(i=0;i<n-1;i++)
if(v[i].mg>v[i+1].mg)
{
aux=v[i];
v[i]=v[i+1];
v[i+1]=aux;
ok=1;
}
}
while(ok);
}
void sortdesc (elev v[],int n)
{
int i,ok;
elev aux;
do{
ok=0;
for(i=0;i<n-1;i++)
if(v[i].mg<v[i+1].mg)
{
aux=v[i];
v[i]=v[i+1];
v[i+1]=aux;
ok=1;
}
}
while(ok);
}
void corigenti(elev v[], int n)
{
int i;
for(i=0;i<n;i++)
if(v[i].mg<5)
cout<<"elevii corigenti sunt : "<<v[i].nume<<" "<<v[i].m1<<" "<<
v[i].m2<<" "<<v[i].mg<<" ";
}
int main()
{
int o;
cout<<"Se da un numar de elevi ";
cin>>n;
for(i=-1;i<n-1;)
adaugare(v,i);
cout<<"Alegeti una din urmatoarele optiuni: \n";
cout<<"1, introducere elev nou ";
cout<<"\n 2, afisare elevi ";
cout<<"\n 3, afisare ordine alfabetica ";
cout<<"\n 4, afisare ordine crescatoare a mediilor ";
cout<<"\n 5, afisare ordine crescatoare a mediilor ";
cout<<"\n 6, afisare elevi corigenti ";
do
{
switch(o)
{
case 1: adaugare(v,n); break;
case 2: listare(v,n); break;
case 3:
sort_alf(v,n);
listare(v,n);break;
case 4: sortcresc(v,n);
listare(v,n); break;
case 5: sortdesc(v,n);
listare(v,n);
case 6: corigenti (v,n);
}
cout<<"alegeti o optiune: ";
cin>>o;
}
while(o<=6&&o>=1);
return 0;
}

S-ar putea să vă placă și