•danimnd
Strain
Karma: 0
Deconectat
Mesaje: 1
|
|
« : Februarie 24, 2019, 19:42:35 » |
|
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; }
|