Documente Academic
Documente Profesional
Documente Cultură
al Republicii Moldova
XK\BXV
despre lucrarea de laborator Nr. 7
la Structuri de date şi algoritmi
A e i e c tu a t:
st. g r . C R - 191 Axenti Alina
A veriiicat:
Lector univ. Munteanu Silvia
Chişinău – 2021
Scopul lucrării:
Obȓinerea deprinderilor practice de implementare și de utilizare a tipului abstract de date (TAD)
”Tablou de structuri” în limbajul C
Varianta 2. Structura Film cu câmpurile: denumirea, šara, regizorul, genul iilmului, anul.
Mersul lucrării:
Noţiuni teoretice:
• Biblioteca stdio.h conȓine iuncȓii speciale pentru citirea și aiișarea datelor – prin urmare
instrucȓiunea de includere a acesteia va ii practic prezentă în orice program. #include <stdio.h>;
•Int-variabila simpla de tip integer(intreg);
•While-execută un bloc de instrucšiuni atâta timp cât o anumită condišie este adevărată;
•Printf-pentru aiișarea datelor;
•Scanf-pentru citirea datelor;
•If,-instrucȓiune;
•Malloc-iuncȓie de alocare are ca rezultat adresa zonei de memorie alocate (de tip void*);
Codul programului în C
Mdig.C
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include "iilm.h"
while (a)
{
printi ("\tMENIU");
printi ("\n1.Alocarea dinamica a memoriei");
printi ("\n2.Introducerea elementelor de la tastatura ");
printi ("\
n34.CSoaruttaarreeaatealbelmoualnutiu"l)u; i
tabloului"); printi ("\n5.Redactarea elementului a
tabloului");
printi ("\n6.Adaugarea unui element nou la siarsit");
printi ("\n7.Eliminarea elementului indicat din tablou");
printi ("\n8.Inserarea unui element nou");
printi ("\n9.Salvarea elementelor tabloului in iisier");
printi ("\n10.Citirea elementelor tabloului din iisier");
printi ("\n11.Extragerea elementelor tabloului la ecran");
printi ("\n12.Eliberarea memoriei alocate pentru tablou ");
printi ("\n13.Interschimbarea a doua elemente indicate din tablou");
printi ("\n14.Adaugarea unui element nou la inceputul tabloului");
printi ("\n15.Inserarea unui element nou inainte elementului indicat al tabloului");
printi ("\n 0.Ierie din program\n");
printi ("\nAlegeti un punct din meniu\n\t");
iilush(stdin);
scani ("%d", &a);
ii (a == 0)
printi("\n\n\tAti esit din program!\n");
switch (a)
{
//alocarea
case 1:
printi ("Introduceti numarul de iilme:\n");
iilush(stdin);
scani ("%d", &n);
c = alocMemory(n);
printi ("\nMemoria a iost alocata\n");
break;
//introducerea
case 2:
break;
//cautarea
case 3:
break;
//sortarea
case 4:
iilush(stdin);
scani("%d", &asort);
ii (!asort) printi("\nAti esit dim meniu de sortare\n");
switch(asort)
{
//sortarea crescator
case 1:
sortByYearCresc(c, n);
printi("\nSortarea a iost cu succes\n");
break;
//sortarea descrescator
case 2:
sortByYearDesc(c, n); printi("\
nSortarea a iost cu succes\n");
break;
deiault:
printi("\nAti esit dim meniu de sortare\n");
break;
}
break;
case 5:
printi("\nIntroduceti nr-l a elementului pe care doriti sa redactati\n");
iilush(stdin);
scani("%d", &is);
iilush(stdin);
redact(c, is);
break;
break;
break;
break;
else printi("\nError\n");
break;
ii (!readStructFromFile(&n))
{
printi("\n\n\t***Error***\n");
break;
}
else
{
c = readStructFromFile(&n);
printi("\nCitirea a elemetelor a iost cu succes\n");
}
break;
//aiisarea
case 11:printi ("\n\n\nElementele structurei :\n");
showB(c, n);
printi ("\n\n");
break;
//eliberarea memoriei
case 12:
c = NULL;
ii (!c)
printi("\nMemoria a iost eliberata\n");
else
printi("\n\n\t***Error***\n");
break;
case 13:
break;
case 14:
c = addFirstElement(c, &n);
printi("\nElementul a iost adaugat la inceput\n");
break;
case 15:
printi("\nIntroduceti nr.iilmului inaintea carui va ii inserarea\n" );
iilush(stdin);
scani("%d", &is);
is--;
c = inser(c,is,&n); printi("\
nFilmul a iost inserat\n");
break;
}
getch();
return 0;
}
Film.c
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include "iilm.h"
iilm * alocMemory(int n)
{
iilm * A = NULL;
A = (iilm *) malloc (n *
sizeoi(iilm)); ii (A == NULL)
{
printi ("\n\tMEMORIA NU A FOST ALOCATA\n");
return NULL;
}
return A;
}
}
}
return;
}
printi("\t\tMENIU de redactare");
printi("\n\t1.Redactarea denumirei"); printi("\n\
t2.Redactarea tarii");
printi("\n\t3.Redactarea regizorului"); printi("\n\
t4.Redactarea genului"); printi("\n\t5.Redactarea
anului"); printi("\n\t0.Iesirea din MENIU de
redactare\n\n\t");
while(a)
{
printi("\n\tAlegeti un punct din submeniu\n\t");
iilush(stdin);
scani("%d",&a);
switch(a)
{
case 1:
printi("\tIntroduceti denumirea:\t");
iilush(stdin);
gets (c[i].name);
printi("\tDenumirea a iost modiiicata\n");
break;
case 2:
printi("\tIntroduceti tara:\t");
iilush(stdin);
gets (c[i].country);
pbr ienatki;("\tTara a iost modiiicata\n");
case 3:
printi("\tIntroduceti regizorul:\t");
iilush(stdin);
gets (c[i].regizor);
printi("\tRegizorul a iost modiiicat\n");
break;
case 4:
printi("\tIntroduceti genul:\t");
iilush(stdin);
g e t s ( c [i ] .g );
p ri n t i (" \ tG enu l a iost
modiiicat\n"); break;
case 5:
printi("\tIntroduceti anul:\t");
iilush(stdin);
scani ("%d", &c[i].year); printi("\
tAnul a iost modiiicat\n"); break;
deiault:
printi("\n\t\tAti iesit din submeniul de redactre\n");
a = 0;
return;
break;
}
}
return;
}
pgreitnst(ite("mGpe.
nguenl:);"); printi
("Anul : ");
scani ("%d", &temp.year);
return b;
}
return b;
}
b[el-1] = temp;
*n = *n + 1;
return b;
}
int writeStructInFile (iilm *c, int n)
{
FILE * i;
int i;
i = iopen ("iilm.txt", "w");
ii (!i)
return 0;
iclose (i);
return 1;
}
i = iopen ("iilm.txt",
"r"); ii (!i){return
NULL;}
i = 0;
while (iread(&temp, sizeoi(iilm), 1, i))
{
b[i] = temp;
i++;
}
iclose (i);
*n =
pn;
} return b;
//lucr
7
void swap(iilm * c, int a, int b)
{
iilm t;
t = c [a-1];
c[a-1] = c [b-1];
c [b-1] = t;
return;
}
b[0] = temp;
*n = *n + 1;
return b;
}
Film.h
typedei struct Film
{
char name[30];
char country[30];
char regizor[30];
char gen[30];
int year;
}iilm;
//lucr 7
void swap(iilm *c, int a1, int a2);
iilm * addFirstElement(iilm *c, int *pn);
Xezultate :
Concluzie:
În lucrarea de laborator nr.7 am alcatuit un iişier antet cu extensia .c, care conȓine speciiicarea structurii
de date a elementului tabloului(casa)şi prototipurile iuncšiilor de prelucrare a tabloului de structure,alt
iişier cu extensia .c, care conȓine implementările (codurile) iuncšiilor, declarate în iişierul antet și iişier
al utilizatorului, iuncšia mаin() pentru prelucrarea tabloului de structuri cu aiişarea la ecran a
următorului meniu de opšiuni: alocarea dinamica a iniormaȓiei,implementarea
in i o r m ati e i, s or a r e a, d a u ga r e a lt i e le m e n t ,inserarea unui element
p r o g r am p e r m it e d e a a i la d e tal ii un u i l uc r u .
nou,salvarea,citirea si ieșire.Acest