Skip to content

Instantly share code, notes, and snippets.

@alexchirea
Created February 17, 2019 13:51
Show Gist options
  • Save alexchirea/d1755b3eb8dbcbefa32b5cdef908fd4c to your computer and use it in GitHub Desktop.
Save alexchirea/d1755b3eb8dbcbefa32b5cdef908fd4c to your computer and use it in GitHub Desktop.
#include <iostream>
using namespace std;
struct elev {
char nume[20];
float medie;
struct elev *urm;
};
struct elev *start=0, *stop=0;
void insersare(char n[20], float m) {
struct elev *nod = new struct elev;
nod->medie = m;
strcpy(nod->nume, n);
nod->urm = 0;
if(start == NULL) {
start = stop = nod;
return;
}
else {
stop->urm = nod;
stop = nod;
return;
}
}
void afisare() {
struct elev *p = start;
while (p!=0) {
cout << p->nume << ' ' << p->medie << endl;
p=p->urm;
}
return;
}
float mediaClasei() {
// parcurge toata lista
// returneaza media clasei
struct elev *p = start;
float medie = 0;
int k = 0;
while (p)
{
medie += p->medie;
k++;
p = p-> urm;
}
return medie / k;
}
float sumaclasa (struct elev* a)
{
if (!a)
return 0;
else
return a->medie +sumaclasa(a->urm);
}
void stergere (char a[20])
{
struct elev * b , *aux, *ant;
ant = b = start;
while (b) {
if (strcmp(b->nume, a) == 0)
{
if (start == b)
{
aux = start;
start = start->urm;
delete aux;
}
else if (stop == b)
{
ant->urm=0;
stop=ant;
delete b;
return;
}
else {
aux=b;
ant->urm=b->urm;
delete aux;
}
b=ant;
}
ant=b;
b=b->urm;
}
}
int main() {
insersare("andrei", 8.55);
insersare("alex", 12.00);
insersare("Bogdan" , 6.52);
insersare("Catalin" , 8.64);
stergere("Catalin");
afisare();
cout<<sumaclasa(start);
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment