Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- #include <stdio.h>
- #include <memory.h>
- #include <string.h>
- #include <math.h>
- #define max(a,b) ((a>b) ? (a) : (b))
- #define min(a,b) ((a<b) ? (a) : (b))
- typedef struct
- {
- char nume_produs[30];
- double cantitate, pret;
- } Produs;
- Produs readData(FILE *fp)
- {
- Produs input;
- if (fp)
- fscanf(fp, "%s %lf %lf", &input.nume_produs, &input.cantitate, &input.pret);
- else
- {
- fprintf(stderr, "Eroare la deschiderea fisierului.");
- exit(EXIT_FAILURE);
- }
- return input;
- }
- void printData(Produs obiect)
- {
- printf("%s %lf %lf\n", obiect.nume_produs, obiect.cantitate, obiect.pret);
- }
- int comparator(const void* obiect1, const void* obiect2)
- {
- Produs *produs1 = (Produs*)obiect1;
- Produs *produs2 = (Produs*)obiect2;
- return(produs2->pret*produs2->cantitate <= produs1->pret*produs1->cantitate);
- }
- int main()
- {
- int N;
- printf("%s", "Care este denumirea fisierului?\n");
- char str[30];
- scanf("%s", &str);
- FILE *fp = fopen(str, "rt");
- if (fp)
- {
- fscanf(fp, "%d", &N);
- Produs *sir_produse;
- sir_produse = (Produs*)malloc(N * sizeof(Produs));
- if(!sir_produse)
- {
- fprintf(stderr, "Eroare la alocarea memoriei");
- exit(EXIT_FAILURE);
- }
- for (int i = 0; i < N; ++i)
- {
- sir_produse[i] = readData(fp);
- }
- int cheapItem = 0, expensiveItem = 0;
- for (int i = 0; i < N; ++i)
- {
- if(sir_produse[cheapItem].pret >= sir_produse[i].pret)
- cheapItem = i;
- if(sir_produse[expensiveItem].pret <= sir_produse[i].pret)
- expensiveItem = i;
- }
- printData(sir_produse[cheapItem]);
- printData(sir_produse[expensiveItem]);
- FILE *fo = fopen("output.bin", "wb");
- if(fo)
- {
- qsort(sir_produse, N, sizeof(Produs), comparator);
- for(int i = 0; i < N; ++i)
- {
- printf("%s %lf %lf\n", sir_produse[i].nume_produs, sir_produse[i].cantitate, sir_produse[i].pret);
- }
- fwrite(sir_produse, sizeof(sir_produse), 1, fo);
- free(sir_produse);
- }
- else
- {
- fprintf(stderr, "Eroare la deschiderea fisierului de iesire");
- exit(EXIT_FAILURE);
- }
- return 0;
- }
- else
- {
- fprintf(stderr, "Eroare la deschiderea fisierului");
- exit(EXIT_FAILURE);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement