Orar semigroup #2

Orar semigroup #2

15 decembrie

Se citeşte din fişierul "elevi.in" un număr n şi n linii de forma:
Nume Prenume Clasa Varsta MedieGenerala
a) să se afişeze elevii
b) să se afişeze elevii cu media cea mai mare
c) să se afişeze elevii ordonaţi descrescător după vârstă
d) să se afişeze elevii ordonaţi descrescător după nume şi prenume
e) să se afişeze media generală a fiecărei clase

#include<iostream>
#include<fstream>
using namespace std;
struct elev
{char nume[100],prenume[100],clasa[5];
int varsta;
float mg;};

struct medie
{char cls[100];
float nr;};

int main()

{int i,j=0,n,k,ok,r;
float p;
elev e[100],aux;
medie m[100];

ifstream f("elevi.in");
f>>n;

for(i=0;i<n;i++)
{f>>e[i].nume>>e[i].prenume>>e[i].clasa>>e[i].varsta>>e[i].mg;
cout<<e[i].nume<<" "<<e[i].prenume<<endl;}
p=0;
cout<<endl<<"Media cea mai mare"<<endl;
for(i=0;i<n;i++)
    if(e[i].mg>p)p=e[i].mg;
for(i=0;i<n;i++)
    if(e[i].mg==p)cout<<e[i].nume<<" "<<e[i].nume<<endl;
cout<<endl<<"Descrescator dupa varsta"<<endl;
for(i=0;i<n;i++)
    for(j=i+1;j<n;j++)
        if(e[i].varsta<e[j].varsta)
        {aux=e[i];e[i]=e[j];e[j]=aux;}
for(i=0;i<n;i++)
    cout<<e[i].nume<<" "<<e[i].prenume<<endl;
cout<<endl<<"Descrescator dupa nume si prenume"<<endl;
for(i=0;i<n;i++)
    for(j=i+1;j<n;j++)
        if(strcmp(e[i].nume,e[j].nume)<0)
            {aux=e[i];e[i]=e[j];e[j]=aux;}
        else if(strcmp(e[i].nume,e[j].nume)==0)
            if(strcmp(e[i].prenume,e[j].prenume)<0)
            {aux=e[i];e[i]=e[j];e[j]=aux;}
for(i=0;i<n;i++)
    cout<<e[i].nume<<" "<<e[i].prenume<<endl;

strcpy(m[0].cls,e[0].clasa);
j=1;
for(i=0;i<n;i++)
{    ok=1;
    for(k=0;k<j;k++)
        if(strcmp(e[i].clasa,m[k].cls)==0)ok=0;
          
    if(ok==1)
    {strcpy(m[j].cls,e[i].clasa);
    j++;}
}
cout<<endl<<endl;
for(i=0;i<j;i++)
    cout<<m[i].cls<<endl;

for(k=0;k<j;k++)
{    m[k].nr=0;r=0;  
    for(i=0;i<n;i++)
        if(strcmp(e[i].clasa,m[k].cls)==0)
            {m[k].nr=m[k].nr+e[i].mg;r++;}
m[k].nr=m[k].nr/r;
}
cout<<endl<<endl;
for(k=0;k<j;k++)
    cout<<m[k].cls<<" "<<m[k].nr<<endl;

}
Fişierul
10
Muresan Mihai XA 16 10
Vanea Sergiu XA 16 6.76
Dodel Aristotel XB 18 9.14
Martinica Cristian XC 15 7.87
Florian Walter XD 56 10
Niculescu Claudiu XA 34 6.18
Jaan Kronkamp XC 42 7.86
Diego Armando XD 45 6.88
Victor Ciutacu XB 40 7.66
Mircea Badea XA 45 9.29

miercuri, 15 decembrie 2010 by DlMuresan
Categories: , , , | Leave a comment

Leave a Reply