//*Sa se scrie o aplicatie in C pentru evidenta studentilor de la o facultate. Despre un student se cunosc urmatoarele informatii: numele, sectia, grupa (numar intreg pentru grupa, siruri de caractere pentru celelalte campuri). Programul trebuie sa permita, printr-un meniu interactiv, urmatoarele operatii (prin functii cu transfer de parametrii – parametrii obligatorii ai functiilor sunt tabloul de studenti si numarul curent de studenti):
1. Adaugarea unui student
2. Afisarea tuturor studentilor
3. Afisarea tuturor studentilor de la o anumita sectie
4. Afisarea tuturor studentilor dintr-o anumita grupa
5. Cautarea unui student dupa nume
6. Stergerea unui student dupa nume
7. Sortarea studentilor dupa nume
0. Exit
*//
#include
#include
#include
typedef struct {
char nume[20],sectia[20];
int grupa;
}student;
void citire(student *a,int *n){
printf(“introduceti numele studentului\n”);
(*n)++;
gets((a+*n)->nume);gets((a+*n)->nume);
printf(“\n”);
printf(“introduceti sectia\n”);
gets((a+*n)->sectia);
printf(“\n”);
printf(“introduceti grupa\n”);
scanf(“%d”,&((a+*n)->grupa));
printf(“\n”);
}
void afisare(student *a,int *n){
printf(“%30s \t %15s \t %5d \n”,(a+*n)->nume,(a+*n)->sectia,(a+*n)->grupa);
}
void cautsec(student *a,int *n,char x[20]){
int i;
for (i=0;i<=(*n);i++)
if (strcmp((a+i)->sectia,x)==0)
afisare(a,&i);
}
void cautgr(student *a,int *n,int c){
int i;
for (i=0;i<=(*n);i++)
if ((a+i)->grupa==c) afisare(a,&i);
}
void cautnume(student *a,int *n,char x[20]){
int i;
for (i=0;i<=(*n);i++)
if (strcmp((a+i)->nume,x)==0) afisare(a,&i);
}
void sterg(student *a,int *n,char x[30]){
int i,j,k=0;
for (i=0;i<=(*n);i++)
if (strcmp((a+i)->nume,x)==0){
k++;
for (j=i;j<(*n-k);j++)
*(a+j)=*(a+j+1);
}
*n=*n-k;
}
void sortare(student *a,int *n){
int i,k;
student *aux;
do{
k=1;
for (i=0;i<=(*n-1);i++)
if (strcmp((a+i)->nume,(a+i+1)->nume)>0){
*aux=*(a+i);
*(a+i)=*(a+i+1);
*(a+i+1)=*aux;k=0;
}
}
while (!k);
}
void main(void){
student a[100];
int opt,n=-1,i,j,g;
char x[30],y[30];
clrscr();
printf(“1: adauga un student\n”);
printf(“2: afiseaza toti studentii\n”);
printf(“3: afiseaza studentii de la o anumita sectie\n”);
printf(“4: afiseaza studentii dintr-o anumita grupa\n”);
printf(“5: cauta un student dupa nume\n”);
printf(“6: sterge un student dupa nume\n”);
printf(“7: sortarea studentiilor dupa nume\n”);
printf(“8: iesire\n\n”);
do{
printf(“introduceti optiunea\n”);
scanf(“%d”,&opt);
switch(opt){
case 1: citire(&a[0],&n);
break;
case 2: printf(“\n %30s \t %15s \t %5s \n”,”NUME”,”SECTIE”,”GRUPA”);
for (i=0;i<=n;i++)
afisare(&a[0],&i);
break;
case 3: printf(“introduceti sectia dorita\n”);
scanf(“%s”,x);
cautsec(&a[0],&n,x);
break;
case 4: printf(“grupa pe care o doriti\n”);
scanf(“%d”,&g);
cautgr(&a[0],&n,g);
break;
case 5: printf(“introduceti numele pe care doriti sa-l cautati\n”);
scanf(“%s”,y);
cautnume(&a[0],&n,y);
break;
case 6: printf(“introduceti numele stud pe care vreti sa-l stergeti\n”);
scanf(“%s”,y);
sterg(&a[0],&n,y);
afisare(&a[0],&n);
break;
case 7: sortare(&a[0],&n);
for (i=0;i<=n;i++) afisare(&a[0],&i);
break;
case 8: break;
default: printf(“cod incorect\n”);
}
}
while (opt!=8);}