Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <conio.h>
- #include <string.h>
- typedef struct magazin
- {
- int pret;
- char nume[20];
- }M;
- void adaugare(M *m,int *nr)
- {
- (*nr)++;
- printf("Introduceti numele produsului: ");
- fflush(stdin);
- gets((m+*nr)->nume);
- printf("Introduceti pretul produsului: ");
- scanf("%d",&(m+*nr)->pret);
- }
- void afisare(M *m,int nr)
- {
- printf("\n%s \t %d\n",(m+nr)->nume,(m+nr)->pret);
- }
- int cmp_pret(const void *a,const void *b)
- {
- struct magazin *ia=(struct magazin *)a;
- struct magazin *ib=(struct magazin *)b;
- return (int)(ia->pret-ib->pret);
- }
- int cmp_nume(const void *a,const void *b)
- {
- struct magazin *ia=(struct magazin *)a;
- struct magazin *ib=(struct magazin *)b;
- return strcmp(ia->nume,ib->nume);
- }
- void sortare_nume(M *m, int nr)
- {
- int i;
- printf("Sortare dupa nume!\n");
- qsort(m,nr+1,sizeof(M),cmp_nume);
- for(i=0;i<=nr;i++)
- afisare(&m[0],i);
- }
- void sortare_pret(M *m, int nr)
- {
- int i;
- printf("Sortare dupa pret!\n");
- qsort(m,nr+1,sizeof(M),cmp_pret);
- for(i=0;i<=nr;i++)
- afisare(&m[0],i);
- }
- int main()
- {
- M m[20];
- int (*Callback1)(int *);
- int (*Callback2)(int *);
- int optiune,i,nr=-1;
- char;
- do
- {
- printf("\n1. Adaugare produs\n");
- printf("2. Apelarea functiilor pregatitoare\n");
- printf("3. Afisarea produselor\n");
- printf("4. Sortarea produselor dupa pret in ordine crescatoare\n");
- printf("5. Sortarea produselor dupa nume in ordine alfabetica\n");
- printf("Introduceti o optiune: ");
- scanf("%d",&optiune);
- switch(optiune)
- {
- case 1:
- adaugare(&m[0],&nr);
- break;
- case 2:
- Callback1=(int*)cmp_nume;
- Callback1(&m);
- Callback2=(int*)cmp_pret;
- Callback2(&m);
- break;
- case 3:
- for(i=0;i<=nr;i++)
- afisare(&m[0],i);
- break;
- case 4:
- sortare_pret(&m[0],nr);
- break;
- case 5:
- sortare_nume(&m[0],nr);
- break;
- case 0:
- exit(0);
- default:
- printf("Optiune gresita");
- break;
- }
- }while(optiune);
- getch();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement