laborator pc a4
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