#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();