Date post: | 07-Jul-2018 |
Category: |
Documents |
View: | 214 times |
Download: | 0 times |
of 16
8/18/2019 Raport 3 SDA
1/16
Ministerul Educa iei al Republicii MoldovațUniversitatea Tehnică a Moldovei
RaportLucrare de Laborator Nr.3.
obiectul: Structuri de date ișalgoritmi
var 6FCIM Gr. C-151
Elaborat: ervac !etru"eri#icat: $octor on#eren iar Universitar Luchianov Ludmilaț
hi inău %&'(ș
8/18/2019 Raport 3 SDA
2/16
Lucrare de Laborator Nr.2Tema:Structuri dinamice de date.
Scopul Lucrării: Studierea posibilită ilor limbajului C de a lucruțcu structurile de date, fi ier i înregistrări.ș ș
Varianta ndi!iduală
Varianta "
Să se elabore)e un program care va divi)a lista indicată de numerereale *n două liste separate+select*nd din lista ini ială elementele care nuțdepă esc numărul intodus de la tastaturăș
#e$ol!are:
!entru e,ecutarea acestei lucrări de laborator vom *ncerca săimplementăm algoritmul:
'. itim un elemet din prima listă%. -n ca)ul *n care el satis#ace condi ia stipulată *l *nscriem *n cea deaț
doua listă.3. -n ca)ul *n care se *ndepline te condi ia % *l tergem din listaș ț ș
ini ială.ț!entru re)olvarea acestei lucrări de laobrator vom uitli)a o structură
dinamică de date i anumeș o coadă. /legerea a că)ut pe acest tip destructură dinamică deoarece ea utili)ea)ă principiul %%&.
Structura de de#inire a unui element din listă:t'pedef struct N&()
float inf*
struct N&( +lin*
-N&(*"om declara 0 variabile dinamice la nivel global: +pb, +pb2, +pf,+pf2. !ointirii pb iș pb2 vor memora *nceputul primei liste i respectivșcelei dea doua. $eoarece programul presupune prelucrarea concomitent aambelor liste 1ini ială i #inală 2 suntem nevoi i să declarăm pointeriiț ș ț pf ișpf2.
2
8/18/2019 Raport 3 SDA
3/16
8/18/2019 Raport 3 SDA
4/16
8/18/2019 Raport 3 SDA
5/16
5
8/18/2019 Raport 3 SDA
6/16
Listingul Programului:
#include #include #include #include #include
typedef struct NOD!oat inf"struct NOD lin$"
%NOD"
struct NOD pb&'pf&"struct NOD pb('pf("
)oid *eniu+,reare+list-)oid")oid *eniu+/0sare+list-)oid")oid *eniu+1terge+list-)oid"
)oid ,reare+list-int")oid 2mpart+list-)oid"NOD add-struct NOD'struct NOD'!oat"NOD del+list-struct NOD"
int main-pb&3pf&3N4LL"pb(3pf(3N4LL"srand-time-N4LL"char alg"printf-56n6n6n6n6t6t6t6t6tLucrarea de laborator Nr+76n5"
printf-56t6t6t6t6t La disciplina 1D/6n5" printf-56t6t6t6t6t8ema: 1tructuri dinamice de date6n5"
printf-56n6n6n6n6t1arcina lucrarii: 1a se elabore9e un program' care )adi)i9a lista indicata de numere reale 6n5"
printf-56t in doua liste separate' selectind din listainitiala elementele6n5"
printf-56t care nu depasesc numarul introdus de latastatura.6n6n6n6n6n5"
printf-5Petru continuare apasati orice tasta . . . 5"getch-"do
system-5cls5"printf-56n6n6n6n6n6n6n6t6t6t6t6t*eniu:6n6n6n5"puts-56t8astati &; pentru a crea lista initiala5"puts-56t8astati (; pentru a impartirea listei in doua5"puts-56t8astati 7; pentru a a0sarea listelor5"puts-56t8astati ; pentru a strege listele5"puts-56t8astati =sc; pentru a iesi din program5"puts-56n5"printf-5alg:5"alg3getch-"system-5cls5"
6
8/18/2019 Raport 3 SDA
7/16
switch-algcase &:
*eniu+,reare+list-"brea$"
case (:2mpart+list-"brea$"
case 7:*eniu+/0sare+list-"brea$"
case :*eniu+1terge+list-"brea$"
case (?: return @"%
%while-&"%)oid ,reare+list-int parametru
A2L= fp"
char s(@;"char 0le(@;"char alg"!oat inf"int inc'sfr'$"switch-parametru
case &:do
system-5cls5"puts-5Doriti intoducerea unei noi inregistrariB5"printf-5CN;:5"alg3getch-"
switch-algcase C:case y:
printf-56n6nDati )aloarea:5"scanf-5Ef5'Finf"pf&3add-pb&'pf&'inf"if-pb&33N4LLpb&3pf&"printf-56n/ fost introdus elementul
Ef6n5'inf"1leep-G@@"brea$"
case N:case n:
return"%
%while-&"case (:
do system-5cls5" puts-5dati lungimea inter)alului de )alori.5" puts-5HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH5" puts-5 I=J4L/: iceputul nu trebuie sa depaseasca s0rsitulK5"
7
8/18/2019 Raport 3 SDA
8/16
puts-5HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH5" printf-5dati inceputul inter)alului:5" scanf-5Ed5'Finc" printf-5dati s0rsitul inter)alului:5" scanf-5Ed5'Fsfr" %while-inc>sfr" if--inc
8/18/2019 Raport 3 SDA
9/16
%else
while-fgets-s'(@'fpK3@pf&3add-pb&'pf&'atof-s"if-pb&33N4LLpb&3pf&"
%%
puts-5Datele au fost citite cu succes5"printf-5Petru continuare apasati orice tasta . . . 5"getch-"
brea$"%
%)oid *eniu+,reare+list-
char alg"
if--pb&K3N4LL-pb(K3N4LLdo
puts-5O lista a fost dea creataK5"
puts-5Doriti sa creati o lista nouaB5"puts-5/tentie in ca9ul in care raspunsul este a0rmati) lista
precedenta )a 0 stearsa5"printf-5CN;5"alg3getch-"switch-alg
case C:case y:
pb&3del+list-pb&"pb(3del+list-pb("goto et&"
case N:case n:
return"%
%while-&"%et&:do
system-5cls5"printf-56n6n6n6n6n6n6n6t6t6t6t6t*eniu ,rearea listei:6n6n6n5"puts-56t8astati &; pentru a introducerea manuala a listei5"puts-56t8astati (; pentru introducrea random a listei5"puts-56t8astati 7; pentru a citi lista din 0sier5"puts-56t8astati =sc; pentru a trece la pasul anterior5"
puts-56n5"printf-5alg:5"alg3getch-"system-5cls5"switch-alg
case (?: return"default:
if--alg>@FF-alg
8/18/2019 Raport 3 SDA
10/16
return"%
%%while-&"
%NOD add-struct NOD pb' struct NOD pf' !oat inf
NOD temp"
if-pb33N4LLpb3-NODmalloc-si9eof-NOD"pbH>inf3inf"pbH>lin$3N4LL"pf3pb"
%else
temp3pf"pf3-NODmalloc-si9eof-NOD"pfH>inf3inf"pfH>lin$3N4LL"tempH>lin$3pf"
%return pf"
%)oid *eniu+/0sare+list-
struct NOD temp"char alg"if--pb&33N4LLFF-pb(33N4LL
puts-5Nu eista nici o lista care poate 0 a0sata5"printf-5Petru continuare apasati orice tasta . . . 5"getch-"return"
%do
system-5cls5"printf-56n6n6n6n6n6n6n6t6t6t6t6t*eniu /0sarea liste:6n6n6n5"puts-56t8astati &; pentru a a0sa prima lista5"puts-56t8astati (; pentru a a0sa a doua lista5"puts-56t8astati 7; pentru a a0sa ambele liste5"puts-56t8astati =sc; pentru a trece la pasul anterior5"puts-56n5"printf-5alg:5"alg3getch-"system-5cls5"switch-alg
case &:
if-pb&33N4LLputs-5/ceasta lista nu eista5"
%else
temp3pb&"while-temp
printf-5Ef6n5'tempH>inf"temp3tempH>lin$"
%
10
8/18/2019 Raport 3 SDA
11/16
%printf-5Petru continuare apasati orice tasta . . .
5"getch-"brea$"
case (:if-pb(33N4LL
puts-5/ceasta lista nu eista5"
%else
temp3pb("while-temp
printf-5Ef6n5'tempH>inf"temp3tempH>lin$"
%%printf-5Petru continuare apasati orice tasta . . .
5"getch-"brea$"
case 7:
if-pb&33N4LLputs-5/ceasta lista nu eista5"
%else
puts-5,ontinutul primei liste5"temp3pb&"while-temp
printf-5Ef6n5'tempH>inf"temp3tempH>lin$"
%%puts-56n6n6n5"
if-pb(33N4LLputs-5/ceasta lista nu eista5"
%else
puts-5continutul celei deHa doua liste5"temp3pb("while-temp
printf-5Ef6n5'tempH>inf"temp3tempH>lin$"
%%printf-5Petru continuare apasati orice tasta . . .
5"getch-"brea$"
case (?:return"
%%while-&"
%)oid *eniu+1terge+list-
struct NOD temp"
11
8/18/2019 Raport 3 SDA
12/16
8/18/2019 Raport 3 SDA
13/16
pb(3del+list-pb("puts-5lista a fost stearsa5"
%printf-5Petru continuare apasati orice tasta . . .
5"getch-"brea$"
case (?:
return"%
%while-&"%NOD del+list-struct NOD pb
struct NOD temp"while-pbK3N4LL
temp3pb"pb3pbH>lin$"free-temp"
%return N4LL"
%)oid 2mpart+list-
!oat limit'inf"struct NOD temp"struct NOD pred"struct NOD au"if--pb&33N4LL-pb(K3N4LL
puts-5=roareKKK5"puts-5/ceasta actiune este imposibila5"printf-5Petru continuare apasati orice tasta . . . 5"getch-"return"
%
puts-5Dati numarul pe ba9a caruia )a 0 de)i9ata lista5"scanf-5Ef5'Flimit"temp3pb&"pred3N4LL"while-tempK3N4LL
if--tempH>infinf"if-pb(33N4LLpb(3pf("if-pred33N4LL
au3temp"temp3tempH>lin$"pb&3temp"
free-au"%else
predH>lin$3tempH>lin$"free-temp"temp3predH>lin$"
%%else
13
8/18/2019 Raport 3 SDA
14/16
pred3temp"temp3tempH>lin$"
%%system-5pause5"return"
%
/0Qarea re9ultatelor:
14
8/18/2019 Raport 3 SDA
15/16
15
8/18/2019 Raport 3 SDA
16/16
,onclu9ie:
În această lucrare m-am !ăcut "e#rn"er să lucre$ custructurle "namce "e "ate %n lm&a'ul ,. (m stu"at c)$le %n ,. (m ela&)rat un #r)*ram care #ermte e+ecutarea"!ert)r ac,un "u#ă ")rn,a utl$at)rulu. (m stu"atmet)"ele "e a c)m#leta ) c)a"ă "e a ter*e elemente"ntr-) c)a"ă "e a a/a elementele une c)$.
16