Documente Academic
Documente Profesional
Documente Cultură
Facultate
Lucrare de laborator
la disciplina : Structuri de date și algoritmi
Tema : Fișiere . Lucru cu fișiere.
Chișinău 2019
Scopul lucrării
Implimentarea în practică a cunoștințelor teoretice obținute la disciplina structuri de date
și algoritmi . Analiza datelor , crearea unui program ce ar permite de a lucra cu fișierele.
Aplicarea operațiilor și activităților cu fișiere în practică .
Sarcina lucrării
- creare fișier
- afișarea din fișier a datelor
- adăugarea
- afișarea selectivă ( după un criteriu)
- corectarea
- ieșire.
Codul sursă
#include<stdio.h>
#include<stdlib.h>
FILE *f;
char proiect[50];
struct companie_de_constructie {
char nume_companie[55];
char denumire_lucrarii[65];
int nr_proiecte;
long anul_executarii;
} lista1,lista2;
int i,n;
int creare(void)
scanf("%d",&n);
f=fopen("companie_de_constructie.inf","w");
for(i=0;i<n;i++)
scanf("%15s",lista1.nume_companie);
fflush(stdin);
scanf("%15s",lista1.denumire_lucrarii);
fflush(stdin);
scanf("%d",&lista1.nr_proiecte);
fflush(stdin);
scanf("%d",&lista1.anul_executarii);
scanf("%d",&lista1.timp_executare);
lista1.taxa=lista1.timp_executare*2;
fwrite(&lista1,sizeof(lista1),1,f);
fclose(f);
return 0;
// ########################################
// ########################################
int corectare()
int nn;
int k;
int i=0;
char edit[30];
l1:
printf("Introdu proiect \n");
scanf("%s",edit);
scanf("%s",edit);
fflush(stdin);
scanf("%d",&k);
//scanf("%d",nr_proiecte);
f=fopen("companie_de_constructie.inf","r+");
while(i<k)
scanf("%d",&nn); fflush(stdin);
fseek(f,(nn-1)*sizeof(lista2),SEEK_SET);
fread(&lista2,sizeof(lista2),1,f);
scanf("%d",&lista2.timp_executare);
lista2.taxa=lista2.timp_executare*2;
fseek(f,(nn-1)*sizeof(lista2),SEEK_SET);
fwrite(&lista2,sizeof(lista2),1,f);
i++;
fclose(f);
return 0;
int afisare(void)
{
char edit[30];
l1:
scanf("%s",edit);
scanf("%s",edit);
f=fopen("companie_de_constructie.inf","r");
printf("=====================================================================
=====================================\n");
printf("=====================================================================
=====================================\n");
i=1;
fread(&lista2,sizeof(lista2),1,f);
while (!feof(f) )
printf("|%4d |%-15s | %s | %d | %d
| %d | %2 %d\n",
i++,
lista2.nume_companie,
lista2.denumire_lucrarii,
lista2.nr_proiecte,
lista2.anul_executarii,
lista2.timp_executare,
lista2.timp_executare*2);
fread(&lista2,sizeof(lista2),1,f);
printf("=====================================================================
================================================\n");
printf("\n");
fclose(f);
return 0;
// ########################################
// ########################################
int afis_select()
int min;
char edit[30];
l1:
scanf("%s",edit);
scanf("%s",edit);
scanf("%d",&min);
f=fopen("companie_de_constructie.inf","r");
printf("=====================================================================
==============================================\n");
printf("| Nr | Nume companie | Denumire lucrarii | Numar de
proiecte | Anul executarii | Timp de executare| Taxa \n");
printf("=====================================================================
==============================================\n");
i=1;
fread(&lista2,sizeof(lista2),1,f);
while (!feof(f) )
if (lista2.timp_executare>min)
printf("|%4d |%-15s | %s | %d | %d |
%d | %2f %d\n",
i++,
lista2.nume_companie,
lista2.denumire_lucrarii,
lista2.nr_proiecte,
lista2.anul_executarii,
lista2.timp_executare,
lista2.timp_executare*2);
fread(&lista2,sizeof(lista2),1,f);
printf("=====================================================================
============================================\n");
fread(&lista2,sizeof(lista2),1,f);
printf("\n");
fclose(f);
return 0;
// ########################################
// ########################################
int adaugare(void)
scanf("%d",&n);
scanf("%s",proiect);
//scanf("%f",&nr_proiecte);
f=fopen("companie_de_constructie.inf","a");
for(i=0;i<n;i++)
scanf("%15s",lista1.nume_companie);
fflush(stdin);
scanf("%15s",lista1.denumire_lucrarii);
fflush(stdin);
scanf("%d",&lista1.nr_proiecte);
fflush(stdin);
scanf("%d",&lista1.anul_executarii);
scanf("%d",&lista1.timp_executare);
lista1.taxa=lista1.timp_executare*2;
fwrite(&lista1,sizeof(lista1),1,f);
fclose(f);
return 0;
}
// ########################################
// ########################################
int main(void)
int optie;
while (1)
printf("\n\n M E N I U\n");
scanf("%d",&optie); fflush(stdin);
switch (optie)
case 6: exit(1);
} }
return 0;
}
Testarea programului.
2. Afișarea conținutului
3. Corectarea fișierului :
și când accesăm din nou conținutul fișierului vedem modificările făcute :
4. Afișarea selectivă
5.Adaugarea
Afisarea