Sunteți pe pagina 1din 8

Universitatea Tehnică a Moldovei

Facultatea Calculatoare, Informatică și Microelectronică


Specialitatea Tehnologii Informaționale

RAPORT
La lucrarea de laborator nr.4
Tema: “Structuri de date. Fişiere şi înregistrări”
Disciplina: “Programarea calculatoarelor”

A elaborat : st. gr. TI-221 F/R, Grosu Sergiu


A verificat : Asistent universitar, Mantaluța Marius

Chisinau 2023
Tema: Structuri de date. Fişiere şi înregistrări.

Scopul lucrării: Însuşirea, folosirea şi obţinerea deprinderii practice de elaborare şi


depanare a programelor cu structuri, la fel și scrierea, citirea și manipularea fișierelor.

Sarcina: Să se elaboreze schema bloc și programul care ar îndeplini următoarele


sarcini.
Varianta: 9
Să se creeze fişierul registrul fişierelor. Introduceţi într-un fişier separat înregistrările referitor la
fişierele, create înainte de data indicată

Schema bloc al programului:

START

struct file
files[MAX
_FILES];

int n, i, j;
char filename[100];
FILE *fp, *registry;

printf("Enter the
number of files: ");

scanf("%d", &n);

2
2

i=0

3 i++ i < n; i=0

printf("Enter the file i++ i < n;


name (8 characters): ");

6 j=i+1 7

scanf("%s",
j++ j < n; 6
files[i].name);

5
printf("Enter the file
name (8 characters): ");
strcmp(files
[i].name,
files[j].nam
e) > 0

scanf("%s",
files[i].name);

struct file temp files[i];


printf("Enter the file
files[i] = files[j];
specification (3
files[j] = temp;
characters): ");

scanf("%s",
files[i].spec);

3
3

printf("Enter the creation


date (dd mm yy): ");

scanf("%d %d %d",
&files[i].day, &files[i].month,
&files[i].year);

printf("Enter the number


of blocks: ");

scanf("%d",
&files[i].blocks);

4
7

registry =
fopen("registry.txt", "w");

registry
==
NULL

printf("Enter the cutoff


printf("Error opening file date (dd mm yy): ");
registry\n");

retur scanf("%d %d
n 1; %d", &i, &j, &n);

i=0

fclose(reg
i < n; 8
i++ istry);

files[i].year < n || fprintf(registry, "%-8s %-3s


(files[i].year == n &&
files[i].month < j) || %02d%02d%02d %d\n",
(files[i].year == n &&
files[i].month == j && files[i].name, files[i].spec,
files[i].day < i) files[i].day,
files[i].month, files[i].year,
files[i].blocks);
8

printf("File registry
created successfully\n");

retur
n 0;

STOP

struct file
files[MAX_FIL
ES];

char name[9];
char spec[4];
int day;
int month;
int year;
int blocks;

1
Listingul programului:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_FILES 100

struct file {
char name[9];
char spec[4];
int day;
int month;
int year;
int blocks;
};

int main() {
struct file files[MAX_FILES];
int n, i, j;
char filename[100];
FILE *fp, *registry;

// Read file records from user input


printf("Enter the number of files: ");
scanf("%d", &n);
for (i = 0; i < n; i++) {
printf("Enter the file name (8 characters): ");
scanf("%s", files[i].name);
printf("Enter the file specification (3 characters): ");
scanf("%s", files[i].spec);
printf("Enter the creation date (dd mm yy): ");
scanf("%d %d %d", &files[i].day, &files[i].month, &files[i].year);
printf("Enter the number of blocks: ");
scanf("%d", &files[i].blocks);
}

// Sort the file records by name


for (i = 0; i < n; i++) {
for (j = i + 1; j < n; j++) {
if (strcmp(files[i].name, files[j].name) > 0) {
struct file temp = files[i];
files[i] = files[j];
files[j] = temp;
}
}
}

// Open the file registry for writing


registry = fopen("registry.txt", "w");
if (registry == NULL) {
printf("Error opening file registry\n");
return 1;
}

// Write the records of files created before the indicated date


printf("Enter the cutoff date (dd mm yy): ");
scanf("%d %d %d", &i, &j, &n);
for (i = 0; i < n; i++) {
if (files[i].year < n || (files[i].year == n && files[i].month < j)
|| (files[i].year == n && files[i].month == j && files[i].day < i)) {
fprintf(registry, "%-8s %-3s %02d%02d%02d %d\n", files[i].name, files[i].spec,
files[i].day, files[i].month, files[i].year, files[i].blocks);
}
}

// Close the file registry


fclose(registry);

printf("File registry created successfully\n");

return 0;
}

Rezultatul compilării și rulării:

Concluzia:
Acest program solicita mai intai utilizatorului sa introduca numarul de fisiere care urmeaza sa fie
inregistrate si apoi solicita detalii despre fiecare fisier. Apoi sorteaza inregistrarile fisierelor dupa
nume folosind un algoritm simplu de sortare cu bule. La acest laborator am invatat sa creeze fisiere,
sa inchid stream de inscriere in fisier si sa gestionez datele din IDE spre fisier.

S-ar putea să vă placă și