Am acest exercitiu, va rog ajutati-ma nu reusesc sa rearanjez elevii in ordinea crescatoare
----------------------------------------------------------------------
Într-un fișier text sunt scrise următoarele informații:pe primul
rând numărul de elevi din clasă, n, iar pe următoarele n rânduri, pentru fiecare
elev, mediile semestriale la disciplina informatică. În cadrul unui rând, mediile
sunt separate prin spațiu.Fiecare elev se identifică prin numărul de ordine la
citirea din fișier.
- Se citesc datele din fișier și se calculează media anuală a fiecărui elev;
- Pentru identificatorul unui elev, citit de la tastatură, se afișează mediile
semestriale și media anuală;
- Se rearanjează elevii în ordinea crescătoare a mediilor și se afișează
mediile fiecărui elev;
- Se scriu informațiile obținute în urma prelucrărilor într-un alt fișier.
-------------------------------------------------------------------------------------
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
ifstream f("elevi.in");
ofstream g("elevi.out");
int n;
float mf[101],m1[101],m2[101],ma[101];
void quicksort(int p,int u)
{
if(p<u)
{
int m,i=p,j=u,pi=0,pj=1;
while(i<j)
{
if(ma>ma[j])
{
swap(ma,ma[j]);
swap(pi,pj);
}
i=i+pi;
j=j-pj;
}
m=i;
quicksort(p,m-1);
quicksort(m+1,u);
}
}
int dei(int p,int u,float x)
{
int m;
if(p<=u)
{
m=(p+u)/2;
if(mf[m]==x)
return m;
else
if(x>mf[m])
return dei(m+1,u,x);
else
return dei(p,m-1,x);
}
else
return 0;
}
int main()
{
int i;
f>>n;
for(i=1;i<=n;i++)
{
f>>m1;
f>>m2;
}
for(i=1;i<=n;i++)
{
mf=(m1+m2)/2;
ma=(m1+m2)/2;
}
cout<<setprecision(2)<<fixed;
cout<<"Vreau sa vad mediile la elevul:";cin>>i;
if(i>n)
g<<"nu exista elevul "<<i;
else
g<<m1<<" "<<m2<<" "<<mf<<endl;
quicksort(1,n);
for(i=1;i<=n;i++)
cout<<ma<<" ";
cout<<endl;
for(i=1;i<=n;i++)
cout<<"elevul "<<dei(1,n,ma)<<" cu media"<<mf[dei(1,n,ma)]<<endl;
}
