118 afișări Rîmbu SORIN (SorinRimbu) 12 mai
www.pbinfo.ro
Etichete: nicio etichetă

#include
#include
#include
#include

using namespace std;

ifstream fin(“elevi.in”);
ofstream fout(“elevi.out”);

struct nod{ struct {; char nume256; char clasa4; double medie; }inf; nod *urm;
}*p, *u;

void addFront(char nume[], char clasa[], double medie, nod *&p, nod *&u){ if(!p){ p = new nod; strcpy((*p).inf.nume, nume); strcpy((*p).inf.clasa, clasa); (*p).inf.medie = medie; (*p).urm = NULL; u = p; } else{ nod *q = new nod; strcpy((*q).inf.nume, nume); strcpy((*q).inf.clasa, clasa); (*q).inf.medie = medie; (*q).urm = NULL; (*u).urm = q; u = q; }
}

void read(int &n){ fin >> n; fin.get(); while(n—){ char nume50; fin >> nume; fin.get();

char clasa10; fin >> clasa; fin.get(); double medie; fin >> medie; fin.get(); addFront(nume, clasa, medie, p, u); } }

void cerinta1(){ int k = 0; for(nod *i = p; i; i = (*i).urm) if((*i).inf.medie >= 9)k++; fout << k;
}

void sterge(nod *&i){ if(p == i){ nod *aux = p; p = (*p).urm; delete aux; } else{ nod *aux = i->urm; i->urm = i->urm->urm; delete aux; }
}

void cerinta2(){ for(nod *i = p; i && i->urm; i = (*i).urm) if((double)(*(*i).urm).inf.medie < 5) sterge(i); if((*p).inf.medie < 5) sterge(p);
}

void cerinta3(){ for(nod *i=p; i; i=(*i).urm) fout << (*i).inf.nume << “ “ << (*i).inf.clasa << “ “ << (*i).inf.medie << “\n”;
}

void schimba(nod *&i, nod *&j){ swap(i->inf.medie, j->inf.medie); swap(i->inf.clasa, j->inf.clasa); swap(i->inf.nume, j->inf.nume);
}

void sortareList_lexicografic(nod *&p, nod*&u){ for(nod *i = p; (*i).urm; i = (*i).urm) for(nod *j = i->urm; j; j = (*j).urm){ char clasa14, clasa24; strcpy(clasa1, (*i).inf.clasa); strcpy(clasa2, (*j).inf.clasa);

if(strcmp(clasa1, clasa2) > 0) schimba(i, j); else if(strcmp(clasa1, clasa2) == 0 && strcmp(i->inf.medie, j->inf.medie) < 0){ swap(i->inf.medie, j->inf.medie); swap(i->inf.nume, j->inf.nume); } }

}

void cerinta4(){ sortareList_lexicografic(p, u);
}

void display(){

for(nod *i=p; i; i=(*i).urm) fout << (*i).inf.nume << “ “ << (*i).inf.clasa << “ “ << (*i).inf.medie << “\n”; }

int main()
{ int n; read(n); display();

cerinta1(); cerinta2(); cerinta3(); cerinta4(); display(); return 0; }

118 afișări Rîmbu SORIN (SorinRimbu) 12 mai
www.pbinfo.ro
Du-te sus!