Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <conio.h>
- //1. Afisare date studenti in fisier binar organizat relativ
- //2. Afisare produsul cel mai profitabil pe an
- typedef struct {
- char denumire[20];
- float pret;
- int cant[12]; //12 luni
- char stare; }Produs;
- int nr_spatii_produse(FILE *f, int l)
- {
- fseek(f,0,SEEK_END);
- int n=ftell(f)/l;
- return n;
- }
- void main()
- {
- //1.////////////////////////////////////////////////////////
- FILE *f;
- int cod;
- Produs prod;
- char nume_fis[30];
- printf("Numele fisierului binar este: ");
- gets(nume_fis);
- f=fopen(nume_fis,"wb+");
- printf("\nCodul produsului: ");
- scanf("%d", &cod);
- while(!feof(stdin)){
- //se verifica daca s-a creat spatiul pana la codul introdus
- if(cod>= nr_spatii_produse(f, sizeof(Produs)))
- {
- prod.stare=0;
- fseek(f,0,SEEK_END);
- for(int i=nr_spatii_produse(f, sizeof(Produs));i<=cod;i++)
- fwrite(&prod,sizeof(Produs),1,f);
- }
- fseek(f,cod*sizeof(Produs),SEEK_SET);
- fread(&prod,sizeof(Produs),1,f);
- //se verifica daca produsul exista deja
- if(prod.stare) printf("Produsul exista deja in fisier!");
- else {
- fseek(f,cod*sizeof(Produs),SEEK_SET);
- printf("\nDenumire produs: "); scanf("%s",&prod.denumire);
- printf("Pret: "); scanf("%d",&prod.pret);
- for(int j=0;j<12;j++){
- printf("Cantitate[%d]: ",j);
- scanf("%d",&prod.cant[j]);}
- prod.stare=1;
- fwrite(&prod,sizeof(Produs),1,f);
- }
- printf("\n\nCodul produsului: ");
- scanf("%d", &cod);
- }
- fclose(f);
- //2.////////////////////////////////////////////////////////////////
- FILE *g;
- f=fopen(nume_fis,"rb");
- char nume_fis2[30];
- printf("Numele fisierului text este: ");
- gets(nume_fis2);
- g=fopen(nume_fis2,"w");
- if(!f) printf("Fisierul nu a putut fi deschis!");
- else {
- int max=0;
- int cod_max=0;
- char *nume_prod=NULL;
- //Produs p;
- for(int i=0;i<nr_spatii_produse(f, sizeof(Produs));i++){
- int suma=0;
- fread(&prod,sizeof(Produs),1,f);
- if(prod.stare){
- for(int j=0;j<12;j++)
- suma+=prod.pret*prod.cant[j];
- printf("ceva %d ",prod.pret);
- if(max<suma) {max=suma; cod_max=i; nume_prod=prod.denumire;}
- }
- }
- //rewind(f);
- for(int i=0;i<nr_spatii_produse(f, sizeof(Produs));i++)
- if(cod_max==i) fprintf(g,"Cel mai profitabil produs a strans %d lei in ultimul an si este:\n %d %s", max, cod_max, &nume_prod);
- }
- fclose(f);
- fclose(g);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement