Documente Academic
Documente Profesional
Documente Cultură
10
Tema lucrrii: " Fisiere si structuri n C/C++"
Scopul lucrarii:
Studierea si utilizarea tehnicilor de baza ale limbajului pentru prelucrarea si
modificarea structurilor si fisierilor.
Descrierea programului
Pentru a inscrie o variabila de tip structura in fisier se aplica urmatoarea secventa:
fwrite(& struct,dimensiunea,n,f(p)). Unde & struct este adresa structurii si apelind
numele variabilei de tip structura cu operatorul de adresa care comunica
compilatorului adresa celulei de start din memorie unde este salvata structura.
Iar dimensiunea semnifica marimea structurii. Pentru a determina marimea
structurii se foloseste functia sizeof(s) unde s este variabila de tip structura, n este
numarul de structuri care vor fi ulterior incarcate in fisier, de obicei este 1, si f(p)
este variabila pointer de tip fisier. La fel se aplica si la sintaxa de declarare a
procedeului fread (& struct,dimensiunea,n,f(p)).
Varianta 3
Mod Coala
Nr. document.
Elaborat
Verificat
Brinza Nicolai
V. Derevlenco
CPAE 525.3 07 10 ME
Semnat.
Data
Litera
Structuri si Fisiere n
C/C++
Coala
Coli
UTM.FIMET.TLC-131
Listingul Programului
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include <string.h>
struct CellMarket
{ char N[25]; float P; float G;};
FILE *f;
void Add( CellMarket *p, int n)
{ for(int i=0;i<n;i++)
{cout<<"\nIndroduceti denumirea:";cin>>(p+i)->N;
cout<<"Introduceti pretul:"; cin>>(p+i)->P;
cout<<"Indicati greutatea:"; cin>>(p+i)->G;}
}
void Afis( CellMarket *p, int n)
{for(int i=0;i<n;i++)
{ cout<<"\n"<<i+1<<".Denumirea: "<<(p+i)->N<<"
Pretul:"<<(p+i)->P<<"
Greutatea:"<<(p+i)->G;}
}
void CDa( CellMarket *p, int n)
{ f=fopen("cellmarket.txt","r");
char d[25];
cout<<"Introduceti denumirea aleasa:"; cin>>d; int i=0;
while(fread((p+i),sizeof(*(p+i)),1,f)==1)
{if(strcmp(d,(p+i)->N)==0)
{ cout<<"Denumirea: "<<(p+i)->N<<"
Pretul:"<<(p+i)->P<<"
Greutatea:"<<(p+i)->G; i++;}
} fclose(f);
}
void CDb( CellMarket *p, int n)
{float min=p->P; float max=p->P;
int s=0,k=0;
Coala
Mod Coala Nr. document
Semnat.
Data
CPAE 525.3 07 10 ME
3
for(int i=0;i<n;i++)
{ if(min>(p+i)->P) {min=(p+i)->P;s++;} }
for(int i=0;i<n;i++)
{ if(max<(p+i)->P) {max=(p+i)->P;k++;}}
*(p+n)=*(p+s); *(p+s)=*(p+k); *(p+k)=*(p+n);
}
for(int i=0;i<n-1;i++)
Pretul:"<<(p+i)->P<<"
Coala
Mod Coala Nr. document
Semnat.
Data
CPAE 525.3 07 10 ME
3
f=fopen("cellmarket.txt","a");
for(int i=0;i<k;i++)
{ cout<<"\nIndroduceti denumirea:";cin>>(p+i)->N;
cout<<"Introduceti pretul:"; cin>>(p+i)->P;
cout<<"Indicati greutatea:"; cin>>(p+i)->G;
fwrite((p+i),sizeof(*(p+i)),1,f);}
fclose(f); }
void Modific( CellMarket *p)
{ int v;
cout<<"Introduceti casuta pe care doriti sa o modificati:"; cin>>v;
cout<<"\nIndroduceti denumirea:";cin>>(p+v-1)->N;
cout<<"Introduceti pretul:"; cin>>(p+v-1)->P;
cout<<"Indicati greutatea:"; cin>>(p+v-1)->G;}
void main()
{CellMarket C[100]; int q,t;
cout<<"Introduceti numarul de inscrieri:"; cin>>q;
Add(C,q); Save(C,q);
printf("\n\n1)Cautarea detaliilor dupa denumire. \n2)Schimbarea cu locul a
inscrierile cu pretul minim
CDa(C,q); break;}
case 2: { clrscr();
CDb(C,q);Save1(C,q); Afis(C,q);break;}
case 3: { clrscr();
case 4: { clrscr();
Adaug(C);Save1(C,q);Read(C);Afis(C,q); break;}
Rezultatul executiei!
Coala
Mod Coala Nr. document
Semnat.
Data
CPAE 525.3 07 10 ME
3
Concluzie:
Datorita metodelor de rezolvare a problemei,informatia de volum
mare poate fi incarcata in structura si cu ajutorul fisierurilor se poate salva
informatia pina cand nu este solicitata, Folosirea structurilor si pointerilor
precum si fisierilor conduce la ntrun program scade considerabil gradul
de complicitate a programului si vizualizarea mai clara a informatiei
incarcate.
Coala
Mod Coala Nr. document
Semnat.
Data
CPAE 525.3 07 10 ME
3