Documente Academic
Documente Profesional
Documente Cultură
Program
Program
p->urm=NULL;
if(prim==NULL)
return p;
else
{
q=prim;
while(q->urm!=NULL)
q=q->urm;
q->urm=p;
}
return prim;
}
void afisare(nod *prim)
{
nod* p;
p=prim;
while(p!=NULL)
{
if(strcmp(p->sectie, "IS")==0)
printf("%s %d %s %s %d\n",
>nr_examene_promovate);
else
printf("%s %d %s %s %d\n",
>nr_examene_nepromovate);
p=p->urm;
}
}
void afisare_IS(nod *prim)
{
nod* p;
p=prim;
while(p!=NULL)
{
if(strcmp(p->sectie, "IS")==0)
printf("%s %d %s %s %d\n",
>nr_examene_promovate);
p=p->urm;
}
}
void afisare_CTI(nod *prim)
{
nod* p;
p=prim;
while(p!=NULL)
{
if(strcmp(p->sectie, "CTI")==0)
printf("%s %d %s %s %d\n",
>nr_examene_nepromovate);
p=p->urm;
}
}
void sortare_nume(nod *prim)
{
nod *p;
char nume[30], decan[30], sectie[30];
int an, prom, neprom, ok;
p=(nod *)malloc(sizeof(nod));
do{
ok=1;
p=prim;
while(p->urm!=NULL)
{
if(strcmp(p->sectie,"IS")==0 && strcmp(p->nume, p->urm->nume)>0)
{
strcpy(nume, p->nume);
strcpy(p->nume, p->urm->nume);
strcpy(p->urm->nume, nume);
an=p->an;
p->an=p->urm->an;
p->urm->an=an;
strcpy(decan, p->decan);
strcpy(p->decan, p->urm->decan);
strcpy(p->urm->decan, decan);
strcpy(sectie, p->sectie);
strcpy(p->sectie, p->urm->sectie);
strcpy(p->urm->sectie, sectie);
prom=p->nr_examene_promovate;
p->nr_examene_promovate=p->urm->nr_examene_promovate;
p->urm->nr_examene_promovate=prom;
ok=0;
}
p=p->urm;
}
}while(!ok);
do{
ok=1;
p=prim;
while(p->urm!=NULL)
{
if(strcmp(p->sectie,"CTI")==0 && strcmp(p->nume, p->urm->nume)>0)
{
strcpy(nume, p->nume);
strcpy(p->nume, p->urm->nume);
strcpy(p->urm->nume, nume);
an=p->an;
p->an=p->urm->an;
p->urm->an=an;
strcpy(decan, p->decan);
strcpy(p->decan, p->urm->decan);
strcpy(p->urm->decan, decan);
strcpy(sectie, p->sectie);
strcpy(p->sectie, p->urm->sectie);
strcpy(p->urm->sectie, sectie);
prom=p->nr_examene_nepromovate;
p->nr_examene_nepromovate=p->urm>nr_examene_nepromovate;
p->urm->nr_examene_nepromovate=prom;
}
p=p->urm;
}
}while(!ok);
ok=0;
}
void sortare_nr_examene(nod *prim)
{
nod *p;
char nume[30], decan[30], sectie[30];
int an, prom, neprom, ok;
p=(nod *)malloc(sizeof(nod));
do{
ok=1;
p=prim;
while(p->urm!=NULL)
{
if(strcmp(p->sectie,"IS")==0 && p->nr_examene_promovate>p->urm>nr_examene_promovate)
{
strcpy(nume, p->nume);
strcpy(p->nume, p->urm->nume);
strcpy(p->urm->nume, nume);
an=p->an;
p->an=p->urm->an;
p->urm->an=an;
strcpy(decan, p->decan);
strcpy(p->decan, p->urm->decan);
strcpy(p->urm->decan, decan);
strcpy(sectie, p->sectie);
strcpy(p->sectie, p->urm->sectie);
strcpy(p->urm->sectie, sectie);
prom=p->nr_examene_promovate;
p->nr_examene_promovate=p->urm->nr_examene_promovate;
p->urm->nr_examene_promovate=prom;
ok=0;
}
p=p->urm;
}
}while(!ok);
do{
ok=1;
p=prim;
while(p->urm!=NULL)
{
if(strcmp(p->sectie,"CTI")==0 && p->nr_examene_nepromovate<p->urm>nr_examene_nepromovate)
{
strcpy(nume, p->nume);
strcpy(p->nume, p->urm->nume);
strcpy(p->urm->nume, nume);
an=p->an;
p->an=p->urm->an;
p->urm->an=an;
strcpy(decan, p->decan);
strcpy(p->decan, p->urm->decan);
strcpy(p->urm->decan, decan);
strcpy(sectie, p->sectie);
strcpy(p->sectie, p->urm->sectie);
strcpy(p->urm->sectie, sectie);
>nr_examene_nepromovate;
neprom=p->nr_examene_nepromovate;
p->nr_examene_nepromovate=p->urmp->urm->nr_examene_nepromovate=neprom;
ok=0;
}
p=p->urm;
}
}while(!ok);
}
void cautare_numar(nod *prim, int nr)
{
nod* p;
p=prim;
while(p!=NULL)
{
if(p->nr_examene_nepromovate > nr && strcmp(p->sectie, "CTI")==0)
printf("%s %d %s %s %d\n", p->nume, p->an, p->decan, p->sectie, p>nr_examene_nepromovate);
p=p->urm;
}
}
int main()
{
int opt, nr;
nod *prim;
prim = NULL;
do{
printf("\n1.Adaugare student;\n");
printf("2.Afisare studenti;\n");
printf("3.Ordonare dupa nume pe sectii\n");
printf("4.Ordonare sectia IS crescator dupa nr de examene promovate\n");
printf(" Ordonare sectia CTI descrescator dupa nr de examene nepromovate\n");
printf("5.Afisarea sectia CTI pt nr de examene nepromovate mai mare ca un
numar dat\n");
printf("0.Exit\n");
printf("Introdu optiunea:\n");
scanf("%d",&opt);
switch(opt)
{
case 1:
prim=adauga(prim);
break;
case 2:
afisare(prim);
break;
case 3:
sortare_nume(prim);
printf("\nSectia IS :\n");
afisare_IS(prim);
printf("\nSectia CTI :\n");
afisare_CTI(prim);
break;
case 4:
case 5:
sortare_nr_examene(prim);
printf("\nSectia IS :\n");
afisare_IS(prim);
printf("\nSectia CTI :\n");
afisare_CTI(prim);
break;
printf("Dati numarul de examene nepromovate");
scanf("%d", &nr);
cautare_numar(prim, nr);
break;
}
}while(opt!=0);
getch();
return 0;
}