Raport 3 SDA

  • View
    214

  • Download
    0

Embed Size (px)

Citation preview

  • 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