Documente Academic
Documente Profesional
Documente Cultură
AL REPUBLICII MOLDOVA
Universitatea Tehnică a Moldovei
Facultatea Calculatoare, Informatică şi Microelectronică
Departamentul Informatică şi Ingineria Sistemelor
Raport
pentru lucrarea de laborator Nr.5
Chișinău – 2023
1
Sarcina :
Este dată o structura Evidența bibliotecii personale care conține componentele: nume autor, titlul
cărții, editura, anul editării, nr. înregistrare a cărții.
A rezolva în C problema care să efectueze următoarele operații:
v/ Creează un fișier textual (experiment.txt) (în locația de salvare a codului sursă
v/ Deschide fișierul textual cu numele dat, permite introducerea datelor determinate de structura
dată, stocându-le în fișierul de lucru;
v/ Afișează Ia ecran datele structurii introduse recent în fișierul dat. Codul sursă scris de dvs. va
conține funcții (cu apelare în main) care să efectueze următoarele manipulații cu datele din
structură:
v/ Sortarea ascendentă (Selection Sort) și descendentă (Quick Sort) a datelor structurii (nume
autor, anul editării);
v/ Datele de output vor fi înregistrate în alte 2 fișiere: Selection-exp.txt și Quick-exp.txt.
Codul programului :
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// Definirea structurii
typedef struct {
char nume_autor[50];
char titlul_cartei[50];
char editura[50];
int anul_editarii;
int nr_inregistrare;
} Carte;
// Functiile de sortare
void selectionSort(Carte* carti, int n) {
int i, j, min_idx;
Carte temp;
for (i = 0; i < n-1; i++) {
2
min_idx = i;
for (j = i+1; j < n; j++)
if (carti[j].anul_editarii <
carti[min_idx].anul_editarii)
min_idx = j;
temp = carti[min_idx];
carti[min_idx] = carti[i];
carti[i] = temp;
}
}
int main() {
3
FILE *fptr;
Carte carti[100];
int n;
fclose(fptr);
// Afisarea datelor
for (int i = 0; i < n; i++)
printf("Datele introduse sunt: %s %s %s %d %d\n",
carti[i].nume_autor, carti[i].titlul_cartei, carti[i].editura,
carti[i].anul_editarii, carti[i].nr_inregistrare);
// Sortare rapida
quickSort(carti, 0, n - 1);
return 0;
}
5
6