3
Exemple - Fişiere organizate relativ 1. Să se scrie programul care creează un fişier organizat relativ cu date despre produsele unei societăţi comerciale. Datele care se reţin despre produse sunt: denumirea, pret, cantitate (maxim 12). Cheia relativă a fişierului este codul produsului. Datele se preiau de la tastatură, sfârşitul introducerii fiind marcat standard. #include<stdio.h> typedef struct{ char denumire[20]; float pret; int cant[12]; char is; }PRODUS; int nrart(FILE *f, int l) {long p; int n; p=ftell(f); fseek(f,0,2); n=ftell(f)/l; fseek(f,p,0);return n;} void main() {FILE *f; char nume[20]; PRODUS p; int i, cod; printf("\nFisier: ");gets(nume); f=fopen(nume,"wb+"); printf("\n Cod produs"); scanf("%d",&cod); while(!feof(stdin)) {if(cod>=nrart(f,sizeof(PRODUS))) {p.is=0; fseek(f,0,2); for(i=nrart(f,sizeof(PRODUS));i<=cod;i++) fwrite(&p,sizeof(PRODUS), 1, f); } fseek(f,cod*sizeof(PRODUS),0); fread(&p,sizeof(PRODUS), 1, f); if(p.is) printf("\nExista deja un produs cu acest cod"); else{fseek(f,cod*sizeof(PRODUS),0); printf("Denumire: "); fflush(stdin);gets(p.denumire); printf("pret:"); scanf("%f",&p.pret); for(i=0;i<12;i++) {printf("Cant %d: ",i+1); scanf("%d",&p.cant[i]);} p.is=1; fwrite(&p,sizeof(PRODUS), 1, f);} printf("\nCod: "); scanf("%d",&cod);} fclose(f);} 2. Să se scrie programul care listează, într-un fişier text, produsele cu cea mai mare valoare pe an. #include<stdio.h> typedef struct{ char denumire[20]; float pret; int cant[12];

Exemple - Fisiere Organizate Relativ

Embed Size (px)

DESCRIPTION

k

Citation preview

Exemple - Fiiere organizate relativ1. S se scrie programul care creeaz un fiier organizat relativ cu date despre produsele unei societ icomerciale. Datelecaresereindespreprodusesunt:denumirea, pret, cantitate(maxim12. !"eiarelativ a fiierului este codul produsului. Datele se preiau de la tastatur, sf#ritul introducerii fiindmarcat standard. $include%stdio."&t'pedef struct(c"ar denumire)2*+,float pret,int cant)12+,c"ar is,-./0D1S,int nrart(2345 6f, int l(long p, int n,p7ftell(f, fsee8(f,*,2, n7ftell(f9l,fsee8(f,p,*,return n,-void main((2345 6f,c"ar nume)2*+, ./0D1S p, int i, cod,printf(:;n2isier: :,gets(nume,f7fopen(nume,::,printf(:;n !od produs:, scanf(:?d:,@cod,> (printf(:!ant ?d: :,i>1, scanf(:?d:,@p.cant)i+,-p.is71, f>val>7p.cant)i+6p.pret,if(val&max(fclose(g,g7fopen(nume,:>,fread(@p,sizeof(./0D1S, 1, f,-fclose(g,fclose(f,--G. S se scrie programul pentru stergerea produselor care au inregistrat productie zero Cn cel puin treiluni.$include%stdio."&t'pedef struct(c"ar denumire)2*+,float pret,int cant)12+,c"ar is,-./0D1S,void main((2345 6f, c"ar nume)2*+, ./0D1S p, int i, e, n,printf(:;n2isier: :,gets(nume,if(A(f7fopen(nume,:r=>:printf(:;n2isierul ?s nu poate fi desc"is:,nume,else(n7*,fread(@p,sizeof(./0D1S, 1, f,