Sunteți pe pagina 1din 19
Instructiunile limbajulul | Teste grild sawwate) jbuie variabilei reale x Care ce usta zoe ental vata ae > ‘ea mai mare dintre valorile variabilelor reale a $i b S2U Cau’ In care acestea sunt egale? wb 4) 4€ (aceb) xb; else xma; 6) if (ae=b) 39 Af (amb) x=a; @) mai ; oa eS ee, DE xe) bi ©) Nici una dintre secventele antericare. —@ Solutio Sintaxa instructiuni ££ este urmatoares: 4€ () ou ‘Se evalueaz’ expresia . Daca valoarea acesteia este ater — Oy tna se execu secvenia de insu , naz contra se execu 1cv_2>. De obicei, este o expresie logicé, @ carei valoare indi valoaréa de adevér a unei condifji. Deosrece limbajul C++ rompreines ie valoare nenulé crept “adevarat’ gi 0 drept ‘als, rezulta cf de fapt =a), atunci x ia \aloarea lui b, in caz contrar x la valoarea lui a, In varianta 6) atribuile sunt inversate, acesta find algoritmul minimului dintre a sib, Varianta ¢) este incompleta. Sunt testate numai situatile "a==b" si "b>a’, In care x ia valoarea ii a, respectiv, b. Nu este acoperit cazul "a>b’, in care x {rebuie sa ia valoarea lui a (daca b este cel mai mare). Inrucdt acest caz este ‘ingurul rémas, arf suficient sa se adauge la sférgitul secvenfei un "else x=a", 2 , varianta d) este corect si chiar mai “elogarge crn ea ta aa AMIN ct 3): det con teil ete "ac Dacd aceasta conde ete arg tune x ia aoara vile In cbt cans eine sf he he x Valoarea inal a, Asada, sau open ote clei eazun pour gee dintre aceste C2zut, x ia valoarea celui mai mare dintre tumerelea gin COreCt: a) 5! a), Fie variabele sib, ambele de tipul int, ale céor valor se presupun cunosoute. Sete 0 secvenié de program pentu enuntl “decd numero > sunt ambele impare, atuneltpéreste valoarea 2". ‘a) 4£ ((x82t=0) ce (y$21=0)) cout << 1; 4) 4£ (xt2==0 || y82—=0) cout << 1; @) Af (xt2 66 y¥2) cout << 1; @) Af (1(x42=0 || y42==0)) cout << 1; @) Af (!(x82==0) Ge 1(y82—=0)) cout << —@_Solutie Un numar inreg x este par, dacd restul impair intregt a lui x la 2 este Zero, Spre exemplu, 14 Impartitia2 da restul 0. Ca expresie C++, aceast& conditie se sctie "xt2==0", Un numa tniveg x este impar, daca restul Impairilintregialuixla 2 este iferit de zero, adica "x82 '=0" ‘ituatia ca numerele x si y 88 fie ambele impare, adicé "xx impar $7 y ‘impar", se traduce prin expresia: "(xt21=0) && (yt2!=0)”. Dar parantezele pot fi omise, pentru c8, aga cum am a‘état in capitolul Introducti, ordinea implicité in care se executd operatori este aceeasi: mal inti ei aritmetic ("8"), apo cei relationali (1=" s, In final, cel logici ee"). Cu ate cuvinte, putem serie "x82!=0 Ge ye2t=0" ‘Asadar, enuntul "act ‘numerele x si y sunt ambele impore, ature! ‘ipireste valoarea 1" se scrio ca expresie C++ astfel: AE ((xt21=0) 66 (y821=0)) cout << 1; sau Af (x82!=0 66 y821=0) cout << 1; Prima forma este chiar cea din varianta a). Analizim tn contnuare celelalte variante: +) 3£ (x82=00 I yt2==0) cout << 1; ‘Se vede clar c& aceasta secventa nu corespunde enunjulul. Condijia testata in istructiunea if este "x par SAUy par’, #0) Sf (x82 66 yt2) cout << 1; 8 Scanned with CamScanner ws Ih loc de *s y+ pute serie ™ xR tao ge y¥2te0" Pu ga’, respec, Datorta can ast eta ps scents es. ges ents Exoresia "xt2 ce yt2" se evalueaz® a50" Scrat! "Fe Cu alte - "Yi2 20 ca valor rumere intel Rezutatd HM tl OTe va oh $2 opera regi este 2, dacd amb oP 29 yea? 9° le, "x82 gg " ‘valoarea 3, 7 o2t=0- ez ete acl eu cl a expt “#4270 ce cu a}. ee 7A {in consecinta, expresia de la ¢). ind ech cout <3 ae wt2, y2 este 2 OSE (8 (xn2——0 || YAO) CO tre at sN2end || yrdecd™ nccarnd “std BIT, acest oxpresi? 2270". Ce eect ar apicoresopettonl 2 METRE, aug yumere ae Valcarea Fireste 8 daca nu este adevarat cb nul BME SO Oiag ge yA2!=0. Agadar 210, atunci ambete sunt cenit de zero! Atel Po, v valent cu 2) 7 ‘ $i Varanta d) este echvalenté cu 3) sete co fora "121A" de i oti De Morgan, avern: Se putea interpreta gi altel. Expresa 0°82 a ty teen * d fal) nostru: aot ot rman, a au a fr rin a an son nt a Sno <2) Deci varianta d) este corecta eZ ee tn ae) 4 (1 (xt2e=0) 66 1 ‘Aceasta este chiar forma interm transforma exreil dela). dec eves CMEC es. yo a) s/o) wet; Inurma execute! secvente! | + (eee) IL eee)? de program alaturate, pentru care “inte ("td\n" ,-x) 5 dite tpktele de vaio ale vana- | i# (bree) Printe( Dilelor a, b,c, date mai jos, se va |) ore ate a OE ce) print ("d\n"): 2) an3,02, ont pyant.beset ark eden? d) am2, bed, c=3 @) a=4, b=2, on3 —Gl_Solutie In cacruluneiinstuctiuni £¢-e1e, orcare dnte cele doud secvente, aferente celordou8 ramuri, poate fa randul stu o alta instrucjune ££-elee. In ‘acest caz, se formeazé o aga-numita “structurd if-else imbricatd *. Implicit, 4 se asociazé ullimulul 4 anterior care fiecare 18 wa tet eat "00S ces aan et et ecera Perit COMarae, rezertm mar severe ta eo wel: * insrucunea ese dn Te (t(aceb) HI Has=o)) (1) ceca Meant ia (4) ae ie (=o) (2) | hima rarest, 88, 98) printe(a\n"-1); (3) | tne este aut un raat else (4) |), a6e8 0 nous instuctuns oe s£ (bce) (5) | Toate tine (2).06) sae, print£("a\nt,x); (6) | corpulinstuenun ifn teeta ‘Analizém acum secventa data, pentru a vedea influenta acoladelor: wel: ‘+ instructiunea else din nia (4) se 4 (laced) I] H(acec)) (1) asociazé if-ulul din tinia. (1) cl Corpul acestui 4£ este un alt ¢ if (b>=c) (2) ‘anume linile (2). (3), gi este , Petaesersetar as) ‘cuprins intre acolade pentru ca all s-ar face asocierea implicta else (a) din varianta cealata In fine, corpul if (bb. ‘Analog, "a nu este mai mic sau egal ca co” inseamna abe. In conciuzie, condita de mai sus poate firescrisi astfel: a>b | ade Pentru ca secventa si afigeze valoarea 1, ea trebuie $8 tipareasca valoarea variabilei x, deci trebuie s2 se execute linia (6). Aceast line se executa in cazul tn care condiia de mai sus, care apare in linia (1) este falsd. Cu alte uvinte,trebui $3 60 inte pe ramura eee a 3£ Ulu din linia (1). rei dintre cele cinci triplete, date ca variante de rSspuns, indeplinesc condita din iia (1), si anume tripletele a), c) gi e) In consecin, aceste variate se elimina. Raman in discutjie variantele b) sid). Apol, mai este necesar 8 fie Indeplnita condita "bce" a instrucunii € din tnia (5), Dintre cele dova triplete rémase, doar cei din varianta de raspuns 6) verificd aceasta conaite. mai mic R8spuns corect: 6). ‘Se considera secventa de mai jos, in care x esle 0 variabild de tipul “caracter, iar m este de tip intreg 4s Scanned with CamScanner po Merete ees damsips os LN cy Care cine cee tre eevee St. 52. ‘secventa data? Secventa secventa S2)) aagt || x='E') ERS ol Siemtot Wo? 7 wel a $f Gemmryr yy ameter) | 98 agay 11 (arte FACED) else 2-0; 48 (ret ge x2!) a0; sive 38 (ets!) mets else = M Secventa S3 Ge Geter |] s'8") mete else : Sf (emtb! |] merc! 1] xete") sly aise 207 4) umai St 6) rumaiS2 ¢) numai $3 d) wate ——_—€) nc una —@_solutie Reamintim 8, in absenta acoladelor, fiecare else se asociazé ultimului 4 anterior carer a fost inc asia. Interpretam 1 ea este o transcriere fideld a secventei date, singun hosted 6 ogee In po ma edeeva.Fecate else ets ‘wecut dedesubtul gn dreptul4¢-uli cdi fi corespunde > (1) dact valoarea variabiei x este caracterul ‘a’, atunci variabila m ia valoarea ¢; > @)incaz conver, + (3) daca valoarea lu x este caracterl b' sau caracterul ‘e', atunc 2 la valoarea 1; + (A)incazul contar Wi (3), ‘+ (6) daca x esto un caracter mai mare decat caracterl *e' gi ‘al mic decatcarecterul ‘2, tun! m ia valoarea 0. Condiia se traduce prin (compararea caracterelr se face din punct de vedere alfavetc). + ©) incazul contar lui (5), 4s | = (7) dacd x este caractorul x, atunci m este 1; = (@)In.caz contrarm este -1. CObservim c8 arbuirea med. Se produce in dous cazur, (3) (7) care pot {i"comasate": AE (xemtb! [| xmetc! I] xemtz) mea; (#A) ‘Analog, atribuitea m=0 se face tot in doud cazur, respeciv, (1) 5 (5). ‘Aceste cazuri pot fla réndul lor “reunite” Intro singurd instrucjune 4 4£ ((xemta') [| (x>!6! G6 x<'2")) m0; (#8) In celelalte cazuri rémase, variabilam ia valoarea ~2. ‘Am ajuns astfel la seoventa $2 de unde rezulté cd gi secverta 52 este echivalentd cu cea data Secventa 53 testeazé conditjile in alt ordine fata de S2, dar acopers aceleasi cazui: VValoile lui x pentru care se intrd pe ullimul ese in secventa $2, sunt: x'2" (evident 8, dacd valoarea ll x nu este nici unul dintre caractrele ta’,"b',"o", '2', $i nic un caracter din interval deschis ("c", . .«, ="), atunci ‘aceasta valoare este mai mica dectt caracterul *a" si mai mare decdt caracterul +21 1), In secvenja S3 aceste cazuri fac objectul testi din primul 4¢, dar se cexecutd aceeaglatribuire ca in secventa S2 gi anumem=-2. Dac nu este indeplnita condiia de mai sus, atunc se testeazd cazul(*A) din varianta $2: dacd x este unul dintre caracterele "b',*c* sau 'z', atunci are loc aceeasi arbuire met, ca gi in secventa $2 In sfargit, cazurile rémase netestate in varianta 53, care se regasesc pe ultima ramura else, sunt toomai cele din cazul (*B) al variantei S2 $i de aceasta até are loc aceeasi atibuire ca In varanta $2, adic& m=O, Varianta $3 este echivalenta cu S2, care la randul sau este echivalenta cu secvena data, Deci si $3 este echivalenta cu secventa data. In consecin{a, toate cele trei secvente Si, $2 si S9 sunt echivalente cu cea din enunt. ‘R&spuns corect: dl). Ce va afiga programul urmator, dac& de la tastatura se introduc In ordine numerele 5, 7 $187 include void main() { int x,y,z cin >> x >> y >> #; me (xtyte) /3; awiteh (m) ( ” Scanned with CamScanner case 1,2,3,4: ( cout <<’ "corigent"? break: } case 5,6: { cout << "mediocru"? case 10: a { cout << "Foacte bine"? break; default: a? ‘cout << "EROARE !"7 d ) " oy ee ees grsneseacntor! @)'Foarte bing: ‘Corigent' b) ‘Medic 2) 'EROARE | —G1_sSolutie : ‘ech alege una dintre mai mute junea de selecie muttipld switch B selector. Flecare samp unc ce vant el 5 IN ramurd contin o secventa actus dnt-una sau mal In programul nostu: a ae ‘+ secitesc de la tastaturé valor = se atribuie variabilei m valoarea se Valorie ofite sunt #5, Y=. w= (54748) /3=20/3=6. “yp ‘ sunt Intregi, atunci operatonul "/ Reamintim 8, daca. ambi 0 eae. Deck rn 6 dork Gletermina ctl ntreg at impart, pin eli r st fe electueze Imparirea cu vrgua zecimala, tune ebuia $4 convert variablla Bt un tip de date real corespunzétor. ‘Tot corp instucfunl switch Luna dintre ramurile instructiuit se va face inf Cazurle posible sunt: ~ (C1) case 2,2,3,4->cazum € (1,2,3,41; ~ (Q) case 5,6->cazuim € (5,6); ~ (GB) case 7,8,9-cazm € (8,9); = (C4) case 10-camui mato. ~ (C5) default ->x re orice alts valoare In afara celor de mai sus. Je variabilelorIntregi x, ¥ Siz; (xtytz) /3. Dac 2-8, atunci ‘este cuprine tntre acolade. Alegerea functie de valoarea variabilei m. Deoarece variatilam a primi anterior valoarea 6, rezulta c& este Indeptinit cazul (C2), deci se va executa secventa aferenta acestuia. Secventa In cauz’ 48 ste sirul de Caractere "Modi oeru", dupa care instructiunea break realizeaz’ toe ec atacand ase iegirea ‘Observatic& toate "tamu" instruciuni sx tch contin un wn ee es Senn ete crm ania Dae? cazuui din linia case respective), dupa care sar executa corpurie totoe *ramurilor’ ulteroare, f€r& verificarea indepliniticazurior din tnile ease (pand lo Intdinirea primului break sau a acoladei care “inchide” switch-ul, daca nu mai ‘exist nici un break). Precizalice se va afiga n urma executel secvente de program de mai jos pentru n=5 (8, n $i k sunt varabile inregi). spans core: b), 850; ket; while (keen) print€("S=ta", 8); ass by see) a9 @) s=15 @) s=0 —_Solutie Mai intai se fac iniiaizarile S=0 gi=2, Cat timp x este mai mic sau egal cecdtn {while (k<=n)), executd: ~ adaugi la 8 valoarea curentaa lui k (S+=k, adicd $=S+%); ~ méreste cu 2 valoarea lui k (k#=2, care inseamna k=K+2). Descriem pas cicluiui pentru nes: Inial s=0 5 (Pas 1: cen ? (valoarea li k este mai mic& sau egalé cu n 2) 1<=5 ? da > executd corpul ciclului: S$=S4%, S=062, S=1 gl Kek#2, ke142, ke3 Pas 2: kewn? 36-57 da => SeStk, S143, Sad gl Rekt2, ka3t7 Pas 3: Kean? 565 7da => S=Stk, Se4+5, S29 gi kek+2, k=5+2, Ke? Pas: keen? 7e=5 7 nu = abandoneazé cc Linia {prints ("s=%a", 5) ;)afigeazd textul "S=", apoi valoareafinala a variables (folosindu-se specificatorul de format td). Se va aiga S=9. Rspuns corect: ¢). 49 Scanned with CamScanner seuteana covert facto Care dite secvenel de program de ma #2 humartu natural 7 (Raaranein: at=d2"- + 53) evar ggoewsy for - cise: desea: PP pepe en a si)siS3)_@) tole 2) numaiSt) &) numai$2) _) numai $3) —G_Solutie ‘Sa “raducem" linia for (i=2. picen sith)? Nee ia a conor (os oxo ctimp Se) {eps contr oe ap uma est S66, acd = Serena coe en i ‘ - In concluzie, contorul 4. va lua pe rand val Es pas, pentru fiecare valoare a lui 3, executa corpulciciluls Init Pot sis Pasul J, pentru i=: PaP+i, P=l*2, Pasul 2, pentru i=2: PaPti, Pol*2; Pasul3, pentru i=3: PaP+i, Pe (142) *3; 1,2,..-9m gil fiecare {peti}. Pasiln, pent inn: boit2. 4m. Se obser ch aceas secvent calelezé coectn!. inexpresia P-P*ie+ cin secvenia SI) epare operatorl "++" in forma postrxata, Ea se executa asttel: se foloseste In expresie valoarea curenté a lui & (se executé P=P*i); = spol se execut i+ (adicd i=i+2). In concluze, secventa 52) poate fi rescrisé astel: Pel; et; ‘Secventa contne un cil cu test na while (ic=n) Cat timp 4 este mai mic sau egal dec&t n cates {while (i<=n)} executd: rai ~ Inmuiteste la P valoarea curentd a lui 4 (P=P#i), fae ~ mareste cu 1 valoarea luis (4=4+1). 50 ‘Acum urmérin papi ciclulu, ludnd ca exemplu naa Initial B= $t Pasul 1; estea28 d9C8 Scan; Le=4 7 da = exccuts corp cic Pept, Pell, Pel $i dmitt, deted, iz pasul 2: Leen 7 2en4 da Peri, Beis? Gi aeist, swzen ‘asul 3: 420? 324 7 do PaPHs, Pa(1*2) 3, gi Leis seiey og Pasul 4; Aen? And 7 da => Pats, P= (1423) *4, 5) Amis, aeaet Pasul 5: 4 abandoneazé cicul ‘Asadar, pentru na4, sa objinut dupa patru payi valoarea Pei +2+3+4 adic’ 41. Pe caz general, dupa n pasi, vom obtine evident Pe1*2*. +n, acicd at Secventa SH): pea; isl; ‘Secventa contine un ciclu cu tes final. do Execut ( = Inmuiteste la _P valoarea curentd a lui i (P¥=s Peat; inseamna P=P*3), dsith; ~ mareste cu 1 valoarea lui 4 (Ami) } while (1a" din linia whét© ‘a boa poderansian Se 126.2 oi ns ne devine sere 1A" glee, xa5# ‘condita in it iui, pentru cre u m=6, condita ts abt yea csi oconomee em devine 66 as) spins covet: @) $10) ‘Se considera programul urmator: include void main() t Ant a/b,0,d,i; cin >> a >> br if (eb) (era; ab; bee; » 0; for (ira;icnbite) i (282—0) det; cout << dz d Ce valoare se afigeaz’, conform algoritmului dat, pentru a=33 §ib=18 ? ae 7 go ae 233 —Gl_Solutie Se citesc de la tastaturé valorile varatilelor a sib (cu cin). Dacd a>b, se interschimba intre ele valorie variabilelor a sib, cu "metoda paharelor’ valoarea {ui a este salvata int-o varabilaintermediard c (oma), In varibila a se memoreaza ‘valoarea lui (a=b), iar In varabila b se aduce valoarea inital ali a salvat8 in © (&=0). Se intilizeaza cu 0 varabila d 2 In ciclul £0: valoarea inila a contoruui 4 es timp L) ll 4, ve testeaza daca 108 442, este 0) in caz Réspuns corect: a). Se considerd secventa de program de mai jos, In care toate variabilele sunt intregi. Pentru n=3, care va fi valoarea variabilei P dup’ executia secventei 7 Pel; for (isl; icen; it+) t 820; for (391; Seni; 344) Seng; Pees; y 2) 180 pb) ae o9 @ 216 er Mi _Solutie Mai nti s8“raducem clu + Inciciul for (ist; icen; i++): valoarea intjalé a contoruuls este data e atrbuirea im, ciclul se executé cat timp i Peita, Pel Rezulth $=04142, Sei+2 ect pent J=22- = se8+3, pent 3 dela 2 la, = Pepes = pelt (142) Pasul 3, pentru i=3: = iil Sot go ta 1 La, det pont 3°2,2,3 e424 ersE? 214243), Pa2e = Tpepeg = pene (142) * (1424 oarecare & lui n, algoritmul calculeaza Pe caz general, pentru o valoare #(14243¢. 4) cexpresia Poi (Hoa) eC14Z09) 8 ACLN2ES AIM Rezuts 8=0+142+3, reczali ce se ve afiga In ura execuei programului urmator, presupuntnd c8 valoarea li x, care se ctete de la tastaturé, este 279. Hinclude void main() { ‘ant ©/8: Jong 4x7 ‘scant ("81d", x); 216 gu go e) 97 7 —a1_Soluste. Explicdm pe scurtfunctionarea programut + se citeste de la itrare valoarea variable! x (cu weant.folouny spe de format "$1", corespunz8tcr till Long al variate, 4 se atribuie lid valoarea pe care 0 ae x 9 se inializeaza 3 cu 0 4 cAt timp valoarea lui d este difert de 0, ("wnite (a) prescurtatd pentru "while (d!=0)"), execut: = Memoreazd in variabila ¢ restulimp&rti lu la 10 (oma 10) = adaugd las valoarea lui ¢ anterior oinutd (sme este cts vatent cu S840), ~ determina cétulintreg al impartin uid Ia 10 1 memareazs tt in 4 (a=4/10) 4 dupl Incheierea ciciului,afigeaza utima valoare a variable! s (cu peinte). SB descriem citu pentru x=179, Inia, S=0; dex, do179 Pasul 1: l=0 7 1791%0 7 da = executd corpul cilulul ond § 10, c=179 § 10, ond; SaSt0, 52049, Sm, d=d/10, du179/10, de17— Pasul 2: A'=07171=0 7 da = execut corpl cclului end § 10, c=17 § 10, 0-7; ‘ded/10, 4=17/10, d= Pasul3: A\=0? 11=0? da = executd corpul ciclului od'§ 10,c=1 4 10,c=1, Saat, ded/10, d21/10, d=0 Pasul 4: d¥=0°7 010 ? nu = abandoneaz’ ciclul Observam c8 algoritmu dat calculeaza suma cirelor numdrulu natural x Utima valoare alui s este 17 (94743, reprezentand suma citer lu 179) RAspung corect: ¢). ctieatorul eto 0 seriore 0, 82947, e741, S017; Fie © variabla x de tip intreg, feta de 0 gi 2. In urma execute! ‘ecventelor do program de mai jos, valoarea Variable! ok ar rebui safe: 1, daca ‘numérul x este prim, respec, 0, in caz contrar (variable ok gx su do tp Inte, iar valoarea lui x se presupune cit anterior, Care dint ele funconeaza corect in sensu realizar efectlui dont ? a » 9 oket; ok=1; ok=0; for (imzsiceiitey | for (ie2:icxsite) | for (i= ;aexsie+) if (x 8 i==0) if (x 8 i==0) i (x 8 iso) ok=0; Hy ok= printe("id",ok); | else ss Scanned with CamScanner 0) toate e) ii una 4) Solutie i are nici un divizor mu Reamintim: un num natural x e58 eiy oe aturale mai mich ‘Propriu. Posibili divizori propria lui x se cau Pr ect a itd) 0. anu Sere res jolt decd ene atevratd cei), ° aus condite, avem de-a face cu o testare logicd. Este ECO T Ye adevar a Intreagd, cu sens logic, a cérei valoare finald $4 ie got eaz contrary condjl testate: 1, dacd numa x ese Pn ‘secventele antericare variabila cu pricina es rim, res eee rmetoda reduce a absurd. Este cepcoreci Procir Prundna x ese in, cd variable! ok loarea 1 ; ee ee premmucemg tnt ena ivizori ei numéralui dat, x. Acestia sunt $=2,3, --- or este: (for (i=2: i void main() { int xy m,0,a, 7 wa) me (xeat3 ,Y=b-1,yt+, yt) 7 HQ) Af (@ 66 wy) cont << 1) Af (eryra G6 xy I] tm) cout << 1; else cout << 0; // (4) if ( (ney) —=0) 1] (-=x==4)) cout << x--; HG) |i timpul execute! programuli se pot spune urmatoarel: 2). Atri din lina (1) este eronet ‘) Instructunea din nia (2) este eronata )Inurma execufei nie’ (3) nu se afigeaza nic o valoare. @) Inurma execute liniei (4) se afigeaza valoarea 1. €) Inurma execute liniei (5) se afigeaza valoarea 4. —Al_Solutie \Vorn analiza pe rand linile de program care fac obiectuafirmatilor din cenunt: * asb=2; way 3 Scanned with CamScanner a, numa csc aril Este oinstucjune de atioire compu aa, primesc, in aceasta ordine, valoarea 2. Afirmati : (2) + me(eats,yab- greyed I 3,0 SESS AE EES Wine tne es Aceasta este 0 expresie compusd din mai multe operator "viguld™, Expresite elemertars Se evar. xa jar valoarea ultimei dintre ele este até ay este flat Tedeted, yeytedee2 gimmytseeSe7- Aira) + Af (a && wy) cout << m i) Tx este mai mare decat y*, Intra i so testeaza dac"a ex °s Pentru valorile existente, evaluarea eo oa atigenzd veloarea lim aie, 7. Afrmnatia ) cout <€ 1s alse cout << 07 //(4) 4 i€ eyoe at py Il 15) Syne Evaluates expres dn ina te Inscora orasay qu (2) sur 17, adc8 C2), SA 0. Be na cuing 1 SAU 0 cU rezultat 3 (se efectueaza mal nti operat "SSP alone “sar Peni cd expresa *"x-yoa ¢6 2>y II's! ate vaoaea 2 eouta “ramura ie, aigindu-se 2, Amat d) este odev (--x==4)) cout << x-7 4) . i testore. Mai preci, se ln expresia" (n=x>y) ==0", Intalnim o atribuire $1 0 tibuie lun vloarea expresiel "soy" (0 sau), apoivaloarea mete compara 1 0, Deo: $52 7 da = nel, 1==0 7 nu= valoaea expresiei(o=27y) 0 (cu sens de fas) : In ae _x==4", mai intal se decrementeazé x, apoi, noua valoare a lui x este comparaté cu 4. Agadar, x=5~1=4, apoi, x==4 7 da = valoarea expresiei"--x==4" este 1. i Tn urma operatei "Sx logic Intre valorie celor dou expresii de mai sus, se objine"0 sav 1” cu rezuita 1. ‘Asadar, oatS expresia ((n=x>y)==0) 11 (--x==4) ae valoarea 2, motiv pentru care se executainstrucjunea cout << x--. Se afigeazé valoarea Ccurenté a lui x, adic8, 4, si abia apoi se decrementeaza x. Afirmatia e) este ot aspuns crec: d) sie) Consider programul urmator: 21=0 $f 52 7 da = se 4 4€ (((asmy)=0) I include include void main() 8 b short int m,x; =a while ((scanf("td",6x)==1) 66 x) if (Om) mex; peinté("d",m) ; d Precizal ce valoare va afi program, dacd gil de numer testalurd in limpul execute acestia este 2,5, ~32000, 33000, 0, "°° 2 2 bo 330002 os __Solutie Pentru inceput vom analiza condita din linia white. Laun apel al functiei scan se pot citi una sau mai multe variable. Functia ‘scanf returneaz& numérul variabilelor cite corect. Veloarea returnaté este ula, ‘deoarece poste apsrea situatia in care ctirea unei variable esueazd (de exemplu, ‘daca Incercém 83 introducem de la tastaturé 0 valoare de tipul "sir de caractere citicea unel variable de un tip intreg). Funclia {ecant("td,éx)} citeste 0 singurd variabilé Dact aceasta variabila se citeste corect, functia va retuma valoarea 2. In linia white are loc {estarea valoti returate de catre functia scané. In concluzie, linia de program while ((scanf("#d" ,Gx)==1) 66 x) se traduce prin “oét timp functia scant retumeaza 1 (variable x se citeste corect) ‘Slxeste difert de 0" (reamintim c&"x" inseamn"x '=0") La fiecare pas al ciclull se cteste un numa in variabila x, deci tn timpul tunel executil a programului se citesc, pe rand, In aceeasi variabilé x, mai multe rnumere care alc&tuiesc un sr. Exempiificdm functionarea programului pentru girul 2, 5, ~32000, 33000, 0. Initial, m=-1. Descriem pasil ciclutul: Pasul 1: Executd scant ("4d", 6x) = citesle x=2; Functia scant a returnat 1 si x difent de 0 7 da = executa sf vom? 20-17da = mex, Be? Pasul 2: Executd scant ("td", Gx) = cteste x=5; Functia scang a retumat 1 six difert de 0 ?.da = executa i vom 7592 7.00 => mex, wes Pasul 3: Execut’ scant ("¥d", x) = citeste x=-32000; Functia scang a relurnat 1 six dfeit de 0 7 da => executa i yom? ~32000>5 7 nu 9 Scanned with CamScanner Pasult: Scns cng gu mt Functia scan¢ a retumat 1 #1 * 7, C08 = feturnat 2, deoarece valoarea 33000 a ce oora ti Ines scun cunoscuta de ita). In ese pune cB 8 Uunel alte vain in vanabia x, mat peity cre 1a pasul urmator. Pasul 5: Executd scant ("td", 6x) = teste Py cin nia wh 20 este fas ‘Se abandoneaza excl, deoarce condiia (a : Vealoarea fnald a luim, cae se afigeaz® SEES Rasouns covet: e) Fre secvera de program de mae, Ne! Tonio eg ted. ot 1 Cyat> sntaanad ovale onan '* este 0 conditie (expresie logi cored! tare: Se Ton) svesee: pence tone ‘Roget ema oe valooea programul sb inte nt ci inf. eval> $i condita , astfel Incat >=0 a) 0 $i condtian «0 § condita in —CL Solutie Expresia Executia acesteia st=i++ din corpu cicull Inseamna S=S+i++. ate loc astel: +4, apol i++ (mat nti se execu expresia cu valoarea curentds alli 3, apo’ se incrementeaza i), Seoventa devine: aecval> isl: $20; while () { setts ites ) printe("id",8) ‘Sa observm in primul rand c& variabila n se iniiaizeazé cu valoarea <, dupa care nu se msi modifics In corpulciclulu. Vom analiza pe rand cele inci variante date. C7 a) © 0 Gi condita neo ‘stl, initia n 0,91 1a pea tot n< 070609 nu In acest caz ciclul nu #e execu nick va fi fais Incd de la prima intrave in ccly condi (white (n<0)), avem: ‘20a Condiva “oat timp neo b) 0 § condija n>=0 Interpretim la fel ca mai sus “ntrarea in ciety? ne=0,ied Testarea conditel din linia (white (n > 0)) are loc asta > 0.7 02" 07 do => ind In il, executd 0 dats corp ccna. ugg care ravine la linia whi Le. Dar aga cum am spus, valoarea ha n ruse moan compu ciclul. ea rmaine 0, dec! a fecare reverie in inva whiw concen ces ‘af adevrata. In concluzie, 9 inva intrun cil infin @) © 1 $i condita ica Initial, £ = 1 sim = 1. La prmul pas al ciclulu! ave 4 <2 < 17 ny = ciclul nu se executa niciodats d) ©1 $i condtia ian Initial, 4 = 1 gin = 1. Incepem sa urmarim papi ciclulu Pasul 1:4 >=01>=17da = $= S¢i= 001 = i ite, de dete? Pasul 2:4 >= 02 >=17 da = Sm 142—3 slim 2eind Unmatoarele vain ae ult vor W 3,445, .. . Agadar, condita (4 > a) va fi adevarata "In veci" (pentru ca n rémane 2), intrandu-se Intr-un ciclu infint €) «0 $i condiia ten Initial, = 1 gin 0. La prima testare, condiia (1 < n} Inseamnd 2 < 0, fols; deci cicul nu ve ‘executd niciodatd, la fel cala a) gi c) ‘RAspuns corect: b) $f d). Daca de la tastatura se introduce numarul 22, cite valor distncte va ata rogramul urmator ? #includeciostreas.h> #includecnath b> void main () { aint xyn,47 for(cin'>> n, ie1 7 ; xesqrt(i), cout << x, itt) 4€ (ion) break: y a) niciuna —) una dus wel ) patry Scanned with CamScanner —Ci_Solutio ln-un cicu fox de foma for (< dintre expresii poate s& lipseascd, dacd rolul su in cazut nostu: ~ este "cin >> n, 461°) ~ este “xeeqrt (i), cout jeoxp_3>), una spicoxp_DiseP oro 2 gop intra at Mod. , care 8 cond ul su Intanim Totus cic nu se va excels ta init pony CB nF ar gin cic, Itinea nee car nun nat ec on eco jai exact, dacd este mai mare deca, ate = Prin urmare, este wast cu fomularea “cial se executd cit timp on ‘cme conditia de loc $8 seiem "At (Hon). eoat” In compl cdl, POST EY crime mbna ar Pooch seaman. el ‘for(ein >> ny dei 7 deen 7 2B ine nici 0 instuctiune, Dar... Momentan, corpul cictului fox nu cont vurmeaza alte transforma coxp_1> este “cin >> ny i=1", Avem nstructuni separate prin operatorul Tespectv, “i=t”, 58 Vor executa Expresia de intializare a ciciului de-a face cu o expresie care contine dous "virgulé". Cele doua instruciuri, “ein >> as ramet stores "iat" justi locu Tn expresia de iniaizare a cic, deoarece ne da valoarea nial @ contri nstrucjunea "ein >> 2, care citeste valoarea variabilein, poate fi scrisé Inaintea ciclulu. ‘Analog, expresia este alcatuité din expresile “x=sqrt (4)", "cout << x" gi "i++", separate prin operatonul “virgulé". Dar numal "i++ trebuie,cbigatoriv,s8 apart in , deoavece sigur trecerea la pasul urmator, rin incrementarea conteruiui i. Celeat doua instruciuni pot constitu corpul cic (care in forma daté nu exist), pentru c& oricum se executlafiecare pas. In conclurie, cilul se mai poate sore i astfel: cin >> a; for (i=1; icon; i++) 1 weaget (i) 7 cout << x7 ) Atribuirea xesqrt (4) trebuie privité cu atenjie: functia eqrt (i) ‘etumeaza "radical din 3" care este un num&r real, dar aceasté valoare retumat’ se atribuie variabilel x de tipul int | In consecin{a, x va retine numai “partea ‘intreagd a tui radical din £"! a im, speram cd © clar invoduce vate 22, snc aceaxa ene she Wo 8 tsa se afigeaza "partes intreags a lui radical din 4 * pent imt,2,. gg, P88 stim oa I= 1, fF = 2.418... B= irae Irteagd a lui i, VB gi JB este 3, deci pentu se1,2~ scoven valori de 2. Analog, celelaite valori distincte care se vor afiga sunt: = 2 pentru is4,5,...,8, deoarece "parte 4, 5,..., 18 este 2; - 3 pentu =9,10,...,15, decarece parte i SiG... AIS eae Parte intreaga din - 4, pentru i=16,27,...22, deoarece parte inte 56, ABB ete soe ee Inconcluze, sunt pat valoricistneteafigte, si anume, 2, 2, ‘Réspuns covet: e) = 2. Partea Ya data afigoaza Inteaga in le secventa de program urmatoare, care calculeaza $i afigeazd produsul P al primelor n numere naturale 1*2*. . .4n'(unde valoarea lui n este cunoscuta): UY Secvent aner 9 for (ist ;Scmn;it+) PePHi; cout ? : " este egalé cu valoarea acelela dintre expresile si care se executt (dupa cum conditia dat de ‘ este adevaraté sau nu). In cazul nostru, asa cum spuneam, in momentul 64 In care conditia data de expresia "i<=n" nu mai este mai mare decdt n, atunci se va executa expresia 0", iar vatoaea inter oro ate che ranean sworn ‘Seva executa white 0)", cae, intitv, se poate ct "dt tmp este fae on os In acest moment se va produce iesirea din ciclu! Mai trebuie cbservat cA linia white se Inchee, la fel cu nia for dn seovenia 51), cu caracterul";",adicd instuctiunea vida, Aceastarepezintacorpl ciclulu. E normal s& fie asa, deoarece atribuiie care ar fi trebuit sa aleatuseea compul ciclului, "PaPAi" gi "imi+2", au fost inglobate sub forma "pecis cexpresia conditonala din linia white! ‘Acum pute sre o fom echivalenta "tase" pent secvena 2) Pal; ist; while (icen) { Pepi; init; y Intrucat secvente de program de acest gen au fost prezentate in problemele anterioare, va lésdm 83 va dati singuri seama c& secventa anterioara calculeaz& corect produsul P=1 #24... +n, In conctuzie, ambele secvente S1) si S2) sunt corecte sintactc si cechivalente cu secventa 5) ‘Réspuns corect: b). adevérata, adicd dacd 4 este Scanned with CamScanner —— , a) Nu afigeaza rime Teste grila propuse | 1) Testu une —— Peo o) Testu dos i atibvie variabit) instruchunea 4£ este grep sintactc f ERT ee dange d) Instr 9 mal i. opel = gre arate able Intregi a gb, $20 valoarea lor @) Nici una dint afirmatile de mai sus. ‘comuna in cazu in care acestea sunt ogale ? ee ae, PALA. In uma execute! Af (a0) a) Se komt ey Oo) secventei de program aléturate, pentru Af (09) Oe oe oi care dilre perectile de valor ale lee a5 (>a) xmas VariabilelorIniregi a gb date mai os se aise 6 ©) Af (ea) amar st (aceb) bi va afiga x=5 ? cout << : else x8 else x; a) ac gi bed b) ant gh bet ant pbet €) Nici una dintre secventele antenoare @) 2-0 i bent @) ant i bo a 1 In timpul executie PAILS. Dacd P.IL2. Preczat de cite of se va afiga valores 5. Dad In tinpul execu programulul de mai jos m va primi prin programs wrnater, doch pn ce la tastatra vanabilele Primesc valonle cite dela tastatur valoarea 232213, care vor i In fnal valone vaiailelor £3, £2 3, bed § a5 983? eee Semi aate void main() a ‘ esq af jong nz als a3 a> Bio a unsigned int £1,£2,£3,¢7 SE (U(xcea) #6 (MB))) cout <1 << "My ela 20 Sf (1 (xcea || x>=b)) cout << 1 << "NR" stmezetn EE (i(xeea) 66 1 (e>eb)) cout << 2 << "Nn ot, Sf (Nlaena) 1] 1GD9b)) cout << 2 << "Vn eae ; nen/10; switch (c) ( a) niciodsts b) odste c) dedouso ¢) detrei ori €) de patru ori jesse t (i ehecisneesesh case 2: ( £2++; break!) Leen ae! case 3: ( £3¢¢: broak:) , PAILS. Precizaice afigeaz’ programul de mal jos: } white (nt=0) cout << £1 << £2 0;4~- xt=10; @) wi; s-0; while (in) ( xt; , ©) Nici una dintre variantele anterioare. SS REEEEEmmmmmeeeemmeemmmmeesseeet 1.9. Deduceti ce valoare se va afiga in urma execuliei secventel de rogram de mal jes, daca valole variable x ete de a testetura sunt in orcne 12,4,3,5,10,20,0, 6 cin >> xr n=O; do { yexi cin >> x Af (x==24y) art; } while (x1=0); cout << nr; ao yr gz gs oe ee P.IL10. Care va fi valoarea varabilei c afigati de catre programul ‘urmator, dacd de la tastaturd se citesc valorile a=b=3? #include void main () ( Jong a,b,c,2,47 cout << "Dati a ed b: "7 cin >> a >> by o=0; eel; for (i=1;icmait+) ‘ otsz; tab; ) cout << em" << G7 ae 4) 32 oz gis er EEE EIERepeeememeeemmmeeemeneeenememnmmeseeend 11. Care dintre secventele Pel; de program St, 52, 53, date mal jos, for (in1; dcas ite) este echivalentd cu secventa alaturats ? 4 (Doud seovente de program se 8-0; Consider’ echivalente, dacd produc for (Jal; Semis 344) acelasi efect in orice sitatie.) Toate sast}; Variabiele foloste sunt intregi. press 1 Secventa St \/ Secventa S2 Pel; 8=0; Pet; 8=0; for (istsicen;itt) | for (iel:icensit+) 0 c Pept; S9S+P; SaSHi; PaPSS: , , Scanned with CamScanner @) nicl una 2) numai St 6) numais2 ¢) numaiss 4) e018 : "servtuntbie vara P.IL12, Care dintre urmatoarele secvente deinstucl oD Tata x? Tntregi vatoarea primei cfte a numarului natural reprezer 07 2) ws fy waste (2-10) x08/1 while (u>=10) u=utl0; cepa ©) w=x/10; orata €) Nici una dintre variantele anterioare. de instructiun aribule variabile P.IL.A3, Care cintre umatoarele secvenie densities Intregi u valoarea uitimei cfre a numarui natural reprezs a) while (x10) x=x/10; }) vex: el while (o>=10) w=uti0; ens 10; @) wex/t0: ) Toate variantele anterioare. —— P.11.14, Fie secventa de program urmatoare, In care ok este 0 variabla e tipul int, iar x este un num&r natural. ok=0; For (in2;icxsit+) Af (xt i==0) okel: cout << ok; ‘Secventa afigeazé 1 dacd: 2) Numérul x are cel putin un divizor propru. 5) Numarul x nu are nici un divizor propiu ©) Toate numerele naturale mai mici ca n,f3r& 0 gi 2, sunt divizori propri al lui x @) Numarul x are cel mult un divizor prope. ©) Nici una dintre variantele de mai sus. P.IL15, Se considera secventele de program de mai jos. Pentru n=4, procizali care dintre secvente afigeazs, in uma executiel, sul de numere: 1223334444 ” 2 (ann sseensit9) for (jesserns3t4) prince ("020" 3) 7 g for (s91;icensi¢+) for (j=1;3<0n;3+4) Peinte("¥2a",3) ; oO for (i=1;icensit+) Jeanijs) for (Je1:3a) A (p2) texr else taxty: aa os 6 ae PAILA9, Pentru ce valoae a variable! M, seeventa de program de mai jos FeprezintS o buci infinita? 2) 10 b) orice valoare diferta de 10 ¢) 0d) orice valoare feta de 0 €) pentru orice valoare inreaga. ES PI.20. Se da programul de mai os. Sind c& prima valoare citté (cea a variable! ) este 4, precizl) ce valor trebuie cite pentru varibila b in corpul ‘clu, astfelincdt, in fnal, 88 se afigeze valoarea ¢ ) while (ot=a); cout << a? , YU234 1236 9134 D124 6) 444 a mez: n .11.21, Definim oglnctul unui numa natura x ca fi prin trea rumBruti x In ocinoinvers (ela reata a caring UMAR ON 7 Ogi numarui 253¢ este 4301, oe sine de mai jos afigea28 corectoginctul li x? Programele (eee tai0.w> (OEE se. void main) void aaing {sae es long d,x,y2 int c; long dyx,y: seane via" 5) acant ("sid en) ered; aon yd waite (2) e (ad 10; e=d $10; sryrettos fayette Safi; Eujio ) } while. (a) printé("$1d",y) ; printe("4ld";y) , , Uf Program P3. 1 Programul P4 include Hnclude void main() void main() ‘ { int cs long 4x, int @7 long 4, scan ("#12 dex; y=0; do t ond810; + yeyttote; ‘ded/10; ) while (4); printe("t1d",y) 7 printé ("eld",y) ; ) ) a) PLgiP2 8) PLgiP3 cq) P2gIPA gy PLgiPA ——@) P3giPA P.IL.22. Precizaii ce valori se vor afiga, In ordine, in timpul executiel programului urmator: finclude 2 Scanned with CamScanner yotd ming) int x,y,m,n,a,b=5; x= (mben=3, +4); Yea" ((b==5) 2 be-:--b) <0; IEW te) ee = cout << 1) ose oe A€ (1a ce b G6 Im) cout << 1; else co fe void main () { int x.y; while (scant ("d",6x)==1 66 scant ("td",éy)—et 66 (x II ¥)) do yoo printé("*td *d",x,¥) 7 Y while (xt=y) ; 2)2,5,4,6,0,0 6) 2,3/642,0,0 2) 0,0 — eS 1.24, Fie secventa de program urmatoare, In care: ‘* Variabilele 4, gi 8 sunt intregi; +
    , e195, simbolizeazd valor constant Integ) ‘+ - este 0 condi (expresie logic’). ‘Alegeti de mal jos valorile , , , precum si condiia , _axtfelIncat programul sé afigeze suma citrelor naturale 1+2+. ..+9. necvi>; imev2>; Seev3>; while ( ) Sestite; Printe("™d",8) ; 2) <¥1> € 10, € 1, € 0, $i condita "ken", 2) © 10, «1, € 0, § condita "keen"; ) © 10, «0, « 0, gi condita "in", % ) <> C9, 6027 C1, 03> € 0, gi condita "Sen @) € 9, <¥2> € 2, 63> 1, i condita "keen, eee 9.11.25. Se consider’ urmstoarele dovd secvente de instruciuni in care: Pate Varabele sureties HUN nce + , , simbolizeazé_ valor constante intreg Determinatj valorile , , astfl, Indl, dupa executia celor dou seovente, diferenta dintre valoile variabilelory six $8 fie 10 (y-x=10), U/secventa St 1 Secventa S2 fecvi>; x=0; $=; y=0; while (i<=10) do { « xtsl0; iH; jets yeet0; ) PPO ARO VRE HWP C1, O00, wet QPEL WOOO, WEI YWPE0, WOE, WOR Jw el, wel, w>e13 ee P.II.26. Ce valoare va afiga programul urmator pentru m=22 7 Vwhile (3 < ); include for (S=0,is2; icn/2; (nti) ? Staitt 2 t+); cout << 8; , ao a9 22 6.) 78 e) programul confine eros Eee P.IL27, Pent programul urmator, care dint efirmatile de mai jos sunt adevarate ? include void main () { int 8)x7 for(S=0,xe1;0;Stex, cin >> x) if (Ix) break: cout <5 » 15 Scanned with CamScanner 3, 4 S15, atung " merele 2, 3 2) Daca de ta tastatura se introduc, in ordine, Mv cA 14. > a >> b; } while ((b!=a) ? +#nr : 0); cout << nz; ao br 2 D3 ea aan P.IL.29. Care dintre secventele de mai jos afigeaz4 corect sirul cifrelor Zecimale impare 97531 in aceasta ordine? ) \y for (i=9;i>=1; for (i=0;i<=9;i++) cout << cout << 9-i++; 9g for (i=9;i-->=1;) cout << i,k @ isl; do { cout << 10-i++; } while (4<=924++4:0) ; 76 Scanned with CamScanner Cap. IT. Instructiunile limbajului 11.1. b) sic) II.7. a), d) si e) 11,13. b) sic) II.2. c) II.8. b) 11.14, a) bean is La Y 11.3.c) 1.4.c) sie) IL5.c) IL6. a) sic) HL9.d) 110.d) IL41.b) 1.12. b) W.15.b) 11.16.d) 42,47. b)sie) 11.18.) 1I.19.d) 11.20. b),c) sid) 1.21. e) 41.22.b) 1.23. b) sic) 11.25. b) sid) 1.26.b) 1I.27.b) 11.28. c) 11.24, a), c) sie) 11.29. a), b) si e) Scanned with CamScanner

S-ar putea să vă placă și