laborator pc a4

Upload: bratianu-constantin

Post on 25-Feb-2018

244 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/25/2019 Laborator PC A4

    1/127

    Programarea Calculatoarelor

    Laborator I

    1. REPREZENTAREA INFORMAIEI N CALCULATOR.CODIFICRI

    Pentru a putea fi prelucrate cu ajutorul calculatorului, informaiile utilizate n viaacotidian (imagini, numere, litere, desene, sunete) i instruciunile pe care trebuie s le execute

    procesorul calculatorului trebuie s fie reprezentate (codificate) ntr-un anumit format, acceptatde calculator !ransformarea informaiei, din forma de reprezentare extern, u or de n eles, n forma de reprezentare intern pe care o nelege calculatorul, sub form de cifre binare, senumete codificare intern a informaiei "odificarea informaiei presupune ca fiecrei entiti

    informaionale s i se atribuie o secven unic de cifre binare#nitatea elementar de reprezentare a informaiei n calculator este bit-ul (binar$ digit -

    cifr binar), rezult%nd din faptul c unit ile de stocare elementare ntr-un calculator suntcomutatoarele electronice, fiecare comutator av%nd una dintre cele dou stri& on (reprezentat deobicei de '), sau off () ata este deci termenul utilizat pentru a descrie informa ia reprezentatde grupurile de comutatoare on/off.

    "*iar dac datele i informa iile sunt cuvinte adesea folosite alternativ, exist o distinc ie important ntre ele atele reprezint materia prim pe care o prelucreaz calculatorul iorganizeaz pentru a produce informa ii

    Datele- materia prim pentru informaii- atunci c%nd sunt prelucrate, organizate, structurate sau prezentate ntr-un anumit

    context, pentru a le face utile, acestea devin informa ii

    Informaii Date

    #n grup de + bi i formeaz un octet sau b$te eoarece cifrele binare pot fi combinate ndiverse moduri, cu un octet calculatorul poate reprezenta . de simboluri sau caractere diferite/$te-ul este extrem de important, deoarece exist combina ii suficiente de +-bi i pentru a

    reprezenta toate caracterele de pe o tastatur 0ceast reprezentare prin care fiecrei entitiinformaionale i se asociaz o secven de cifre binare se nume te !o"ifi!are

    '

    caracter pur sintactic

    comunicare(transmitere)Prelucrare&-nregistrare-filtrare-sortare-combinare-calculare

    culegerecodificaretransmitere

    InformaiielaborateDateelementareDatede baz

    Informaiipertinente

    dispun de caracteristici semantice,orientate spre coninutul i sensulatribuit reprezentrii realitii.

  • 7/25/2019 Laborator PC A4

    2/127

    Programarea Calculatoarelor

    1n funcie de natura caracterelor pe care le pot reprezenta, sistemele de codificare se potgrupa n&

    # $i$teme "e !o"ifi!are n%meri!e $i$teme "e !o"ifi!are alfan%meri!e.

    a. Co"%ri n%meri!e2 prin intermediul crora se pot reprezenta n memoria calculatorului

    datele numericeb. Co"%ri alfan%meri!e2 prin intermediul crora se pot reprezenta n memoria calculatoruluidatele alfanumerice 1n practic se utilizeaz trei sisteme de codificarea a caracterelor alfa-numerice& 03"44 ( 0merican 3tandard "ode for 4nformation 4nterc*ange), 5/"4" (5xtended/inar$ "oded ecimal 4nterc*ange "ode) i #nicode

    a' Co"%ri n%meri!ePentru a reprezenta datele n calculator i pentru a le putea transmite convenabil ntre

    sistemele de calcul au fost dezvoltate diferite sc*eme de codificare "odurile numerice reprezint

    cele ' cifre zecimale, cu sau fr semn algebric 0cestea pot fi&

    ( !o"%ri )on"erate* fiecare cifr a numrului zecimal este reprezentat printr-un cod binar cupatru bii, fiecare rang al secvenei av%nd asociat o pondere

    Pentru fiecare grup de patru bi i, suma ponderilor acelor pozi ii unde cifra binar este ' este egal cu cifra zecimal pe care o reprezint grupul eci o cifr zecimal se exprimconform formulei&

    i

    i

    i waN =

    =

    6

    '

    ,

    unde ai78'9 iar reprezint ponderea asociat poziiei, conform codului respectiv"ele mai cunoscute coduri ponderate sunt&

    Co"%l +CD $a% !o"%l ,#-##15ste utilizat pentru reprezentarea numerelor ntregi zecimale codificate binar i are ca

    pondere puterile lui & 6, , ', :arele su avantaj este uurina conversiei ctre zecimal;eprezentarea unui ntreg zecimal se face cu fiecare cifr reprezentat individual,

    conform tabelului de mai jos&

    !ifr/ 0e!imal/ !o" +CD

    ' ' '6 ''< ' ''. ''= '''+ '

    > ''

  • 7/25/2019 Laborator PC A4

    3/127

    Programarea Calculatoarelor

    ;eprezentarea cifrelor zecimale se realizeaz c%te cifre pe un octet - forma mpac*etat(cifra zecimal mai puin semnificativ pe biii - 6 i cifra zecimal mai semnificativ pe biii ''''

    ( !o"%ri ne)on"erate& biilor nu li se mai asociaz ponderi, trecerea de la o cifr zecimal laurmtoarea se face prin modificarea unui singur rang binar

    "ele mai cunoscute coduri neponderate sunt&

    Co"%l E2CE33 4 523#4'& reprezentarea n acest cod se obine din reprezentarea n codul +-

  • 7/25/2019 Laborator PC A4

    4/127

    Programarea Calculatoarelor

    !ifr/ 0e!imal/ !o" 23#4 ''' ' ''6 ''

    < ''' '. ''= ''+ '''> ''

    Co"%l 6ra7& reprezentarea n acest cod se caracterizeaz prin faptul c dou cifre alturate aureprezentri binare ce difer printr-un singur bit 3ecvena este circular&

    ? ' ? '' ? ' ? i aceast proprietate face ca acest cod s fie utilizat n aplicaii pentru detectarea erorilor easemenea, aceast reprezentare este util pentru mrimile care cresc sau descresc succesiv!abelul de mai jos cuprinde reprezentarea cifrelor zecimale n cod @ra$&

    !ifr/ 0e!imal/ !o" 6ra7 ' ' ''6 '< '' '''. ''= '+ ''> '''

    :ai jos sunt prezentai algoritmii pentru conversia cod binar2cod @ra$&(b',,bm)?(g',,gm), i respectiv pentru decodificarea cod @ra$ - cod binar& (g',,gm)

    ?(b',,bm)&

    begin begin g'A b'B b'AvaloareAg'B for iA,,m for iA,C, m gi A bi-' DE; bi if giA' t*en

    repeat valoareAFE!valoareend endif

    biAvaloare

    repeatend

  • 7/25/2019 Laborator PC A4

    5/127

    Programarea Calculatoarelor

    Co"%ri )entr% "ete!ia 8i !ore!ia erorilor1n cazul transmisiei pe canalele de comunicaie a mesajelor prezentate sub form binar,

    detectarea i corectarea erorilor aprute reprezint etape importante 1n esen presupundetectarea poziiei simbolurilor alterate i corectarea acestora, adic sc*imbarea n valoarea

    binar opus

    1n acest sens, alturi de cei n bii de date ai mesajului de transmis se introduc G biisuplimentari de informaie neesenial, informaie de control Hectorul format din cei GIn biiformeaz un cuv%nt de cod"ele mai utilizate coduri detectoare i corectoare sunt&

    Co"%ri "e !ontrol a )arit/iiPentru fiecare succesiune de cifre binare a',C,anse adaug un bit de paritate anI' care

    face ca numrul de bii cu valoarea ' din mesajul transmis s fie par sau impar, n funcie deconvenia de paritate stabilit 1n momentul n care un bit se modific, acesta va sc*imba

    paritatea& de la par la impar sau invers 0cest cod are o eficien sczut deoarece nu poatedetecta dec%t un numr impar de bii eronai

    Co"%ri a0ate )e "i$tana 9ammin:istana Jamming ntre dou cuvinte de cod cu acelai numr de bii n reprezentare este

    egal cu numrul poziiilor n care cele dou cuvinte difer, adic numrul de erori caretransform un vector de informaie n alt vector

    e exemplu, distana Jamming ntre cuvintele de cod&''''''' este egal cu 6

    istana Jamming minim min pentru un cod este cea mai mic distan Jammingdintre toate perec*ile de cuvinte din cod "odurile Jamming pot detecta min-' erori i potcorecta (min-')K erori

    e exemplu, pentru cuvintele de cod&''''''''''

    mineste 6 i atunci codul Jamming poate detecta maxim erori i poate corecta o singur

    eroare (un singur bit alterat)

    Co"%ri )olinomiale !% re"%n"an/ !i!li!/ ; CRC 5

  • 7/25/2019 Laborator PC A4

    6/127

    Programarea Calculatoarelor

    ' Co"%ri alfan%meri!e1n afar de valori numerice, ntr-un calculator trebuie reprezentate, de asemenea, date de

    tip text care con in caractere 3etul de caractere con ine litere ale alfabetului (L0L LML, LoL LML), cifre (N N N>N), simboluri speciale (NIN, NON, N L,L, L,L L,L Q L, etc), i caractere non-imprimabile (ex ";, etc)

    ;eprezentarea caracterelor alfanumerice n bi i i ' se face prin coduri de caractere 5xist trei coduri de caractere utilizate pe scar larg&

    - Ameri!an $tan"ar" Co"e for Information Inter!>an:e 5A3CII'* este un cod de =bi i care permite reprezentarea a = A '+ caractere distincte Hersiunea A3CII#, $a% A3CIIe?tin$este un cod de + bi i care permite reprezentarea a +A . caractere distincte Primele '+de caractere sunt la fel n ambele coduri "ele '+ de combina ii suplimentare ale 03"44 extinssunt utilizate pentru simboluri cum ar fi& R S T U, V, W, etc

    - E?ten"e" +inar7 Co"e" De!imal Inter!>an:e Co"e5E+CDIC'* a fost unul dintreprimele coduri informatice utilizat pe scara larg care au permis reprezentarea caractereloralfabetice litere mari i mici, n plus fa de caracterele speciale, cum ar fi semne de punctua ie i caractere de control 5ste un cod de + bi i care permite reprezentarea a + A . caractere;eprezentarea se face n dou grupuri de < cifre, fiecare grup reprezent%nd un numr*exazecimal

    # UNICODE* este un cod alfanumeric pe '. bii care permite .6. de combinaiidiferite 5ste sistemul de codificare standard universal, conceput pentru a reprezenta date bazate

    pe text scrise n orice limb

    .

  • 7/25/2019 Laborator PC A4

    7/127

    Programarea Calculatoarelor

    Laborator 2

    . 3I3TEME DE NUMERAIE

    !oate na iunile diferitelor civilizaii au stabilit propriul sistem de numerotare pe care s-lfoloseasc n via a de zi cu zi i n alte activit i, cum ar fi comer ul i toate celelalte aspecte ale vie ii care necesit numrarea

    #n sistem de numeraie este format din totalitatea regulilor i a notaiilor matematiceutilizate pentru reprezentarea numerelor cu ajutorul cifrelor sau a altor simboluri

    3istemul de numeraie roman este cunoscut ca un sistem non#)o0iionaldeoarece fiecaresimbol reprezint o valoare specific independent de pozi ia sa

    e exemplu& 4 semnific ntotdeauna ' H semnific ntotdeauna D semnific ntotdeauna '

    ar combinaiile de simboluri au semnificaii diferitee exemplu& 4H semnific K A< restul '

  • 7/25/2019 Laborator PC A4

    9/127

    Programarea Calculatoarelor

    Con@er$ia 0e!imal#inar n !a0%l n%merelor realeeoarece un numr real x se poate scrie sub forma& x A ]x^ I 8x9, parte ntreag plus

    parte fracionar, se realizeaz conversia separat pentru numrul ntreg i separat pentru numrulsubunitar (ca n exemplele anterioare), iar apoi se concateneaz cele dou rezultate, plas%ndvirgula ntre ele

    e exemplu, s se converteasc n binar cu gradul de precizie + numrul real '

  • 7/25/2019 Laborator PC A4

    10/127

    Programarea Calculatoarelor

    O$* 1n cazul numerelor fracionare, cifrele de la partea fracionar se mpart n grupe de c%te 6de la st%nga la dreapta (ultima grup se completeaz n spate, cu unul sau dou zerouri) i apoifiecare grup se nlocuiete cu cifra octal corespunztoare ei

    O)eraii aritmeti!e n inar

    !abela adunrii n binar& !abela scderii n binar&

    B 1 '1 ' '

    O$*1';ezultatul adunrii de pe ultima linie& 'I' A ('())'\a scderea -' se trece ' i se mprumut o unitate din st%nga4' Eperaiile de nmulire i mprire n binar se efectueaz identic cu cele din baza ', in%ndcont de regulile&xA x'A 'xA 'x'A'&A &'A '&Aimposibil '&'A'

    e exemplu& ''''' x ''

    ''''' ''''' '''

    Herificare& '''''()A '> B ''()A B '''()A

  • 7/25/2019 Laborator PC A4

    11/127

    Programarea Calculatoarelor

    cifre *exazecimale ec*ivalent binar ---------------------------------------------------------------------

    '' '

    ' 66 ''

  • 7/25/2019 Laborator PC A4

    12/127

    Programarea Calculatoarelor

    reprezentate fiind 2 #n numr mai mare dec%t nu poate fi reprezentat utiliz%nd + bii1n mod asemntor, '. bii permit ca domeniu de reprezentare 2 .6

    0tunci c%nd rezultatul unui calcul nu poate fi reprezentat cu numrul de bii disponibili,apare o depire

    e exemplu, la adunarea pe + bii a numerelor ' i ', care este n

    afara intervalului 2 i nu poate fi reprezentat pe + bii1n situaia n care apare o depire, biii cei mai puini semnificativi se pstreaz, dar biii

    cei mai semnificativi se vor pierde, ceea ce va conduce la o valoare semnificativ mai mic dec%trezultatul corect

    e exemplu, .

  • 7/25/2019 Laborator PC A4

    13/127

    Programarea Calculatoarelor

    se inverseaz valoarea biilor'''''()I'() se adaug valoarea '

    -----------------''''''()

    Prin aceast metod se pot reprezenta numere ntregi din intervalul de valori ]- n-' , n-'-'^, unde n este numrul de bii utilizai n reprezentare

    Primul bit din st%nga, bitul cel mai semnificativ, este bitul de semn i are valoarea pentru numere pozitive i valoarea ' pentru numere negative

    e exemplu, considerm nA+ 4ntervalul de valori reprezentabile este ]-'+ , '=^ ireprezentm numrul -= n cod complementar&

    -=(') '''()inversare

    ''''''()I'() se adaug valoarea '--------------''''()

    O$*1' 1n cazul numerelor cu semn reprezentate n cod complementar semnul se pstreaz,

    adic primul bit din st%nga nu intr n complementaritate

    'Haloarea numeric a unui numr negativ x reprezentat pe n bii n cod complementarse calculeaz cu formula&

    "(x) A n-`x`e exemplu, valoarea numeric a numrului -= pe + bii n cod complementar este& "(x) A n-= A .-= A '+K A '' A ('')()x

    /iii care urmeaz dup punct formeaz partea fracionar a mantisei

    O$& reprezentarea n virgul mobil a unui numr nenul este unic at%ta timp c%t este respectatcondiia ca 'Y m Z

    e exemplu, nerespect%nd aceast cerin, numrul >K poate fi scris de asemenea&>K A ('')()x etat' a n%m/r%l%i 0e!imal J- G

    a) ''''' '111111 c)'''''' d)''''''

    4. Care e$te @aloarea inar/ 5,#i i' a n%m/r%l 0e!imal 1JHG

    a) '''' b) ''' !' 111111 d) ''''''

    -. Care e$te @aloarea o!tal/ a n%m/r%l%i inar 1111111115'G

    a' -H11--4 b) + d) '.

    J.Care e$te @aloarea 0e!imal/ a n%m/r%l%i >e?a0e!imal FFG

    a) '. b) '= !' HH d) .

    ,.Care e$te @aloarea >e?a0e!imal/ a n%m/r%l%i 0e!imal FFG

    a) '"= b)

  • 7/25/2019 Laborator PC A4

    17/127

    Programarea Calculatoarelor

    R/$)%n$*"u '6 bii se pot reprezenta numere ntregi pozitive din intervalul de valori ] , '6-'^ A ] ,+'>'^"u '< bii se pot reprezenta numere ntregi pozitive din intervalul de valori ] , '

  • 7/25/2019 Laborator PC A4

    18/127

    Programarea Calculatoarelor

    R/$)%n$*"el mai mare numr pozitiv este '=(')A '''''''()"el mai mic numr negativ este -'+(')A '()

    . C%m e$te )o$iil $/ fie i"entifi!at/ o "e)/8ire n moment%l efe!t%/rii $%mei a "o%/

    n%mere inare f/r/ a fa!e @erifi!area )rin !on@er$ia re0%ltat%l%i n form/ 0e!imal/G

    R/$)%n$*3e va verifica bitul de semn al rezultatului, prin comparare cu biii de semn ai celor dounumere

    J. A$em/n/tor !on!e)t%l%i "e !o" !om)lementar 5fa/ "e ' )entr% n%mere inarere)re0entate )e n ii "efinii !on!e)t%l !ore$)%n0/tor )entr% a0a 1* !o" !om)lementarfa/ "e 1 )entr% n%mere 0e!imale re)re0entate )e n ii. Pre0entai 8i mo"%l "e !al!%l n

    a!e$t !a0.

    R/$)%n$*1n cazul codului complementar fa de pentru numere binare, domeniul de reprezentare este& ]-n-' , n-'-'^, unde n este numrul de bii utilizai n reprezentare0semntor, putem defini domeniul de reprezentare pentru cod complementar fa de ' pentrunumere zecimale reprezentate pe n bii ca fiind ]- x ' n-' , x 'n-'-'^ ac lum de exemplu nA , vom avea dou cifre zecimale, iar domeniul de reprezentare va fi ]- , ^Xiecare numr negativ a va fi reprezentat ca '2 a A ' 2ae exemplu, dac se calculeaz 2 ' A I (-') A I(' 2 ') A I + A ' A deoarece sunt permise doar dou zecimale n reprezentare, iar cifra sutelor este ignoratac se calculeaz ' 2 A ' I (-) A ' I (' -) A ' I + A > > este de fapt unnumr negativ deoarece este mai mare dec%t , iar dou cifre permit ca domeniu de reprezentare]-, ^ Haloarea sa efectiv este 2('- >) A -

    ,. Cal!%lai n !o" !om)lementar fa/ "e 1 !% o re)re0entare )e J ii $%ma* #a ; %n"ea 11-51' iar 4151'.

    R/$)%n$*

    -a A '=2 ''< A >>>>++.-b A '=2 6' A >>>>=.>-a 2b A >>>>++. I >>>>=.> A '>>>>. A >>>>. deoarece sunt permise doar apte zecimalen reprezentare, iar prima cifr este ignorat

    Pentru verificarea calculelor, se poate calcula valoarea n zecimal&'= - a - b A '= - >>>>. A 6

  • 7/25/2019 Laborator PC A4

    19/127

    Programarea Calculatoarelor

    1. Care e$te n%m/r%l "e ii ne!e$ari )entr% a re)re0enta n%mere ntre:i "in inter@alele*K1 8i K 1G

    . ntr#%n $i$tem "e i i re)re0entare n !o" !om)lementar !are e$te @aloarea 0e!imal/re)re0entat/ "e 115'G

    4. Reali0ai $!/"erile %rm/toare folo$in" re)re0entarea n !o" !om)lementar )entr%n%mere ne:ati@e*a' 1115'; 115' ' 11115'#1115' !' 115'#1115'

    -. Com)letai tael%l "e mai o$ reali0n" toate !on@er$iile ne!e$are*

    +inar O!tal Ze!imal 9e?a0e!imal11

    ,J +J

    11111

    ,-

    1111

    H. Reali0ai !on@er$ia n !o" 6ra7 a %rm/toarelor n%mere inare*

    11115' 11115' 11115' 11115'

    . Reali0ai !on@er$ia %rm/toarelor n%mere "in !o" +CD n form/ 0e!imal/*1 111 11 111 11 111 1 11 11

    J. 3/ $e re)re0inte %rm/toarele n%mere n @ir:%l/ moil/ $im)l/ )re!i0ie*14.-HJ, 4.-H, H-.H-J

    ,. N%m/r%l 1115'e$te re)re0entarea n !o" !om)lementar )e , ii a %n%i n%m/r .Care e$te re)re0entarea 0e!imal/ a l%i G

    Laborator 3'>

  • 7/25/2019 Laborator PC A4

    20/127

    Programarea Calculatoarelor

    4. AL6ORITMI* DEFINIIE PROPRIETI REPREZENTRIERIFICAREA CORECTITUDINII QI

    NOIUNI DE PRO6RAMARE 3TRUCTURAT

    Un al:oritm este un concept folosit pentru a desemna o procedur de calcul binedefinit, const%nd dintr-un set finit de instruc iuni complet ordonat n timpB procedura pornetede la o anumit valoare sau un set de valori de intrare i produce ntr-un timp finit o anumitvaloare sau un set de valori, ca ie ire 0lgoritmul exprim logica complet a solu iei de rezolvare a unei probleme date

    !ermenul de L0lgoritmL provine din numele matematicianului persan din secolul al 4D-lea :o*ammed al-*o_arizmi& 0l-*o_arizmi ? 0lgorismus (n latin) ? algoritm ar,aceeai prezentare a regulilor precise pentru descrierea proceselor de calcul din aritmetic sent%lnete i n celebra lucrare a lui 5uclid, 5lementele - un tratat de geometrie, alctuit din '6cr i 1ntr-o anecdot scris la + de ani de la moartea lui 5uclid se relateaz c regele Ptolemeu4, n ncercarea de a studia aceast lucrare, l-a ntrebat pe 5uclid dac nu ar exista o cale maiuoar ca s neleag geometria, la care 5uclid sever ar fi rspuns& L 1n geometrie nu exist calearegal L

    1n cartea a H44-a din 5lemente se regsete de altfel primul i cel mai celebru algoritmdin istorie, 0lgoritmul lui 5uclid pentru determinarea celui mai mare divizor comun a dounumere

    Pro)riet/ile al:oritmilor*' ExactitateA un algoritm trebuie s fie descris n mod clar i precisB la fiecare

    pas, operaia care urmeaz a fi executat este unic determinat, definit irealizabil, astfel nc%t s nu existe incertitudine

    Generalitate A algoritmul trebuie s rezolve fiecare instan a problemeirespectiveB algoritmul obine date de ieire pentru orice date de intrarecorespunztoare problemei

    6 FinitudineA un algoritm trebuie s con in un numr finit de pa i n execu ia sa

  • 7/25/2019 Laborator PC A4

    21/127

    Programarea Calculatoarelor

    grunte de descoperire n soluia oricrei probleme 1n cartea sa de referin& Jo_ to 3olve 4t,Pol$a a conceptualizat acest proces ca o construcie ce cuprinde patru etape principale&( Eta)a 1' nele:erea )rolemei* odat formulat enunul problemei, clar i precis, trebuiestabilite&- datele de intrare i informaiile care trebuie obinute prin rezolvarea problemeiB

    - care sunt condiiile concrete de rezolvare& sunt acestea suficiente sau insuficiente suntredundante sunt contradictorii- exist informaii care lipsesc, sau, dimpotriv, nu sunt necesare( Eta)a ' Elaorarea %n%i )lan 5mo"el' "e re0ol@are a )rolemei, stabilirea unei conexiunintre datele i necunoscutele problemei pentru a dezvolta algoritmul corespunztor de rezolvare,algoritm descris ntr-una dintre modalitile de reprezentare algoritmic1n acest scop se recomand&- identificarea unei probleme conexe, asemntoare (atunci c%nd este posibil) pentru a puteavedea dac se poate aplica aceeai te*nic de rezolvareB

    - mprirea problemei n subprobleme mai mici i mai uor de rezolvatB- ncercarea de a rezolva un caz special al problemei sau o problem mai general sau o parte aproblemei( Eta)a 4' Im)lementarea )lan%l%i "e re0ol@are prin codificarea algoritmului rezultat netapa anterioar ntr-un limbaj de programare 3e recomand n plus i&- efectuarea oricror aciuni sau calcule necesare n acest sensB- verificarea fiecrui pas al algoritmului, intuitiv sau formal( Eta)a -' Te$tarea )ro:ram%l%i 8i !ore!tarea erorilor*- testarea programului se realizeaz pe baza mai multor seturi diferite de date de test pentru adescoperi eventualele erori i greeli de concepie n programB dac n timpul testrii programuluise constat funcionarea defectuoas a acestuia, este necesar reluarea ultimelor dou sau treietape n funcie de natura erorilorB- analiza corectitudinii soluiei n termenii problemei originale& soluia are sens este plauzibil- identificarea unei alte metode de gsire a soluieiB n cazul n care exist mai muli algoritmi derezolvare, trebuie ales algoritmul cel mai eficient din punct de vedere al complexitii calculului&algoritmul cu cel mai redus timp de execuie i cel mai economic spaiu de memorie necesar

    Re)re0entarea al:oritmilor;eprezentarea algoritmilor i limbajele de programare s-au influenat reciproc 5xist

    astfel diverse modaliti de reprezentare a algoritmilor, care pot fi utilizate n orice combinaie&- n limbaj natural 2 descriere amnunit prin cuvinteB- printr-o sc*em logic 2 reprezentare grafic simplB- n pseudocod 2 descriere formal simplificat intermediar ntre limbajul natural i de limbajulde programareB- prin convenii grafice de tip diagrame arborescenteB- prin tabele de decizie de tip condiii 2 aciuni

    5I' 3!>ema lo:i!/;eprezentarea prin sc*em logic a unui algoritm utilizeaz blocuri (operaii) de baziKsau structuri de control (formate prin gruparea blocurilor de baz)

    '

  • 7/25/2019 Laborator PC A4

    22/127

    Programarea Calculatoarelor

    +lo!%ri "e a0/Blocul de nceput/sfrit2 orice sc*em logic ncepe cu un bloc de nceput i se termin cu unbloc de sf%rit

    Blocul de intrare2 desemneaz preluarea datelor (valorilor variabilelor) de la dispozitivul deintrare (de exemplu de la tastatur)

    Blocul de ieire2 desemneaz scrierea rezultatelor (valorilor variabilelor) la dispozitivul deieire (de exemplu pe ecranul monitorului)

    Blocul de atribuire2 este utilizat pentru reprezentarea prelucrrilor asupra datelor

    Blocul decizional 2 desemneaz evaluarea unei condiii 1n funcie de rezultatul evalurii,continuarea prelucrrilor poate urmri ramura desemnat cu 0 (condiia din blocul de decizieeste adevrat) sau cea desemnat cu F# (condiia din blocul de decizie este fals)

    Conectorul loic2 este utilizat pentru reunirea ramurilor de execuie ale algoritmului

    Conectorul de pain! 2 este utilizat atunci c%nd sc*ema logic trebuie continuat pe o altpagin "onectorul conine o liter sau un numr care trebuie s fie identic cu cel de pe pagina

    unde se continu prelucrarea

  • 7/25/2019 Laborator PC A4

    23/127

    Programarea Calculatoarelor

    3tr%!t%ri "e !ontrol3tructurile de control sunt grupri de blocuri de baz ce apar frecvent n sc*emele logice

    i pentru care sunt definite instruciuni specifice n limbajele de programare (n situaia noastr n"II)

    "tructura sec#en$ial! %sec#en$a& 2 grupeaz de obicei mai multe operaii (instruciuni)elementare (iniializri de variabile, prelucrri asupra datelor, tiprire a rezultatelor, etc)

    "tructura alternati#! %decizia&2 permite ramificarea simpl a execuiei n funcie de valoarea deadevr a condiiei "ele dou ramuri se exclud mutual

    5ste posibil ca una dintre ramuri s fie vid (s nu conin alte blocuri)

    "tructura repetiti#! condi$ionat! anterior (buclaKciclul cu test iniial) 2 secvena se executrepetitiv c%t timp condiia este adevrat 3ecvena se mai numete n aceast situaie i corpul

    buclei (corpul ciclului) ac rezultatul testrii iniiale a condiiei este fals, secvena nu esteexecutat nici mcar o singur dat

    6

  • 7/25/2019 Laborator PC A4

    24/127

    Programarea Calculatoarelor

    O$*Pentru structura repetitiv condiionat anterior, condiia testat pentru repetareasecvenei se scrie identic n pseudocod i n "II

    Pentru ca secvena s nu se repete la infinit, n cadrul acesteia trebuie modificatevariabilele ce sunt folosite n condiia testat pentru repetarea buclei astfel nc%t la un momentdat s se poat realiza ieirea din bucl

    1n afar de structurile de control menionate anterior i care permit descrierea oricruialgoritm, mai exist c%teva structuri de control derivate din acestea ce sunt folosite uzual ianume&

    "tructura repetiti#! condi$ionat! posterior(buclaKciclul cu test final) 2 secvena (corpul buclei)se execut repetitiv p%n c%nd condiia devine adevrat 3pre deosebire de bucla cu test iniial,n cazul buclei cu test final secvena se execut cel puin o dat

    O$*Pentru structura repetitiv condiionat posterior condiia testat pentru ieirea dinbucl trebuie scris negat n "II fa de pseudocod 1n pseudocod secvena se repet p%n c%ndcondiia devine adevrat, iar n "II secvena se repet at%ta timp c%t condiia este adevrat

    Pentru ca secvena s nu se repete la infinit, n cadrul acesteia trebuie modificate

    variabilele ce sunt folosite n condiia testat pentru repetarea buclei astfel nc%t la un momentdat s se poat realiza ieirea din bucl

    "tructura repetiti#! %bucla/ciclul& cu contor2 este derivat din structura repetitiv condiionatanterior 3ecvena se execut repetitiv de un numr prestabilit de ori controlat de valoareavariabilei contor Pentru ca repetarea s nu se fac la infinit, este necesar incrementarea(decrementarea) variabilei contor cu valoarea pas (care trebuie s fie diferit de zero)

  • 7/25/2019 Laborator PC A4

    25/127

    Programarea Calculatoarelor

    "tructura decizional! multipl!2 este o structur de control derivat din structura alternativ 2permite ramificarea multipl a execuiei ac nici una dintre condiiile testate nu a fostndeplinit, execuia este continuat n Zsecvena alternativh dac aceasta a fost specificat

    !bservaie" 1n "II structura s_itc* este puin diferit fa de celelalte structuri decontrol

    Halorile val' valn sunt de fapt constante, secvenele de instruciuni nu sunt ncadratede acolade i de asemenea pentru fiecare secven n parte de obicei apare n final instruciunea

    breaGB4nstruciunea s_itc* evalueaz variabilaKexpresia a i verific daca aceasta este

    ec*ivalent cu val', situaie n care se execut secvena de instruciuni imediat urmtoare p%nla instruciunea breaG "%nd este nt%lnit instruciunea breaG programul sare la sf%ritulstructurii s_itc* ac a nu este egal cu val', se trece la evaluarea cu val, i aa mai departe1n final, dac nici una dintre evaluri nu a fost adevrat, se execut instruciunile specificatedup default& i apoi se iese din structura s_itc* 5tic*eta default& i instruciunile scrise dupaceasta sunt opionale

    ac instruciunea breaG lipsete, se trece la execuia secvenei pentru val (fr a se

    mai verifica egalitatea), apoi la secvena pentru val6 i aa mai departe (inclusiv secvenapentru default) p%n la terminarea structurii sau p%n la prima instruciune breaG

  • 7/25/2019 Laborator PC A4

    26/127

    Programarea Calculatoarelor

    4nstruciunea breaG poate fi folosit de asemenea n orice alt structur repetitiv pentru aiei din bucl fr a mai fi necesar respectarea condiiei de ieire din aceasta

    5II' Lima%l )$e%"o!o"0pariia limbajelor Pascal i " au impus limbajul pseudocod n domeniul reprezentrii i

    elaborrii algoritmilor\imbajul pseudocod folosete o scriere similar limbajelor de programare moderne 5l

    permite at%t descrierea instruciunilor algoritmului, c%t i descrierea exact a tipului datelor cucare lucreaz algoritmul

    Date Ti)%l "atelor* ntregreal numericelogicir de caractere

    Nat%ra "atelor* constantevariabile

    Or:ani0area "atelor* tablouri unidimensionale-vectoribidimensionale-matricin-dimensionale

    liste stive cozi

    ansamble

    O)eraii !% "ate

    - "ate ntre:i* I, -, Q, K, cu rezultatul ntreg sau realZ , h, , A, , [ , Y , k cu rezultatul de tip logic

    - "ate reale& aceleai operaii ca n cazul datelor ntregi, cu rezultatul real n cazul operatoriloraritmetici i logic n cazul operatorilor relaionali- "ate lo:i!e& disjuncia ( ) , conjuncia ( ) , negaia (- )- 8ir%ri "e !ara!tere& concatenarea 2 rezultat de tip ir de caractere, comparaiile (bazate pe

    ordinea lexicografic) 2 rezultat de tip logic- $ti@e !o0i an$amle& extragerea i respectiv introducerea unui element ntr-o stiv, coad sauansamblu (x 0, x 0) precum i verificarea dac o stiv, coad sau ansamblu este vid (0 A )

    C%@inte !>eie& cuvinte din limba englez care identific un tip de date sau descriu oinstruc$iune

    In$tr%!i%ni* in punct de vedere al scrierii instruciunilor, o instruciune poate ocupa mai multe

    r%nduri, sau pe un r%nd pot fi scrise mai multe instruciuni 4nstruciunile vor fi separate, ntreele, folosind caracterul NBN

    .

  • 7/25/2019 Laborator PC A4

    27/127

    Programarea Calculatoarelor

    In$tr%!i%ni "e!larati@e* inte:er real ool !>ar arra7 $ta! %e%e >ea) urmat de un irde variabile separate ntre ele prin virgul, variabile pentru care indicm c au tipul respectivE?em)le& integer a, b, cB arra$ H(n), 0(m,n) B stacG 3

    In$tr%!i%ni efe!ti@e e?e!%taile

    1' In$tr%!i%nea "e atri%ire@ e

    unde @este o variabil, iar eeste o expresie de acelai tip (integer, real, bool, c*ar)$a% 5@1 @ S. @n' 5e1 e S. en'care realizeaz simultan cele n atribuiri

    ' In$tr%!i%nile "e !itire$!riererea" a1 a S anrite a1 a S an

    4' In$tr%!i%nea "e $ele!ie $im)l/ if#t>en#el$eif ) t>en 31 Kel$e 3en"if

    unde )este un predicat, iar 31i 3sunt secvene de instruciuni3e evalueaz predicatul )i n cazul n care valoarea este tr%e, se trece la executarea secveneide instruciuni 31 ac valoarea este fal$ese trece la execuia secvenei 3, iar dac aceasta nuapare, se trece la execuia instruciunii urmtoare instruciunii if

    -' 3ele!ia m%lti)l/!a$e p'& 3'

    p & 3

    pn & 3nKel$e3nI'

    en"!a$e

    unde 31 S. 3n sunt secvene de instruciuni, iar )1 S. )n sunt predicate satisfc%ndcondiiile&

    pi pj A () i [ j p' p C pn A ' dac nu exist ramura else

    ac p' este !;#5, se trece la execuia secvenei 3'dup care se trece la instruciuneaurmtoare dup endcase 0nalog pentru p, , pn ac nici un predicat nu a fost adevrat iexist ramura else, se trece la execuia secvenei corespunztoare, iar dac nu exist ramura else,se trece direct la instruciunea urmtoare dup endcase.H' In$tr%!i%nea re)etiti@/ >ile 5!% te$t iniial'

    >ile ) 3re)eat

    =

  • 7/25/2019 Laborator PC A4

    28/127

    Programarea Calculatoarelor

    3ecvena de instruciuni 3se execut repetat at%ta timp c%t predicatul )este !;#5

    ' In$tr%!i%nea re)etiti@/ "o 5!% te$t final'"o

    3

    %ntil )3pre deosebire de instruciunea >ile, instruciunea "oncepe cu executarea secvenei 3 i nu cuverificarea predicatului p

    J'In$tr%!i%nea re)etiti@/ for 5!% n%m/r !%no$!%t "e )a8i'for @ e1 e Ke4

    3re)eat

    unde @este o variabil numeric (contor), iar e1 e e4sunt expresii aritmetice cu e6 [ ac

    e6 lipsete, se consider egal cu ' 5fectul este executarea secvenei 3de nori

    ,' In$tr%!i%nea e?ite?it

    determin trecerea la execuia primei instruciuni care urmeaz celui mai interior ciclu "o >ilefor ieindu-se deci din acel ciclu

    Pro!e"%ri#n program n limbajul algoritmic este o succesiune de una sau mai multe procedurieclararea unei proceduri const n &

    )ro!e"%ren%me] (list de parametrii)^ ] declaraii ] secven de instruciunien"

    \ista de parametrii este un ir de variabile desprite prin virgul ce permit transmiterea datelorntre proceduriE procedur poate apela o alt procedur&

    Xie procedura )ro!e"%ren%me] (p', C, pn)^0dresarea ei se face prin !alln%me] (a', C, an)^, unde a', C, an sunt argumente care pstreazordinea, tipul i dimensiunile listei parametrilor p', C, pn

    1n cazul unei proceduri, lista de parametri conine at%t parametri de intrare, c%t iparametri de ieire(n urma apelrii procedurii, vor stoca rezultatele calculate de instruciunileprocedurii)

    Laborator #

    +

  • 7/25/2019 Laborator PC A4

    29/127

    Programarea Calculatoarelor

    -. ELEMENTE DE +AZ ALE LIM+AVULUI CBBOCA+ULAR E2PRE3II OPERATORI

    1. Pre!i0ai !are "intre "e!laraiile "e mai o$ re)re0int/ "efiniii @ali"e "e @ariaile*int x A -B KK @ali"/unsigned int A 'B KK in@ali"/& lipsete numele variabileiunsigned long a A , b A 6B KK @ali"/int 6xB KK in@ali"/& 6x nu poate fi un identificatorunsigned double a A 'B KK in@ali"/& tipul double nu poate fi unsignedfloat a A '

  • 7/25/2019 Laborator PC A4

    30/127

    Programarea Calculatoarelor

    d) po_(po_(a,b)K(cQd), 'K)Klog(xQ$)

    J. In$tr%!ti%nea !ore!t/ "e "efinire )entr% o @ariail/ ntrea:/ n%mit/ i@alent/ !% e?)re$ia*if (num A ')&a) if (num h ' `` num Z ')

    b) if ( (num AA '))c) if (num 2 ')"' if 5 ]5n%m ; 1''

    11. E?)re$ia*(p q) este ec*ivalent cu&

    a' ]) YY ] b) p q c) p q d) p `` q

    1. Care "intre e?)re$iile "e mai o$ e?)rim/ form%la*

    edc

    baQ

    +

    a ! " e fiin" @ariaile "e ti) "o%le.

    a) a-b K cId Q eB

    ' 5a#' 5!B"' [ e&c) (a-b)KcId Q eBd) a-b K (cId) Q eB

    14. Care "intre e?)re$iile "e mai o$ e?)rim/ o )/trime 5n%m/r real'*a) 'K

    ii) (IIa Q b-- K IIa 2 b--) 555BBa' [ 5##'' 55BBa' ; ##''

    iii) (a Z b c Z b b Q c I & b K c - & b I c) 55a ' G 55! ' G 55 [ !' B H' * 55 !' # H'' * 5 B !''

    1H. Ce $e @a afi8a la terminarea e?e!%iei %rm/toarei $e!@ene "e !o"*const int xA'B KK linia '- -xB KK linia coutZZxZZendlB KK linia 6

    a) ' b) -' !' Eroare la linia _ d) 5roare la linia 6

    1. Care e$te @aloarea e?)re$iei*' K - ' 6 Q 6 I 6

    a) ' c) 6 d) '

    1J. n !e !on"iii $e!@ena "e mai o$ @a afi8a `"a=Gif (valoare AA ' `` ') coutZZLdaLB

    a) c%nd valoare este ' b) c%nd valoare este ' !' ntot"ea%na d) niciodat

    1,. 3!riei !te o e?)re$ie )entr% *

    i) 0 testa dac un numr natural a este imparnW ]

    ii) 0 testa dac un caracter c reprezint o cifr! X ^^ !

    iii) 0 testa dac un caracter c reprezint o liter5! X a ^^ ! 0' YY 5! X A ^^ ! Z'

    iv) 0 testa dac un numr a este par i pozitiv sau dac este impar i negativ5nW ^^ n X ' YY 5nW ] ^^ n '

    1. Ce @a a)/rea afi8at n %rma e?e!%iei in$tr%!i%nii*coutZZ(+ K Q 6 - 'I (>K))B

    a) ' b) !' #J d) ->

    . Ce $e @a afi8a n %rma e?e!%iei %rm/toarei in$tr%!i%ni*6'

  • 7/25/2019 Laborator PC A4

    32/127

    Programarea Calculatoarelor

    cout ZZ (('IQ(6KI(

  • 7/25/2019 Laborator PC A4

    33/127

    Programarea Calculatoarelor

    1. Da!/ $e intro"%!e "e la ta$tat%r/ )entr% @ariaila a @aloarea 1 !e $e @a afi8a laterminarea e?e!%iei $e!@enelor "e !o" %rm/toare*i'if (a hA ) if (a Z )

    cout ZZ Lvaloarea lui a este micaLZZendlBelse cout ZZ Lvaloarea lui a este negativaLZZendlB

    R/$)%n$* me$a%l afi8at @a fi* Lvaloarea lui a este negativaL deoarece compilatorul asociazcuv%ntul c*eie else cu cel mai apropiat if care l precede Practic, aranjarea corect a liniilorde cod n acest caz este&if (a hA ) if (a Z )

    cout ZZ Lvaloarea lui a este micaLZZendlB else cout ZZ Lvaloarea lui a este negativaLZZendlB

    ii'if (a hA ) 8 if (a Z ) cout ZZ Lvaloarea lui a este micaLZZendlB 9else cout ZZ Lvaloarea lui a este negativaLZZendlB

    R/$)%n$* n acest caz nu va fi afiat nici un mesaj

    . Ce $e @a afi8a la terminarea e?e!%iei )ro:ram%l%i %rm/tor*void main()8int aB

    KK double bBaA 'B

    bABcoutZZaIbZZendlB9a' Eroare* i"entifi!ator ne"e!larat b) 6 c) 6 d) 6

    4. Care e$te @aloarea @ariailei ila terminarea e?e!%iei %rm/toarei $e!@ene "e !o"*i A B

    _*ile(i ZA)i IA Ba) ' HH c)

  • 7/25/2019 Laborator PC A4

    34/127

    Programarea Calculatoarelor

    -. Ce $e @a afi8a la terminarea e?e!%iei %rm/toarei $e!@ene "e !o"*int aA, bA'B_*ile (a h b)

    8

    a -A Bb IA B

    9cout ZZ a ZZ endlB

    a) ' 4 c)

  • 7/25/2019 Laborator PC A4

    35/127

  • 7/25/2019 Laborator PC A4

    36/127

    Programarea Calculatoarelor

    int $B$ A xBcout ZZ $K. I $K. I ceil(xK.)B

    a) = b)+ !'4 d)

    1-.Ce $e @a afi8a la terminarea e?e!%iei %rm/toarei $e!@ene "e !o"*int x A 'Bif(x A ) if (x AA ') cout ZZ xBelse cout ZZ Bcout ZZ B

    a) ' ' HH c) d) '

    1H. Care "intre $e!@enele "e atri%iri "e mai o$ $%nt e!>i@alente !% atri%irea*v QA sumaIIB

    a) suma A suma I 'B v A v Q sumaBb) vA v Q sumaBc) v A v Q IIsumaB"' @ @ [ $%ma& $%ma $%ma B 1&

    1.Ce $e @a afi8a la terminarea e?e!%iei %rm/toarei $e!@ene "e !o"*int iBfor(i A 'B iZA 'B iII)coutZZiZZ BcoutZZiZZendlB

    a) ' b) ' ' !' 1 d)

    1J. Ce $e @a afi8a la terminarea e?e!%iei %rm/toarei $e!@ene "e !o"*

    int a A ', b A , c A 6Bif (a Z )

    if (b Z ') cout ZZ LunuLB else cout ZZ LdoiLBelse if (c h )

    cout ZZ LtreiLB else cout ZZ LpatruLB

    a) unu ' trei c) doi d) patru

    1,. Ce $e @a afi8a la terminarea e?e!%iei %rm/toarei $e!@ene "e !o"*6.

  • 7/25/2019 Laborator PC A4

    37/127

    Programarea Calculatoarelor

    int x A ', $ A Bif (x) coutZZ

  • 7/25/2019 Laborator PC A4

    38/127

    Programarea Calculatoarelor

    8 cout ZZ (i I j) ZZL LB 9 9a' b) c) d)

    1H ' ' ' ' ' 1H 1 ' ' ' 1 H H

    4.Ce $e @a afi8a la terminarea e?e!%iei %rm/toarei $e!@ene "e !o"*for (int i A 'B i Z 'B iII) 8 if( i h ) breaGB

    else continueB cout ZZ iB 9

    a) ' 6 < . = + > b) !' nimi! d) ' 6 i$/ P P1P ....Pn %n"e Pi 52i bi' i 1...n $%nt "eterminate "e !oor"onatele !arte0iene 52i bi' i 1 n.

    O$*

    =

    ++ =

    n

    i

    iiii '('("

    '

    '' )(

    ,

    ' , unde xnI'A x', $nI'A $'

    3ol%ie*read nBarra$ x]nI'^, $]nI'^B

    for i A ', nread xi, $irepeatBxnI' x'B $nI' $'B

    s Bfor i A ', n

    s s I xiQ $iI'- $iQ xiI'repeatBs abs (sK)B

    _rite sB

    . 3/ $e "etermine @aloarea n%m/r%l%i Pi "in "e0@oltarea n $erie*Pi- 1 ; 14 B 1H ; 1J BS l%n"%#$e n !on$i"erare n termeni

    3ol%ie*read nB

    s B termen 'Bfor i A ', n

    P'

    P''

    P P6

    P

  • 7/25/2019 Laborator PC A4

    42/127

    Programarea Calculatoarelor

    s s I termen K ( Q i 2 ')B

    termen - termenrepeatB

    pi < Q s

    _rite piB

    4. 3e !ite8te "e la ta$tat%r/ %n n%m/r nat%ral n . 3/ $e afi8e0e $%ma !ifrelor a!e$t%i n%m/r.

    O$*a mod b A restul mpririi ntregi a lui a la ba div b A c%tul mpririi ntregi a lui a la b

    3ol%ie*read nB

    s B_*ile n

    s s I n mod 'B

    n n div 'repeat_rite sB

    -. 3e !ite8te "e la ta$tat%r/ %n n%m/r nat%ral n . 3/ $e afi8e0e n%m/r%l r/$t%rnat 5!itit "e la$fr8it $)re n!e)%t'.

    3ol%ie*read nBninv B

    _*ile n

    ninv ninvQ' I n mod 'B

    n n div 'Brepeat_rite ninvB

    H. 3/ $e @erifi!e "a!/ %n n%m/r nat%ral n e$te )rim.

    3ol%ie*read nB prim 'B

    if n A ' n A t*en prim else for i A , n div

    if n mod i A t*en prim endif

    repeatBendifB

  • 7/25/2019 Laborator PC A4

    43/127

    Programarea Calculatoarelor

    if prim A ' t*en_rite Fr prim

    else_rite Fr neprim

    endifB

    . 3/ $e afi8e0e )rimele nr n%mere )rime.

    3ol%ie*read nrB n B j B KQ j contorizeaz numrul de numere primeQK_*ile j Z nr

    prim 'Bfor i A , int(sqrt(n))

    if n mod i A t*en

    prim endifB

    repeatB if prim A ' t*en

    _rite nB j jI'B endifB n nI'BrepeatB

    J. 3e !ite8te "e la ta$tat%r/ %n n%m/r nat%ral n . 3/ $e afi8e0e "e$!om)%nerea $a n fa!tori)rimi n format%l fa!tor c e?)onent.

    3ol%ie*read nBi B KQ ncep%nd cu i A verificm dac i este divizor al lui nQK

    _*ile n '

    fm B KQ n fm contorizm de c%te ori s-a mprit n la i QK_*ile n mod i A

    fm fm I 'B n n div irepeatBif fm t*en _rite i, , fmendifBi i I'B

    repeatB,. 3/ $e afi8e0e )rimele nr n%mere )erfe!te. Un n%m/r $e n%me8te )erfe!t "a!/ e$te e:al !%$%ma "i@i0orilor l%i 5mai )%in el'.

    3ol%ie*read nrB

  • 7/25/2019 Laborator PC A4

    44/127

    Programarea Calculatoarelor

    n .B KK cel mai mic numr perfect este .

    j B KK n j contorizm numrul de numere perfecte_*ile j Z nr

    perfect B

    s

    Bfor i A ', n div if n mod i A t*en

    s s IiendifB

    repeatBif s A n t*en

    perfect 'endifB

    if perfect A ' t*en_rite nB

    j j I 'endifn n I 'B

    repeatB

    . 3e !ite$! "e la ta$tat%r/ "o%/ n%mere reale a 8i . 3!riei %n al:oritm !are $/ reali0e0einter$!>imarea @alorilor n%merelor*a' folo$in" o @ariail/ a%?iliar/' f/r/ @ariaile a%?iliare

    3ol%ie*a) metoda de intersc*imbare se bazeaz pe principiul celor trei pa*are&

    pas '& 3e golete primul pa*ar n pa*arul auxiliarBpas & 3e golete al doilea pa*ar n primul pa*ar (rmas gol)Bpas 6 3e golete pa*arul auxiliar n al doile pa*ar (rmas gol)read a, b

    aux aB a bB b auxB_rite a, b

    b) metoda de intersc*imbare se bazeaz pe operaiile de adunare i de scdere a celor dounumere&read a, ba a-bB b aIbB a b-aB_rite a, b

    1. Con@er$ii "intr#o a0/ "e n%meraie n alt/ a0/ "e n%meraie

  • 7/25/2019 Laborator PC A4

    45/127

    Programarea Calculatoarelor

    a' Al:oritm "e !on@er$ie a %n%i n%m/r $!ri$ n a0a 1 ntr#o alt/ a0/ !% d

    3ol%ie*read n', bB KK n'este numrul scris n baza 'nbB KK nbeste numrul convertit n baza b

    p 'B_*ile (n'[)

    nbnbIpQ(n'mod b)B

    p pQ'B

    n'n'div brepeat_rite nb

    ' Al:oritm "e !on@er$ie a %n%i n%m/r "in a0a n a0a 1

    3ol%ie*read nb, bB KK nbeste numrul scris n baza bn'B KK n'este numrul convertit n baza '

    p 'Bdo n'n'IpQ(nbmod b)B

    p pQbB

    nbnbdiv 'until (nbA)_rite n'

    11. 3e !ite8te "e la ta$tat%r/ %n n%m/r nat%ral n. 3/ $e @erifi!e "a!/ e$te )alin"rom a"i!/!itin"%#l "e la $fr8it $)re n!e)%t $e oine a!ela8i n%m/r.

    O$*0lgoritmul calculeaz inversul numrului n prin extragerea pe r%nd a ultimei cifre dinnumrul n i compune unui nou numr cu aceste cifre

    3ol%ie*read nBnrnB KK n nr salvm numrul iniial n

    ninvB KKse iniializeaz inversul numrului cu valoarea _*ile nr [

    ninvninv Q' Inr mod 'B

    nrnr div 'repeatif ninv A n t*en _rite este palindrom

    else_rite nu este palindromendif

  • 7/25/2019 Laborator PC A4

    46/127

    Programarea Calculatoarelor

    1. Fiin" "at %n inter@al Ka !% a 8i n%mere nat%rale !itite "e la ta$tat%r/ a $/ $eafi8e0e toate )alin"roamele "in a!e$t inter@al.

    3ol%ie*

    read a,bBfor nAa, b

    nrnB

    ninvB_*ile nr [

    ninvninv Q' Inr mod 'B

    nrnr div 'repeatif ninv A n t*en

    _rite n este palindromendif

    repeat

    14. 3e !ite8te "e la ta$tat%r/ %n @e!tor !% n !om)onente reale.3/ $e !al!%le0e tri%n:>i%l "e )erimetr% ma?im !e $e )oate forma "in a!e$te n%mere iar n!a0 !/ n% $e )oate forma ni!i %n tri%n:>i $/ $e afi8e0e %n me$a !ore$)%n0/tor.

    3ol%ie*

    read nBarra$ v]n^Bfor i A ', n read virepeatBfor i A ', n 2 '

    for j A iI', nif viZ vjt*en

    aux viB

    vivjB vjauxB

    endifrepeat

    repeatBgasit B

    i 'B

    _*ile (iZ n-) (gasit A )if viZ viI'I viIt*en

  • 7/25/2019 Laborator PC A4

    47/127

    Programarea Calculatoarelor

    p viI viI'I viIB _rite pB gasit 'B

    endifrepeatif gasit A t*en _rite nu s-a putut forma nici un triung*iendifB

    1-. 3e !ite8te "e la ta$tat%r/ %n @e!tor !% n !om)onente ntre:i @1 @ S. @n. 3/ $e rein/ntr#%n @e!tor U toate n%merele fie!are @aloare o $in:%r/ "at/ 5"e!i U are n%mai!om)onente "i$tin!te'.

    3ol%ie*arra$ v]n^, u]n^B read nB

    for i A ', n read virepeatBu'v'B G ' B KQ G contorizeaz poziiile din vectorul # QKfor i A , n KQ cu indicele j parcurg vectorul #QK

    r B j ' B KQ dac viaparine mulimii # format din Gelemente, r va lua valoarea ' QK

    _*ile (j G) (r A )

    if viA uj t*en r '

    else j j I 'endif

    repeatif r A t*en KQ dac vinu aparine mulimii #, atunci l adaug

    pe poziia GI' QK G G I 'B

    uGviendif

    repeatB

    for j A ', G_rite uG

    repeatB

    1H. Fiin" "at/ matri!ea A5n?m' 8i matri!ea + 5m?)' $/ $e !al!%le0e n matri!ea C5n?)')ro"%$%l !elor "o%/ matri!i.

    O$*ci,jA ai,'Q b',jI ai,Q b,jI CC I ai,mQ bm,jA *+m

    +

    +i ba ,'

    , =

    3ol%ie*read n, m, pB arra$ a]n,m^, b]m,p^, c]n,p^Bfor i A ', n

  • 7/25/2019 Laborator PC A4

    48/127

    Programarea Calculatoarelor

    for j A ', m read ai,jrepeat

    repeatBfor i A ', m

    for j A ', p read bi,jrepeat

    repeatBfor i A ', m

    for j A ', pci,jBfor G A ', m ci,jci,j I ai,GQ bG,j B

    repeatrepeat

    repeatBfor i A ', n

    for j A ', p_rite ci,j B

    repeatne_line

    repeat

    1. Fie e!%aia "e :ra"%l al "oilea !% !oefi!ieni reali a?B?B! !% a a 8i ! fiin" !itite"e la ta$tat%r/. 3!riei %n al:oritm !are f/r/ a !al!%la r/"/!inile e!%aiei $/ "eterminenat%ra 8i $emn%l a!e$tora.

    O$* se utilizeaz relaiile lui Hiete& x'Ix A 3 A -bKa, x'Qx A P A cKa3ol%ie*

    read a,bcBdeltabQb 2

  • 7/25/2019 Laborator PC A4

    49/127

    Programarea Calculatoarelor

    if P h t*en _rite x'Z i xZelse if PA t*en _rite x'A i xZ

    else _rite x'h i xZ,cu `x'`Z`x`

    endif

    endifendif

    else _rite ecuaia nu are soluii numere realeendif

    1J. Inm%lirea a la r%$$e* 3e !on$i"er/ %rm/toarea meto"/ "e nm%lire 5n%mit/ nm%lirea=a la r%$$e=' a "o%/ n%mere nat%rale nen%le ? 8i 7*3e scriu denmulitul i nmulitorul pe aceeai linie, n dou coloane alturate 3e mpartedenmulitul la , succesiv, ignor%nd restul, p%n c%nd numrul din prima coloan devine egal cu

    ' 1n acelai timp, se nmuleste nmulitorul cu at%tea etape c%te au fost necesare mpririidenmulitului pentru a ajunge la valoarea ' 1n coloana a treia se adun toate valorile de pecoloana a doua care corespund unor valori impare aflate pe prima coloan

    E?em)l%* fie xA i $A'.Prin applicare algoritmului de mai sus, se va obine configuraia urmtoare&

    ? 7 re$t $%ma '. ' '.' 6 . .< 6 '+ ' '+' . ' .

    ----------

  • 7/25/2019 Laborator PC A4

    50/127

    Programarea Calculatoarelor

    read a,bB arra$ x]'^, $]'^Bi'B xiaB $ibB

    sumB_*ile xih'

    xiI'xi div B

    $iI'Q$iB

    iiI'Brepeat_*ile ih

    if ximod A' t*ensumsumI$iB

    endifii-'B

    repeat_rite sum

    1,. Cal!%l%l @alorii %n%i )olinom ntr#%n )%n!t "at.3e !on$i"er/ )olinom%l P !% !oefi!ieni reali "efinit )rin*

    )5?' an2nB an#12n#1... B a12 B a%n"e ai5i 1 ... n' $%nt n%mere reale $i re)re0int/ !oefi!ienii )olinom%l%i P.3e !ere $/ $e !al!%le0e @aloarea )olinom%l%i n )%n!t%l "at ?.

    O$*Pentru calculul valorii polinomului P pentru o valoare dat x A xse poate aplica sc*emalui Jorner, care const ntr-o aranjare convenabil a polinomului P astfel nc%t calculele s poatfi executate cu un numr c%t mai mic de operaiiPentru reprezentarea polinomului se va utiliza un tablou de coeficieni al crui numr deelemente este determinat de gradul polinomului i nu depinde de numrul de termeni nenuli din

    polinom

    3ol%ie*arra$ a]n^B

    read n, x, a,C,anBpanB

    in-'Bdo ppQxIaiB

    ii-'Buntil iA_rite p

    1. A"%narea a "o%/ )olinoame.

  • 7/25/2019 Laborator PC A4

    51/127

    Programarea Calculatoarelor

    3e !on$i"er/ )olinoamele P 8i !% !oefi!ieni reali "efinite )rin*)5?' an2nB an#12n#1... B a12 B a%n"e ai5i 1 ... n' $%nt n%mere reale $i re)re0int/ !oefi!ienii )olinom%l%i P.5?' m2mB m#12m#1... B 12 B %n"e i5i 1 ... m' $%nt n%mere reale $i re)re0int/ !oefi!ienii )olinom%l%i .

    3e !ere $/ $e "etermine )olinom%l $%m/ 3PB.

    O$* gradul polinomului 3 va fi max 8m,n9, iar coeficienii si vor fi& ai, mI'YiYn, atunci c%nd mZnsi A bi, nI'YiYm, atunci c%nd mhn ai Ibi, YiYmin 8m,n9

    3ol%ie*arra$ a]n^, b]m^B read n, m, a,C,an, b,C,bmB

    if nZm t*en minnB maxmelse minmB maxn

    endifif mZn t*en

    for iAmI',n siai

    repeat

    endifif mhn t*enfor iAnI',m

    sibi repeat

    endiffor iA, minim(m,n)

    siaiI birepeat

    _rite s,C,smax

    Probleme propuse

    '

  • 7/25/2019 Laborator PC A4

    52/127

    Programarea Calculatoarelor

    1. n )lan%l ?O7 $e !on$i"er/ %n "re)t%n:>i $)e!ifi!at )rin !oor"onatele !ol%rilor $tn:a#o$ 5?$7$' 8i "rea)ta;$%$5?"7"'. 3/ $e "etermine "a!/ %n )%n!t oare!are M5?7' $e afl/ $a%n% n interior%l "re)t%n:>i%l%i.

    O$*#n punct :(x,$) se gsete in interiorul sau pe frontiera unui poligon convex dac&

    aria(,',,n) A aria(,',) I aria(,,6) II aria(,n,')

    . 3e "/ %n )oli:on !on@e? P $)e!ifi!at )rin !oor"onatele @rf%rilor 8i %n )%n!t oare!areM5?7'. 3e !ere $/ $e !al!%le0e "i$tana "e la )%n!t%l M la )oli:on%l P.

    O$*istana de la punctul :(x,$) la poligonul P A,',,neste egal cu lungimea celui maimic segment de la punctul : la un punct de pe poligonul P

    4. 3e !ite$! trei @alori reale )o0iti@e a !. erifi!ai "a!/ ele )ot forma lat%rile %n%itri%n:>i& aflai )erimetr%l 8i aria a!e$t%ia.O$*Pentru arie se va folosi formula lui Jeron&

    )()()( cpbpapp" = , unde pAsemiperimetrul

    O$*ac triung*iul este dat prin coordonatele v%rfurilor sale& 0(x0,$0), /(x/,$/), "(x",$"),atunci fie se calculeaz dimensiunile laturilor prin formula distanei ntre dou puncte din plan iapoi se calculeaz aria prin formula lui Jeron, fie se calculeaz aria pe baza formuleideterminantului&

    -.3e "/ %n !er! C "e !entr% !5x+ ,' 8i ra0/ r !% ? 7 r !itite "e la ta$tat%r/ 8i o "rea)t/5"' "at/ )rin e!%aia "re)tei* axBb,Bc !% a ! !itite "e la ta$tat%r/. 3/ $e "etermine)o0iia "re)tei 5"' fa/ "e !er!%l C.

    O$*istana de la centrul cercului la dreapta (d) se calculeaz cu formula distanei dintre unpunct i o dreapt&

    ,,

    ((

    ba

    c'b(adist

    +

    ++

    =

    H. 3/ $e "etermine "a!/ %n n%m/r nintro"%$ "e la ta$tat%r/ a)arine $a% n% 8ir%l%i l%iFiona!!i* 114H,141 SSSS.

  • 7/25/2019 Laborator PC A4

    53/127

    Programarea Calculatoarelor

    . Fiin" "at %n inter@al Ka !% a 8i n%mere nat%rale !itite "e la ta$tat%r/ a 8i %n altn%m/r ! !itit "e la ta$tat%r/ $/ $e afi8e0e toate n%merele "in inter@al%l "at !are $%nt"i@i0iile !% n%m/r%l !.

    J. Fiin" "ate n inter@ale Ka n 8i )ere!>ile a 8i fiin" n%mere nat%rale !itite "e la

    ta$tat%r/ a $/ $e afi8e0e !a)etele inter@al%l%i !e re)re0int/ inter$e!ia !elor n inter@ale"ate.

    ,. 3/ $e "etermine toate n%merele )rime !% ma?im H !ifre !are r/mn )rime 8i "%)/in@er$area lor.

    . 3/ $e afi8e0e toate n%merele "e "o%/ !ifre !e n"e)line$! !on"iia*,)( baab +=

    1. 3e !ite8te "e la ta$tat%r/ %n @e!tor @ !% n elemente reale nd1. 3/ $e reali0e0e)erm%tarea !ir!%lar/ la $tn:a 8i la "rea)ta a elementelor @e!tor%l%i.

    O$* Permutarea circular la dreapta& x', x, x6, CC xn-', xn

    x, x6, CC xn-', xn, x'

    Permutarea circular la st%nga& x', x, x6, CC xn-', xn

    xn, x', x, x6, CC xn-'

    11. 3e !ite8te "e la ta$tat%r/ %n @e!tor @ !% n elemente reale nd1. 3/ $e @erifi!e "a!/elementele @e!tor%l%i formea0/ o m%lime 5a"i!/ a% @alori "i$tin!te'.

    1. 3e !ite8te "e la ta$tat%r/ %n @e!tor @ !% n elemente reale nd1. 3/ $e afi8e0e a!eleelemente ale @e!tor%l%i )entr% !are $%ma !ifrelor e$te "i@i0iil/ !% H.

    14. 3/ $e "etermine %ltima !ifr/ a n%m/r%l%i 4? ? fiin" %n n%m/r nat%ral !itit "e lata$tat%r/.

    O$* 3e va folosi restul mpririi ntregi a lui x la 6& x mod 6

    1-. 3e !ite8te "e la ta$tat%r/ %n @e!tor @ !% n elemente n%mere ntre:i nd1. 3/ $e afi8e0eelementele @e!tor%l%i !are $%nt )rime !% %n n%m/r "at !itit "e la ta$tat%r/.

    1H. 3/ $e "etermine a!el n%m/r nat%ral !% )ro)rietatea* B1dn n fiin" %n n%m/r nat%ral!itit "e la ta$tat%r/.

    1. 3/ $e "etermine "a!/ %n n%m/r n !itit "e la ta$tat%r/ are !ifrele in or"ine $tri!t!re$!/toare.

    6

  • 7/25/2019 Laborator PC A4

    54/127

    Programarea Calculatoarelor

    1J. Pentr% o @aloare n !itit/ "e la ta$tat%r/ $/ $e "etermine )rimele n tri)lete "e n%mere)ita:ori!e.

    O$* x,$,z sunt numere pitagorice dac xZ$Zz i xI$A z

    1,.3e !ite8te "e la ta$tat%r/ %n @e!tor @ !% n elemente reale nd1. 3/ $e !on$tr%ia$!/ %nalt @e!tor % "e n elemente a$tfel n!t %K re$t%l m)/ririi l%i @K la $%ma !ifrelor $ale1Sn.

    1. 3e !ite8te "e la ta$tat%r/ %n @e!tor @ !% n elemente reale nd1. 3/ $e !on$tr%ia$!/ %nalt @e!tor % "e n elemente a$tfel n!t %K n%m/r%l "i@i0orilor l%i @K 1Sn.

    . 3e !ite8te "e la ta$tat%r/ %n n%m/r nat%ral n !% !el m%lt !ifre. 3/ $e afi8e0e !el mai

    mare 8i !el mai mi! n%m/r !are $e )oate forma !% !ifrele "i$tin!te ale n%m/r%l%i.

    1. 3e !ite8te "e la ta$tat%r/ %n @e!tor @ !% n elemente reale nd1. 3/ $e $!rie %n )ro:ram!are $/ in$ere0e n @e!tor )e )o0iia 5 !itit "e la ta$tat%r/ dn' %n no% element !itit "e lata$tat%r/. Celelalte elemente n!e)n" !% )o0iia B1 $/ fie "e)la$ate la "rea)ta re0%ltn"%n @e!tor !% nB1 !om)onente.

    . 3e !ite8te "e la ta$tat%r/ %n @e!tor @ !% n elemente reale nd1. 3/ $e $!rie %n )ro:ram!are $/ m%te la $fr8it%l @e!tor%l%i toate elementele $ale n%le f/r/ a %tili0a %n @e!tora%?iliar.

    4. 3e !ite8te "e la ta$tat%r/ %n @e!tor @ !% n elemente reale nd1. 3/ $e $!rie %n )ro:ram!are $/ e?tra:/ "in a!e$t @e!tor $%8ir%l "e "imen$i%ne ma?im/ or"onat !re$!/tor.

    -. 3e !ite8te "e la ta$tat%r/ %n n%m/r nat%ral n.a' 3/ $e $!rie %n )ro:ram !are $/ afi8e0e n%m/r%l oin%t )rin eliminarea !ifrelor !are $ere)et/ n n%m/r%l "at.

    ' 3/ $e $!rie %n )ro:ram !are $/ afi8e0e n%m/r%l oin%t )rin inter$!>imarea !ifrelor

    e:al "e)/rtate "e !a)etele n%m/r%l%i.

    !' 3/ $e $!rie %n )ro:ram !are $/ afi8e0e !el mai mare n%m/r !are $e )oate forma "in!ifrele n%m/r%l%i "at

  • 7/25/2019 Laborator PC A4

    55/127

    Programarea Calculatoarelor

    Laborator -

    J. AL6ORITMI CORE3PUNZTORI UNOR PRELUCRRIELEMENTARE REPREZENTAI

    N 3C9EM LO6IC P3EUDOCODPartea a doua

    TE3TE 6RIL

    1. Fie $e!@ena "e )$e%"o!o" *

    a 'Bb aI'Bif (a[b) t*en b bI'B

    else a aI'Bendifa aQbB

    Ce @aloare @or a@ea @ariailele a 8i la $fr8it%l a!e$tei $e!@ene "e in$tr%!i%niGa) ' 4 4 c) ' 6 d) 6 e) 6

    . Fie $e!@ena "e )$e%"o!o" *read aB_*ile (a[)

    xa mod 'B

    aa div '

    repeat_rite x

    Ce @aloare @a fi afi8at/ la $fr8it%l a!e$tei $e!@ene "e in$tr%!i%ni )entr% a -JH G

    a)

  • 7/25/2019 Laborator PC A4

    56/127

    Programarea Calculatoarelor

    _rite caldBelse if (temperatura Z ) t*en

    _rite optimB endif

    endif endif

    endif

    La im)lementarea n CBB a $e!@enei "e mai $%$ $!ri$/ n )$e%"o!o" $#a !on$tatat !/)entr% @aloarea @ariailei `tem)erat%ra= H )ro:ram%l n% a afi8at nimi!. A!e$t l%!r%e$te !a%0at "e*

    a' o eroare lo:i!/ 5"e )ro:ramare'

    b) o eroare de compilarec) o eroare de sintaxd) o eroare de rulare (de execuie)

    Pentr% @aloarea @ariailei `tem)erat%ra= )ro:ram%l @a afi8a*a) cald b) foarte cald !' o)tim d) canicula

    -. Fie $e!@ena "e )$e%"o!o" *read a,bBc B_*ile (a[)

    c cQ'Ia mod 'Ba ]aK'^B

    repeat_*ile ((bQch) (b mod' A cmod '))

    b ]bK'^Bc ]cK'^B

    repeats bIcB

    _rite s

    Ce @aloare @a fi afi8at/ la $fr8it%l $e!@enei "e in$tr%!i%ni )re0entat/ mai o$ )entr%)entr% a 14-H 8i - G

    a) . ' 1 c) d)

    H. Fie $e!@ena "e )$e%"o!o" *for iA',

    for jA',if((iAj)(iIjAi) t*en _rite Q else _rite

    .

  • 7/25/2019 Laborator PC A4

    57/127

    Programarea Calculatoarelor

    endif repeat ne_linerepeat

    Ce !onfi:%raie @a fi afi8at/ la $fr8it%l a!e$tei $e!@ene "e in$tr%!i%ni Ga) Q b) QQQ !' [[ d) QQQ QQ [[ QQQ QQQ QQQ [ QQQ QQ [[ QQQ Q QQQ [[

    . Trei "intre %rm/toarele )atr% $e!@ene )$e%"o!o" @erifi!/ "a!/ n%m/r%l nat%ral a !itit"e la ta$tat%r/ e$te %n n%m/r )ar.

    Care e$te $e!@ena !are n% reali0ea0/ a!e$t l%!r% G

    a) if (a div A aK) t*en_rite a este parB

    else_rite a este imparB

    endif

    b) if (a mod A ) t*en_rite a este parB

    else_rite a este imparB

    endif

    c) if ((a-') mod A ) t*en_rite a este parB

    else_rite a este imparB

    endif

    "' if 55[a' mo" ' t>enrite `a e$te )ar=&

    el$erite `a e$te im)ar=&

    en"if

    J. Ce reali0ea0/ %rm/tor%l al:oritm $!ri$ n )$e%"o!o"Garra$ a]n^B read nB

    for GA,n-'read aGrepeat

    =

  • 7/25/2019 Laborator PC A4

    58/127

    Programarea Calculatoarelor

    for iAn-,v aiBfor jAi,n-

    if vhajI't*en aj ajI'

    else breaGendif

    repeatajvB

    repeatfor GA,n-'

    _rite aGrepeat

    a) Erdonarea descresctoare a elementelor vectorului a' Or"onarea !re$!/toare a elementelor @e!tor%l%i ac) 4ntersc*imbarea elementelor vectorului de pe dou poziii consecutived) 4ntersc*imbarea elementelor vectorului egal deprtate de capete

    ,. 3e !on$i"er/ %rm/toarea $e!@en / n )$e%"o!o"*read aB_*ile a Z =

    b a - B_rite a I bBa a - b I 'B

    repeatB_rite bB

    Care e$te @aloarea afi at/ n final )entr% *a) 6

    b) c) -'"' @aloarea l%i n% e$te afi at/

    . 3e !on$i"er/ %rm/toarea $e!@en / n )$e%"o!o"*read aBi 'Bdo

    read bB _rite bBi i I 'B

    until bZaB_rite iB

    Pentr% !are "intre %rm/toarele $e!@en e "e n%mere intro"%$e $e afi ea0/ n final @aloarea H*+

  • 7/25/2019 Laborator PC A4

    59/127

    Programarea Calculatoarelor

    a) =, ', , 6, ' , H - 4 c) =, =, , , , >d) +, >, ', ', '

    1. aloarea l%i i afi at/ n final )entr% $e!@en a "e )$e%"o!o" "e la e?er!i i%l re)re0int/* a) numrul valorilor citite strict mai mici dec%t a

    b) numrul valorilor citite strict mai mari dec%t a!' n%m/r%l @alorilor !itite $tri!t mai mari $a% e:ale !% ad) o alt valoare

    11. A@n" al:oritmii*

    i Bs B

    _*ile i [ s Q s I iB i i I 'B

    repeatB_rite iB_rite sB

    i Bs B

    do s Q s I iB i i I 'Buntil i A B_rite iB_rite sB

    !are "in afirma iile %rm/toare e$te a"e@/rat/*

    a' al:oritmii $%nt e!>i@alen i # @alorile afi ate )entr% i i $ $%nt i"enti!e

    b) algoritmii nu sunt ec*ivalen i - valorile afi ate pentru i i s sunt diferite c) algoritmii nu sunt ec*ivalen i - valorile afi ate pentru i sunt diferite d) algoritmii nu sunt ec*ivalen i - valorile afi ate pentru s sunt diferite

    1. Pentr% %rm/toarea $e!@en / "e )$e%"o!o"*i B_*ile i h

    i i - 'B if i A ' t*en

    i B

    endifBrepeatB$)e!ifi!a i !are "in %rm/toarele afirma ii e$te a"e@/rat/* a) structura decizional nu influen eaz valoarea variabilei i

    b) structura decizional nu influen eaz numrul de execu ii ale structurii repetitive c) condi ia iA' este redundant (nu influen eaz numrul de execu ii ale structurii repetitive) "' $tr%!t%ra "e!i0ional/ infl%en ea0/ n%m/r%l "e e?e!% ii ale $tr%!t%rii re)etiti@e

    14. Pentr% al:oritm%l "e la e?er!i i%l 1 $)e!ifi!a i "e !te ori $e re)et/ %!la*

    a) de 6 ori' "e - ori

    >

  • 7/25/2019 Laborator PC A4

    60/127

    Programarea Calculatoarelor

    c) de orid) de . ori

    Laborator .

    ,. PRO+LEME REZOLATE N CBB CU AL6ORITMIREPREZENTAI N P3EUDOCOD

    1. 3/ $e $!rie %n )ro:ram !are )rime8te "e la !on$ol/ tem)erat%ra e?)rimat/ n :ra"eCel$i%$ 8i afi8ea0/ @aloarea a!e$teia n :ra"e Fa>ren>eit. n final %tili0ator%l )oate rel%a!on@er$ia.Xormula pentru conversia din grade "elsius n grade Xa*ren*eit este&

    .o=>

    - C

    o+6,

    Al:oritm%l $!ri$ n )$e%"o!o"* do read temp"B tempX >K Q !emp" I 6B _rite tempXB _rite ;epetati conversia (dKn)B read rB until r [ NdN 7 r [ NNB

    Pro:ram%l $!ri$ n CBBincludeZiostream*hincludeZconio*hvoid main()8

    float temp", tempXBc*ar rBdo 8 clrscr()B KK sterge ecranul cout ZZ L4ntroduceti temperatura in grade "elsius& LB cin hh temp"B tempX A temp" Q > K I 6B cout ZZ L!emperatura in grade Xa*ren*eit este& L ZZ tempX ZZ endlB

    cout ZZ L;epetati conversia (dKn)LB cin hh rB 9 _*ile ( (rAANdN) `` (rAANN) )B

    9B

    O$*1n evaluarea expresiilor matematice trebuie inut seama de tipul operanzilor i ordinea deevaluare a expresiilor ac am fi scris formula astfel&

    tem)F H [ tem)C B 4&prelucrarea acesteia ar fi produs un rezultat eronat

    .

  • 7/25/2019 Laborator PC A4

    61/127

    Programarea Calculatoarelor

    5xpresia >K din cauza faptului c > este reprezentat ca ntreg este evaluat ca un ntreg, iarvaloarea corect a frac iei >K (',+) este transformat prin trunc*iere tot ntr-un ntreg (') ceea ceevident denatureaz rezultatul expresieiHariabila tem)C este de tip floati n aceast situaie evaluarea se va face corect dac formulaeste scris&

    tem)F tem)C [ H B 4&

    . 3/ $e $!rie %n )ro:ram $im)l% !are !ite8te "e la !on$ol/ %n n%m/r nat%ral n 8i !al!%lea0/fa!torial%l a!e$t%i n%m/r.

    Al:oritm%l $!ri$ n )$e%"o!o"*read nBfactorialF 'Bfor iA',n

    factorialF factorialF Q iBrepeatB_rite factorialFB

    Pro:ram%l $!ri$ n CBB*includeZiostream*hvoid main()8

    unsigned int nBunsigned long factorialFBKQ daca pentru n se vor folosi valori mai mari decat 66, variabila

    factorialF va trebui sa fie de tipul unsigned double pentru aputea pastra valoarea factorialului QK

    cout ZZ Ln A LB cin hh nBfactorialF A 'Bfor(int iA'BiZAnBiII)

    factorialF A factorialF Q iBcout ZZ Ln A L ZZ factorialF ZZ endlB

    9B

    O$* \a stabilirea tipurilor variabilelor este necesar s inem seama de valorile maxime iminime pe care urmeaz s le memorm n acele variabile1n exemplul de mai sus, dac pentru variabila fa!torialNam fi utilizat tipul %n$i:ne" int (ce

    poate memora numere n intervalul -.6) cum probabil am fi fost tentai iniial s o facem,pentru valori ale lui nmai mari de + ar fi fost imposibil s putem memora valoarea factorialului(>A6.++) n variabila fa!torialNe aceea am ales %n$i:ne" lon:esigur, nici acest tip nu poate memora numere foarte mari (-.=>) i de aceea cea

    mai bun soluie ar fi s utilizm tipul %n$i:ne" "o%lepentru variabila fa!torialN

    .'

  • 7/25/2019 Laborator PC A4

    62/127

    Programarea Calculatoarelor

    4. 3/ $e $!rie %n )ro:ram $im)l% !are !ite8te "e la !on$ol/ %n 8ir 2 "e n elemente ntre:i5nH'. 3/ $e afi8e0e*

    a. $%ma elementelor )o0iti@e. )ro"%$%l elementelor )are

    !. $%ma elementelor ne:ati@e aflate )e )o0iii im)are". me"ia aritmeti!/ a elementelor !e "a% re$t%l la m)/rirea !% He. n%m/r%l elementelor mai mi!i 5$tri!t' "e!t H.f. 3/ $e @erifi!e "a!/ element%l !% in"e? m e$te "i@i0iil !% -.

    Fotm n pseudocod& a mod b A restul mpririi ntregi a lui a la b

    0lgoritmul n pseudocod este fragmentat pentru o mai uoar nelegere&

    n!/r!area elementelor intre:i ale @e!tor%l%i 2*

    doread nB

    until nh' and nYfor iA',n

    read D5i'&repeatB

    a. $%ma elementelor )o0iti@e*suma Bfor iA',nB

    if D5i' h t*en suma suma I D5i'&endifB

    repeatB_rite 3uma elementelor pozitive este& B_rite sumaB

    . )ro"%$%l elementelor )are*produs 'Bfor iA',n

    if D5i' mod A t*en produs produs Q D5i'&

    endifBrepeatB_rite Produsul elementelor pare este& B_rite produsB

    !. $%ma elementelor ne:ati@e aflate )e )o0iii im)are*suma B.

  • 7/25/2019 Laborator PC A4

    63/127

    Programarea Calculatoarelor

    for iA',nif D5i' Z and i mod A ' t*en

    suma suma I D5i'&endifB

    repeatB_rite 3uma elementelor negative aflate pe pozitii impare este& B_rite sumaB

    ". me"ia aritmeti!/ a elementelor !e "a% re$t%l la m)/rirea !% Hsumaelem Bnrelem Bfor iA',n

    if D5i' mod A t*en

    nrelem nrelem I 'Bsumaelem sumaelem I D5i'&endifB

    repeatif nrelem A t*en

    _rite Fu exista elemente ce dau restul la impartirea cu B else _rite :edia aritmetica a elementelor ce dau restul la

    impartirea cu este& B _rite sumaelem K nrelemB

    endifB

    e. n%m/r%l elementelor mai mi!i 5$tri!t' "e!t Hnrelem Bfor iA',n

    if D5i' Z t*en nrelem nrelem I 'B

    endifBrepeatB

    _rite Fumarul elementelor mai mici ca este& B_rite nrelemB

    f. $/ $e @erifi!e "a!/ element%l !% in"e? m e$te "i@i0iil !% -do

    read mBuntil mk' and mYnBif D5m' mod < [ t*en

    _rite Fumarul D5m'F# este divizibilB

    else _rite Fumarul D5m' este divizibil cu

  • 7/25/2019 Laborator PC A4

    64/127

    Programarea Calculatoarelor

    O$*\a scrierea codului n "II trebuie s inem seama de faptul c indexarea vectorului Dncepe de la zero (indexul primului element ntreg al vectorului D este zero) 0cest prim element,dei are indexul (care este numr par), este de fapt plasat pe o poziie impar n cadrulvectorului (irului de numere)

    O$*5valuarea logic (adevrat sau fals) a unei variabile numerice este& fals (false ) dacvariabila are valoarea zero sau adevrat (true, ') dac variabila este diferit de zero (are ovaloare nenul) e exemplu, pentru secvena de instruciuni&

    int a, bBaAB bA-=B

    evaluarea logic (n instruciuni de tip decizional - if) a variabilelor a i b ntoarce rezultatulfalse() pentru a i true(') pentru b

    Pro:ram%l !om)let $!ri$ n CBB )entr% re0ol@area )e rn" a !elor 8a$e !erine ale)rolemei 4*includeZiostream*hincludeZconio*hvoid main()8

    int n, D]^BKK preia de la consola elementele din sirul Ddo 8 clrscr()B coutZZL4ntroduceti nr de elemente ale sirului D (-)& LB cinhhnB 9_*ile((nZ)``(nh))BcoutZZL4ntroduceti elementele sirului DLZZendlBfor(int iABiZnBiII)

    8 coutZZLD]LZZiZZL^A LB

    cinhhD]i^B 9B

    KK a calculeaza suma elementelor pozitiveint sumaABfor(iABiZnBiII)

    if(D]i^h)sumaIAD]i^B

    coutZZL3uma elementelor pozitive este LZZsumaZZendlBKK b calculeaza produsul elementelor pare

    long produsA'Bfor(iABiZnBiII)if((D]i^)) KK conditia se poate scrie si ((D]i^)AA)

    .

  • 7/25/2019 Laborator PC A4

    65/127

    Programarea Calculatoarelor

    produsQAD]i^BcoutZZLProdusul elementelor pare este LZZprodusZZendlBKK c calculeaza suma el negative aflate pe pozitii imparesumaABfor(iABiZnBiII)

    if((iAA)(D]i^Z)) KK i este par si D]i^ este negativsumaIAD]i^B

    coutZZL3uma elementelor negative aflate pe pozitii impare esteLZZsumaZZendlB

    KK d calculeaza media aritmetica a elementelor care dau restul KK la impartirea cu

    KK pentru sumaelem folossim float pt a calcula corect mediafloat sumaelemAB int nrelemABfor(iABiZnBiII)

    if((D]i^)AA)8nrelemIIBsumaelemIAD]i^B

    9Bif(nrelemAA) coutZZLFu exista el ce dau rest la impartirea cu LZZendlB

    else coutZZL:edia aritmetica a el ce dau rest la impartirea cu

    este L ZZsumaelemKnrelemZZendlBKK e numara elementele mai mici (strict) ca nrelemABfor(iABiZnBiII)

    if(D]i^Z)nrelemIIB

    coutZZLFr elem mai mici decat este LZZnrelemZZendlBKK f verifica daca elementul cu indexul m este divizibil cu K din cauza faptului c pentru cei doi operanzi compilatorul folose te tipul int1n rezolvarea problemei curente, acest lucru ne ajut s eliminm repetat ultima cifr dinnumrul n

    H. 3/ $e $!rie %n )ro:ram $im)l% !are !ite8te "e la !on$ol/ %n n%m/r nat%ral n 8i l afi8ea0/r/$t%rnat 5!itit "e la $fr8it la n!e)%t'...

  • 7/25/2019 Laborator PC A4

    67/127

    Programarea Calculatoarelor

    Al:oritm%l $!ri$ n )$e%"o!o"*read nBninvers B_*ile n [

    ninvers ninvers Q ' I n mod 'B

    n n div 'BrepeatB_rite ninversB

    Pro:ram%l $!ri$ n CBB*includeZiostream*hincludeZconio*hvoid main()8

    unsigned long n, ninversBcout ZZ L4ntroduceti numarul n& LB cin hh nBninversAB_*ile(nh)

    8 ninvers A ninversQ' I n'B nKA'B 9B

    cout ZZ LFumarul inversat este& L ZZ ninvers ZZ endlBcout ZZ endl ZZ L0pasati o tastaLBgetc*()B

    9B

    O$*ac numrul ce este introdus de la tastatur are cifra la sf%r it, algoritmul de mai sus nupermite rezolvarea corect a problemei i de aceea el trebuie sc*imbat astfel (afi are cifr cu cifr)&read nB_*ile n [

    _rite n mod 'B

    n n div 'BrepeatB

    Pro:ram%l $!ri$ n CBB*includeZiostream*hincludeZconio*hvoid main()8

    unsigned long nB

    cout ZZ L4ntroduceti numarul n& LB cin hh nBcout ZZ LFumarul inversat este& LB_*ile(nh)

    .=

  • 7/25/2019 Laborator PC A4

    68/127

    Programarea Calculatoarelor

    8 cout ZZ n'B nKA'B 9B

    cout ZZ endl ZZ L0pasati o tastaLB

    getc*()B9B

    . 3/ $e $!rie %n )ro:ram $im)l% !are !ite8te "e la !on$ol/ %n n%m/r nat%ral n 8i afi8ea0/"a!/ a!e$ta e$te %n n%m/r )rim $a% n%.

    Al:oritm%l $!ri$ n )$e%"o!o"*read nB

    prim 'B

    case n & prim B'& prim B& prim 'Belse&

    for i A ,nrif n mod i A t*en

    prim Bexit forB

    endifBrepeatB

    endcaseBif prim A ' t*en

    _rite Fumarul este primB else

    _rite Fumarul nu este primBendifB

    Pro:ram%l $!ri$ n CBB*

    includeZiostream*hincludeZconio*hincludeZmat**hvoid main()8

    unsigned int n, primA'Bclrscr()BcoutZZL4ntroduceti numarul& LB cinhhnBs_itc*(n)8

    case &primAB KK numarul nu este primbreaGB

    .+

  • 7/25/2019 Laborator PC A4

    69/127

    Programarea Calculatoarelor

    case '&primAB KK numarul nu este primbreaGB

    case &primA'B KK numarul este prim

    breaGB default&

    for(int iABiZAint(sqrt(n))BiII)if(niAA)

    8primAB KK numarul nu este primbreaGB KK se iese din bucla for9B

    9B

    coutZZendlZZLFumarulLZZprimL este L&L nu este LZZLprimLZZendlB coutZZendlZZL0pasati o tastaLB getc*()B9B

    O$*3oluia acestei probleme este prezentat ca un exemplu de utilizare al instruciunii $it!>;ezolvarea se poate simplifica verific%nd ca valoarea lui n s fie mai mare sau egal cu i

    pstr%nd doar secvena de pe ramura "efa%lta instruciunii $it!>

    O$*0fi area rezultatului este fcut folosind operatorul condiional

    J. 3/ $e $!rie %n )ro:ram !are afi8ea0/ )rimele n n%mere )rime.

    Al:oritm%l $!ri$ n )$e%"o!o"*read nBnr B_*ile n h

    prim 'Bfor iA,nr

    if nr mod i A t*enprim Bexit forB

    endifBrepeatBif prim A ' t*en

    _rite nrBn n - 'B

    endifB

    nr nr I 'BrepeatB

    .>

  • 7/25/2019 Laborator PC A4

    70/127

    Programarea Calculatoarelor

    Pro:ram%l $!ri$ n CBB*includeZiostream*hincludeZconio*hincludeZmat**hvoid main()

    8unsigned int n, primBunsigned long nrBcout ZZ L"ate numere prime afisez LB cin hh nBnrAB KK incepem testarea de la care este prim_*ile(nh)

    8 primA'B KK presupunem ca numarul este prim for(unsigned long iABiZAint(sqrt(nr))BiII)

    if((nri)8 KK (nriAA)primAB KK numarul nu este primbreaGB KK se intrerupe bucla9B

    if(prim)8 KK (primAA')coutZZnrZZL LBn--B9B

    nrIIB9B

    coutZZendlZZL0pasati o tastaLBgetc*()B

    9B

    ,. 3/ $e $!rie %n )ro:ram !are !ite8te "e la ta$tat%r/ 0e!e n%mere ntre:i 8i afi8ea0/n%m/r%l !% @aloarea ma?im/ "intre a!e$tea.

    Al:oritm%l $!ri$ n )$e%"o!o"*for iA','

    read 05i'BrepeatBmaxim 051'Bfor iA,'

    if maxim Z 05i't*enmaxim 05i'B

    endifB

    repeatB_rite maximB

    =

  • 7/25/2019 Laborator PC A4

    71/127

    Programarea Calculatoarelor

    Pro:ram%l $!ri$ n CBB*includeZiostream*hincludeZconio*hvoid main()8

    int 0]'^, maximBclrscr()Bfor(int iABiZ'BiII)

    8 coutZZL0]LZZiZZL^ALB cinhh0]i^B 9B

    maximA0]^Bfor(iA'BiZ'BiII)

    if(maximZ0]i^)maximA0]i^Bcout ZZ LFumarul maxim este& L ZZ maxim ZZ endlBcout ZZ endl ZZ L0pasati o tastaLBgetc*()B

    9B

    O$*0cest exerciiu se poate rezolva folosind o singur bucl for, cea n care se faceintroducerea elementelor vectorului

    . 3/ $e $!rie %n )ro:ram !are !ite8te "e la ta$tat%r/ n n%mere ntre:i nH 8i afi8ea0/n%merele n or"ine !re$!/toare a @alorilor.

    O$*:etoda const n compararea elementelor dou c%te dou Pentru sortarea cresctoare, dacelementul din st%nga este mai mare ca cel din dreapta cu care se face compara ia, cele douelemente vor fi inversate Pentru aceast inversare se folose te o variabil temporar

    Al:oritm%l $!ri$ n )$e%"o!o"*repeat

    read nBuntil n k and n Y Bfor iA',n

    read 05i'BrepeatBfor iA',n

    for jAiI',nif 05i'h 05't*en

    tmp 05i'B 05i' 05'B 05' tmpB

    endifBrepeatBrepeatB

    ='

  • 7/25/2019 Laborator PC A4

    72/127

    Programarea Calculatoarelor

    for iA',n_rite 05i'B

    repeatB

    Pro:ram%l $!ri$ n CBB*

    includeZiostream*hincludeZconio*hvoid main()8

    int 0]^, tmpBKK preia de la consola elementeledo 8 clrscr()B

    coutZZL4ntroduceti numarul de elemente (-)& LB cinhhnB 9_*ile((nZ)``(nh))BcoutZZL4ntroduceti valorileLZZendlBfor(int iABiZnBiII)

    8coutZZL0]LZZiZZL^A LBcinhhD]i^B9B

    KK sorteaza crescator elementelefor(int iABiZn-'BiII) KK bucla incepe de la primul element si se

    KK termina la penultimulfor(int jAiI'BjZnBjII) KK bucla incepe de la elementul din

    KK dreapta celui cu index si se termina la ultimulif(0]i^h0]j^

    8tmpA0]i^B0]i^A0]j^B0]j^AtmpB9B

    KK afiseaza elementele sortatefor(int iABiZnBiII)

    coutZZ0]i^ZZL LBcoutZZendlZZL0pasati o tastaLBgetc*()B

    9B

    1. 3e !ite8te "e la ta$tat%r/ %n @e!tor @ !% n elemente reale nd1. 3/ $e $!rie %n )ro:ram!are $/ :enere0e %n no% @e!tor )rin inter!alarea ntre ori!are "o%/ !om)onente !on$e!%ti@e

    a @e!tor%l%i @ a me"iei lor aritmeti!e.

    Al:oritm%l $!ri$ n )$e%"o!o"*=

  • 7/25/2019 Laborator PC A4

    73/127

    Programarea Calculatoarelor

    read nB arra$ x]n^Bfor iA',n

    read xiBrepeati 'B j 'B

    _*ile (iYn-')$j xiB$jI' (xi IxiI')KB

    j jIBi iI'B

    repeat$j xiBfor iA',j

    _rite $iB

    repeat

    Pro:ram%l $!ri$ n CBB*includeZiostream*hincludeZconio*hvoid main()8

    int i,jBfloat x]'^, $]^BcoutZZse citeste dimensiune vectorB cinhhnBfor(iA'BiZAnBiII)

    8coutZZx]ZZiZZ^ABcinhhx]i^B9

    iA'B jA'B_*ile (iZAn-')

    8$]j^Ax]i^B

    $]jI'^A(x]i^Ix]iI'^)KBjAjIB iIIB9

    for(iA'BiZAjBiII)coutZZ$]i^ZZ B

    coutZZendlZZL0pasati o tastaLBgetc*()B

    9B

    11. 3e !ite8te "e la ta$tat%r/ %n @e!tor @ !% n elemente reale nd1. 3/ $e $!rie %n )ro:ram!are $/ elimine "in @e!tor element%l "e )e )o0iia !itit "e la ta$tat%r/. Celelalteelemente n!e)n" !% )o0iia B1 $/ fie "e)la$ate la $tn:a.

    =6

  • 7/25/2019 Laborator PC A4

    74/127

    Programarea Calculatoarelor

    Al:oritm%l $!ri$ n )$e%"o!o"*read n,GB arra$ x]n^Bfor iA',n

    read xiBrepeat

    for iAG,n-'xi xiI'B

    repeatfor iA',n-'

    _rite xiBrepeat

    Pro:ram%l $!ri$ n CBB*includeZiostream*h

    includeZconio*hvoid main()8

    int i,n,GBfloat x]'^BcoutZZse citeste dimensiune vectorB cinhhnBcoutZZse citeste pozitia elementului ce va fi eliminatB cinhhGBfor(iA'BiZAnBiII)

    8coutZZx]ZZiZZ^ABcinhhx]i^B9

    for(iAGBiZAn-'BiII)x]i^Ax]iI'^B

    coutZZnoul vector obtinut&Bfor(iA'BiZAn-'BiII)

    coutZZx]i^ZZ BcoutZZendlZZL0pasati o tastaLBgetc*()B

    9B

    1. Do%/ @e>i!%le $e "e)la$ea0/ %n%l $)re !el/lalt !% @ite0ele @1 8i @ ntre "o%/ lo!alit/iA $i + aflate la "i$tanta " %na fa/ "e !ealalt/. Aflai "%)/ !t tim) $e ntlne$! 5t' 8i la !e"i$tan/ fa/ "e A 5"1'.

    d'Av'Qt d-d'AvQt0vem, deci&

    '

    Q'',

    'QQ'

    ##

    d#diar

    ##

    dtt#dtd

    +

    =

    +

    ==

    =

  • 7/25/2019 Laborator PC A4

    75/127

    Programarea Calculatoarelor

    Pro:ram%l $!ri$ n CBB*include Ziostream*hinclude Zconio*hvoid main()8

    float v',v,t,d,d'BcoutZZati vitezele v' si v&B cinhhv'hhvBcoutZZati distanta d&B cinhhdBtAdK(v'Iv)Bd'Av'QdK(v'Iv)BcoutZZ3e intalnesc dupa timpul ZZtZZ la distanta ZZd'ZZ fata de 0 ZZendlBgetc*()B9

    =

  • 7/25/2019 Laborator PC A4

    76/127

    Programarea Calculatoarelor

    Laborator /

    . FUNCIIPrima parte

    1. ntr#%n )ro:ram CBB toate f%n!iile 5n afara f%n!iei

  • 7/25/2019 Laborator PC A4

    77/127

    Programarea Calculatoarelor

    for (int iA'B iZAGB iII)cout ZZ LQLB

    cout ZZ endlB9

    a) for (int iA'B iZAB iII)8spatiu(i-')Bstea(-i)B9

    b) for (int iA'B iZAB iII)8spatiu(i-)B

    stea(.-i)B9

    !' for 5int i1& iH& iBB'g$)ati%5i#1'&$tea5#i'&h

    d) for (int iA'B iZAB iII)8spatiu(i)Bstea(-i)B9

    H. Ce @aloare @a fi afi8at/ )e monitor n %rma e?e!%iei )ro:ram%l%i "e mai o$G

    include Ziostream*hinclude Zconio*h

    int f'(int a, int b)Bint f(int c, int d)Bvoid f6(int e, int f)Bmain(void)8 int x A ', $ A , z A 6B z A f'(x,$)B cout ZZ f($,z) ZZ endlB getc*()B

    9int f'(int a, int b)8

    ==

  • 7/25/2019 Laborator PC A4

    78/127

    Programarea Calculatoarelor

    b A aB return a Q bB9int f(int c, int d)8

    return c II I cQdB9void f6(int e, int f)8 int auxB aux A eB e A fB f A auxB9

    a) ' HH c) ' d)

    . 3e !on$i"er/ )rototi)%l f%n!iei* "o%le f15int int int'&Care "intre in$tr%!i%nile "e mai o$ e$te !ore!t/G

    a) coutZZf'(=, f'('

  • 7/25/2019 Laborator PC A4

    79/127

    Programarea Calculatoarelor

    int f'( float v )8 if (v h )

    return Q int(v)B

    elsereturn B

    9

    a' 4 b) 6 c) 6' d)

    1. n CBB "efiniiile f%n!iilor n% )ot fi imri!ate a"i!/ "efiniia %nei f%n!ii n% )oate fiin!l%$/ n !or)%l altei f%n!ii.

    a' a"e@/rat b) fals

    11. Definii o f%n!ie !are $/ !al!%le0e )entr% %n n%m/r ntre:

  • 7/25/2019 Laborator PC A4

    80/127

    Programarea Calculatoarelor

    int i, nrABfor (iA'BiZAnBiII)

    nrAnrIv]i^Breturn nrB9

    int cifra (int n)8int cBcAn'Breturn cB9void main ( )8citire ( )B

    int x A suma ( )BcoutZZcifra(x)B9

    14. Pro:ramele %rm/toare e?em)lifi!/ mo"%l "e l%!r% !% )arametrii tran$mi8i )rin@aloare 8i )rin referin/ @ariaile lo!ale 8i :loale.

    a'include Ziostream hinclude Zconio* husing namespace stdBint alfa, betaA'Bint "alcul(int x, int $)Bint main (void)8int a, b, cBa A B

    b A 6Balfa A 'B

    c A "alcul (a, b)BKK \ast t_o output linescout ZZ La A L ZZ a ZZ L b A L ZZ b ZZ endlBcout ZZ L alfa A L ZZ alfa ZZ L beta A L ZZ beta ZZ endlBgetc*()Breturn Bgetc*()B9int "alcul (int x, int $)

    8int betaBbeta A B+

  • 7/25/2019 Laborator PC A4

    81/127

    Programarea Calculatoarelor

    cout ZZ L x A L ZZ x ZZL $ A L ZZ $ ZZ endlBcout ZZ L beta A L ZZ beta ZZ endlBcout ZZ L alfa A L ZZ alfa ZZ endlB$ A Balfa A beta I $B

    x A alfa I $Bcout ZZ L alfa A L ZZ alfa ZZL $ A L ZZ $ ZZ endlBcout ZZ L x A L ZZ x ZZ endlBreturn $B9

    n %rma r%l/rii )e monitor @a a)/rea %rm/toarea $e!@en/*

    xA $A6

    betaAalfaA'alfaA $AxA

  • 7/25/2019 Laborator PC A4

    82/127

    Programarea Calculatoarelor

    ''' '

    1-. E?em)l% "e f%n!ie !are !al!%lea0/ i)oten%0a %n%i tri%n:>i "re)t%n:>i! f%n!ia a@n"!a )arametri l%n:imile !atetelor tri%n:>i%l%i*

    double ipotenuza(double cateta', double cateta)8return sqrt(cateta 'Q cateta ' I cateta Q cateta )B9

    1H. E?em)lifi!ai )rintr#%n e?em)l% il%$trati@ "iferena "intre %n )arametr% formal 8i)arametr% a!t%al.

    R/$)%n$*

    1n programul de mai jos, x este un parametru formal, iar $ este un parametru actual

    include Ziostream*hvoid Xunctie"alcul (int x) KK x este un parametru formal8KKCCCCCCCcoutZZ'QxB9void main()8int $ABKKCCCCCCCXunctie"alcul ($)B KK$ este un parametru actual9

    1. F%n!ia i= "efinit/ mai o$ )ro"%!e o afi8are "e forma *11 1 41 4 -SSSSSSS.1 4 - H SSSSSSSS.n

    void triung*i (int n)B8for (int iA B i Z nB iII)+

  • 7/25/2019 Laborator PC A4

    83/127

    Programarea Calculatoarelor

    8 for (int numar A 'B numar ZA iI'B numarII)

    cout ZZ numar ZZ L LB cout ZZ endlB 9

    9

    1J. F%n!ia

  • 7/25/2019 Laborator PC A4

    84/127

    Programarea Calculatoarelor

    for (jAB jZ6B jII) a]i^]j^ A (iI')Q(jI)Bafisare'(a)Bcout ZZ endlBafisare(a)B

    getc*ar()B9void afisare'(int b]^]6^)8for (int iAB iZ6B iII) 8 for (int jAB jZ6B jII) cout ZZ b]i^]j^ ZZ L LB cout ZZ endlB

    99void afisare(int b]^]6^)8for (int iAB ihAB i--) 8 for (int jAB jhAB j--) cout ZZ b]i^]j^ ZZ L LB cout ZZ endlB 99

    R/$)%n$* 6 '

    ' > .+ .

  • 7/25/2019 Laborator PC A4

    90/127

    Programarea Calculatoarelor

    includeZiostream*hincludeZmat**hinclude Zconio*hint xBfloat functie(int a )

    8float fBif(aZA) fApo_(a,6)-B

    else if (aZ) fAsqrt(aK6)Belse fAQaI6B

    return fB9void main( )8

    cinhhxBcoutZZfunctie(x)Bgetc*()B9

    . 3e "a% n n%mere. 3/ $e afle $%ma !ifrelor )are "in toate n%merele.

    R/$)%n$*includeZiostream*hinclude Zconio*hint n, v]'^Bvoid citire( )8int iB cinhhnBfor(iA'BiZAnBiII) 8 coutZZv]ZZiZZ^AB cinhhv]i^B 9B

    9int suma( )8int i, c, sABfor(iA'BiZAnBiII)

    8_*ile(v]i^A)

    8cAv]i^'B

    if(cAA)sAsIcBv]i^Av]i^K'B9B

    >

  • 7/25/2019 Laborator PC A4

    91/127

    Programarea Calculatoarelor

    9Breturn sB9main( )8

    citire( )B coutZZsuma esteZZsuma( )Bgetc*()B9

    1. 3/ $e afle $%ma 3A 'I,

    ,

    'B

    ,6

    'B S..B

    ,

    '

    n

    R/$)%n$*includeZiostream*hinclude Zconio*hincludeZmat**h

    int nBvoid citire( )8cinhhnB9float suma(int x)8int iB float sABfor(iA'BiZAxBiII)

    sAsI'Kpo_(i,)Breturn sB9main( )8citire( )BcoutZZsuma esteZZsuma(n)B9

    11. 3e "a% "oi @e!tori "e !te n elemente fie!are. 3/ $e afle*

    e '

    '

    '

    (B

    ,

    ,

    '

    (BS.B

    n

    n

    '

    ( 7i i1Sn

    R/$)%n$*includeZiostream*hinclude Zconio*hint nB float x]'^, $]'^Bvoid citire( )8

    int iBcinhhnB

    >'

  • 7/25/2019 Laborator PC A4

    92/127

    Programarea Calculatoarelor

    for(iA'BiZAnBiII) 8 coutZZx]ZZiZZ^AB cinhhx]i^B coutZZ$]ZZiZZ^AB cinhh$]i^B 9B

    9float suma( )8int iB float sABfor(iA'BiZAnBiII)

    sAsIx]i^K$]i^Breturn sB9main( )

    8citire( )BcoutZZsuma esteZZsuma( )Bgetc*()B9

    1. 3e "/ %n @e!tor !% n elemente. 3/ $e afle ma?im%l "intre $%mele a ori!/ror "o%/elemente @e!ine.

    R/$)%n$*includeZiostream*hinclude Zconio*hint n, v]'^Bvoid citire( )8int iBcinhhnBfor(iA'BiZAnBiII) 8

    coutZZv]ZZiZZ^AB cinhhv]i^B 9B9int maxim( )8int i, maxAv]'^Iv]^Bfor(iABiZAn-'BiII) if(maxZ(v]i^Iv]iI'^)) maxAv]i^Iv]iI'^B

    return maxB9main( )>

  • 7/25/2019 Laborator PC A4

    93/127

    Programarea Calculatoarelor

    8citire( )BcoutZZmaximul esteZZmaxim( )Bgetc*()B9

    14. 3/ $e or"one0e elementele im)are "intr#%n @e!tor.

    R/$)%n$*includeZiostream*hinclude Zconio*hint n, v]'^, u]'^B KK elem impare din vect v le introduc in vect uvoid citire( )8

    int iBcinhhnBfor(iA'BiZAnBiII) 8 coutZZv]ZZiZZ^AB cinhhv]i^B 9B9void impare( )8int aux,i,j,GAB KK G contor pt pozitiile vect ufor(iA'BiZAnBiII) if (v]i^AA')

    8GIIBu]G^Av]i^B9B

    for(iA'BiZAG-'BiII) KK sortez crescator vect ufor(jAiI'BjZAGBjII)

    if(u]i^hu]j^)8 auxAu]i^B u]i^Au]j^B u]j^AauxB 9B

    for(iA'BiZAGBiII) coutZZu]i^ZZ B KK afisez elem vectu9

    main( )8citire( )B

    >6

  • 7/25/2019 Laborator PC A4

    94/127

    Programarea Calculatoarelor

    impare( )Bgetc*()B9

    1-. 3e "a% A5m' 8i +5n'. 3/ $e afle C +jA.

    R/$)%n$*include Ziostream*hinclude Zconio*hint m,n,p, a]'^,b]'^,c]'^Bvoid citire( )8int i Bfor(iA'BiZAmBiII)

    8 coutZZLa]LZZiZZL^A LB cinhha]i^B 9Bfor(iA'BiZAnBiII) 8 coutZZLb]LZZiZZL^A LB cinhhb]i^B 9B9void diferenta( )8int i,j, s, KQ variabila semnal s ia valoarea '

    atunci cand b]i^ A a]j^, jA',C,n QKpABfor(iA'BiZAnBiII)

    8sABfor(jA'BjZAmBjII)

    if(b]i^AAa]j^)sA'Bif(sAA)

    8pIIBc]p^Ab]i^B9B

    9Bfor(iA'BiZApBiII) coutZZLc]LZZiZZL^A LZZc]i^B

    9main( )8>

  • 7/25/2019 Laborator PC A4

    95/127

    Programarea Calculatoarelor

    coutZZLmALB cinhhmBcoutZZLnALB cinhhnBcitire( )Bdiferenta( )Bgetc*()B

    9

    >

  • 7/25/2019 Laborator PC A4

    96/127

    Programarea Calculatoarelor

    Laborator ))

    11. PRELUCRRI ELEMENTARE CU TA+LOURI+IDIMEN3IONALE

    1. 3/ $e !itea$!/ "e la ta$tat%r/ elementele %nei matri!i "e ma?im 1 linii 8i 1 !oloane. 3/$e afi8e0e matri!ea !itit/.

    include Ziostream*hvoid main(void)8

    int a]'^]'^, nrlin, nrcol, i, jBcoutZZLFr linii&LB cinhhnrlinBcoutZZLFr coloane&LB cinhhnrcolBfor (iAB iZnrlinB iII) KKcitirea elementelor unei matrici

    for (jAB jZnrcolB jII)8

    coutZZL0]LZZiZZL,LZZjZZL^ALB cinhh0]i^]j^B 9

    for (iAB iZnrlinB iII) KKafiarea elementelor matricii8

    for (jAB jZnrcolB jII) coutZZ0]i^]j^ZZ BcoutZZNnNB KQ dup afiarea elementelor unei linii, se trece

    pe linia urmtoareQK 99

    . 3/ $e iniiali0e0e elementele %nei matri!i aleator !% !ifre o 8i 1*

    include Ziostream*hinclude Zstdlib*hvoid main ()8int tablou]'^]'^, a, bBfor (a A B a Z 'B aII) for (b A B b Z 'B bII) tablou]a^]b^ A rand()Bfor (a A B a Z 'B aII)

    8 for (b A B b Z 'B bII)cout ZZtablou]a^]b^ZZ B

    >.

  • 7/25/2019 Laborator PC A4

    97/127

    Programarea Calculatoarelor

    coutZZNnNB9

    9

    4. Pro:ram !are !ite8te "e la ta$tat%r/ o matri!e "e - linii 8i !oloane "e n%mere reale

    !al!%lea0/ tran$)%$a ei 8i afi8ea0/ tran$)%$a*

    include Ziostream*hvoid main()8KK :atricea originala, citita de la tastatura cu patru linii si sase coloanefloat a]

  • 7/25/2019 Laborator PC A4

    98/127

    Programarea Calculatoarelor

    include Ziostream*hinclude Zconio*hvoid main()8int a]^]^,b]^]^,c]^]^,l',c',l,c,sum,i,j,GB

    cinhhl'hhc'hhlhhcBif(c'Al)

    coutZZL4nmultirea nu este posibilaLZZendlB else

    8 for (iAB iZl'B iII) for (jAB jZc'B jII)

    8coutZZLa]LZZiZZL,LZZjZZL^ALB

    cinhha]i^]j^B9 coutZZendlB for (iAB iZlB iII)

    for (jAB jZcB jII)8

    coutZZLb]LZZiZZL,LZZjZZL^ALB cinhhb]i^]j^B

    9 coutZZendlB for(iA'BiZAl'BiII)

    for(jA'BjZAcBjII) 8 sumAB for(GA'BGZAlBGII) 8

    sumIA(a]i^]G^Qb]G^]j^)B c]i^]j^AsumB 9

    9 for(iA'BiZAl'BiII) 8 for(jA'BjZAcBjII) coutZZc]i^]j^ZZN NB coutZZendlB 99

    9

    H. 3e !ite8te "e la ta$tat%r/ o matri!e A !% m linii 8i n !oloane !e !onine "oar n%merele 8i

    1 5m 8i n !% @alori ntre 8i 1'. Fie!are linie !on$tit%ie re)re0entarea n a0a a %n%in%m/r nat%ral.Afi8ai n%merele nat%rale n a0a 1 )entr% fie!are linie n )arte )re!%m 8i $%ma a!e$tora.>+

  • 7/25/2019 Laborator PC A4

    99/127

    Programarea Calculatoarelor

    Al:oritm%l $!ri$ n )$e%"o!o"*do

    read mBuntil m k and m Y 'Bdo

    read nBuntil n k and n Y 'Bfor iA',m

    for jA',ndo

    read 05i'Buntil 05i'A or 05i'A 'B

    repeatBrepeatB

    suma B

    for iA',mnr Bfor jA',n

    nr nr Q I 05i'B_rite 05i'B

    repeatB_rite nrBsuma suma I nrB

    repeatB_rite sumaB

    Pro:ram%l $!ri$ n CBB*

    includeZiostream*hincludeZconio*hvoid main()8

    int 0]'^]'^, m, n, i, j, nr, sumaABclrscr()BKK citeste numarul de linii pana cand m este in intervalul -'do 8 coutZZLFumarul de linii (-')& mALB cinhhmB 9 _*ile ((mZ)``(mh'))BKK citeste numarul de coloane pana cand n este in intervalul -'

    do 8 coutZZLFumarul de coloane (-')& nALB

    >>

  • 7/25/2019 Laborator PC A4

    100/127

    Programarea Calculatoarelor

    cinhhnB 9 _*ile ((nZ)``(nh'))Bfor(iABiZmBiII) KK citeste elementele matricii 0

    for(jABjZnBjII)KK citirea unui el se repeta pt valori diferite de sau '

    do 8 coutZZL0(LZZiZZL,LZZjZZL)ALB cinhh0]i^]j^B 9 _*ile((0]i^]j^A)(0]i^]j^A'))B

    KK afiseaza matricea 0 si calculeaza reprezentarea in zecimal aKK liniilor precum si suma acestor numere

    for(iABiZmBiII)8

    nrABfor(jABjZnBjII)8 KK calcul numar ec*ivalent linie

    nrAnrQI0]i^]j^B KK afiseaza elementul matricii

    KK urmat de spatiu (tab) coutZZ0]i^]j^ZZLtLB 9B

    KK la sfarsitul unei linii este afisat nr in zecimalcoutZZL A LZZnrZZendlBKK si se