Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- ///Subiectul 2 de la verificare
- ///punctul a
- typedef struct Produs
- {
- char c[101];
- double pret;
- double cantitate;
- }Produs;
- void Ieftinire(Produs t[], int n, double s)
- {
- double stoc;
- int i;
- for(i=1;i<=n;i++)
- {
- stoc=t[i].pret*t[i].cantitate;
- if(stoc>s)
- {
- t[i].pret=0.9*t[i].pret;
- }
- }
- }
- int compara_produse(const void *A,const void *B)
- {
- ///( *(int*)a - *(int*)b )
- Produs *p1, *p2;
- p1 = (Produs*)A;
- p2 = (Produs*)B;
- /**
- Functia compara_produse va returna o valoare val
- Daca:
- val==0, atunci A este egal cu B
- val < 0, atunci nu se schimba ordinea lui A si B
- val > 0, atunci se schimba ordinea lui A si B
- */
- ///ordine descrescatoare a preturilor
- double stoc1, stoc2;
- stoc1 = p1->pret * p1->cantitate;
- stoc2 = p2->pret * p2->cantitate;
- if(stoc1 != stoc2)
- {
- return (stoc2 - stoc1);
- ///daca vrei sa le sortezi crescator dupa un anumit criteriu, 4
- ///returnezi primul minus al doilea
- ///daca descrescator, al doilea minus primul
- }
- else
- return strcmp(p1->c, p2->c);
- }
- int main()
- {
- Produs t[100];
- int n;
- FILE *f;
- f=fopen("date.in","r");
- fscanf(f,"%d",&n);
- char cr[2];
- fgets(cr, 2, f);//trecem cursorul pe linia urmatoare
- for(int i=1;i<=n;i++)
- {
- printf("i=%d\n", i);
- fgets(t[i].c, 100, f);
- printf("\tt[i].c == %s\n", t[i].c);
- fscanf(f, "%lf",&t[i].pret);
- fscanf(f, "%lf",&t[i].cantitate);
- fgets(cr, 2, f);//asta o apelam ca sa trecem cursorul
- //pe linia urmatoare
- }
- qsort(t+1,n, sizeof(Produs), compara_produse);
- for(int i=1;i<=n;i++)
- printf("%s %lf %lf\n",t[i].c,t[i].pret,t[i].cantitate);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement