0% au considerat acest document util (0 voturi)
18 vizualizări46 pagini

Program Are

Încărcat de

ppprof
Drepturi de autor
© Attribution Non-Commercial (BY-NC)
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOC, PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
18 vizualizări46 pagini

Program Are

Încărcat de

ppprof
Drepturi de autor
© Attribution Non-Commercial (BY-NC)
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOC, PDF, TXT sau citiți online pe Scribd

ndrumtor palate i cluburi ale copiilor

I.1 Programarea calculatoarelor


Limbajul BorlandC++

Introducere
Adeseori suntem nclinai s facem calculatoarele responsabile pentru tot ce se ntmpl. Cnd este vorba de ceva bun le recunoatem meritul, cnd este vorba de ceva neplcut dm vina pe ele. Calculatorului trebuie s-i formulm problema, s-i oferim informaiile necesare soluiei, s-i descriem calea spre un rezultat corect. Numai programul decide valoarea calculatorului. ac este greit i rezultatele vor fi greite. ac este corect i rezultatele vor fi corecte. Calitatea programrii nu depinde numai de datele enunului unei probleme oarecare, ci de ideile, creativitatea i ascuimea minii celui care rezolv problemele. !rima parte, i cea mai importanta este analiza problemei. "n final nu calculatorul este cel mai complicat lucru, ci problema pentru care se aplic. #fortul nu este al lui ci al altora din afara lui, al vostru de e$emplu.

Primul program
!entru adunarea a dou numere comenzile pe care trebuie s le dai calculatorului sunt% citirea de la tastatur a numerelor i depunerea lor n memorie, apoi nsumarea lor, rezultatul este tot n memorie ntr-un loc cunoscut, iar, n final, se comand scrierea pe ecran a sumei din memorie. Comenzile pe care le dai calculatorului sunt ntr-un limba&, pe care calculatorul le nelege. Noi vom lucra cu limba&ul C''. (peraia de scriere a programului se numete editarea programului. Aceasta se face n ecranul albastru care apare la desc)iderea aplicaiei *C.e$e, alegi din meniul File cuvntul New +program nou,. [Link] #include<iostream.h> void main() { cout<<Vreau sa invat sa fac programe la calculator<<endl; } !rimul rnd al programului trebuie scris pentru a putea folosi comanda de scriere cout, dac nu scriam acel rnd se petrecea o eroare la e$ecuia programului, primind mesa&ul de comand necunoscut. eci # include<iostream.h este necesar atunci cnd vrem s folosim comanda de scriere cout. (rice program trebuie s conin rndul al doilea !oid main" # acesta este un fel de titlu al programului. !rogramul se va scrie ntre acolade % desc)is $ i acolad nc)is %. up ce ai scris un program, poi s-l memorezi, adic s-l pui undeva, n calculator. Aceast operaie se numete salvare. !entru aceasta ai dou posibiliti% apei tasta F&, din partea de sus a tastaturii, iar pe ecran apare o fereastr, n care se ateapt s scrii numele programului, ales de tine, dup care apei tasta 'nter. sau alegi din meniul File, din bara de sus i alegi cuvntul (a!e. !rogramul se va memora cu numele tastat de tine urmat de un grup de trei litere C!!, numit e$tensie. A doua zi, dup ce ai intrat n mediul de programare C'', mergi n meniul File i alegi cuvntul )*en. up asta se desc)ide o fereastr, care are o list cu toate programele memorate. up ce ai ales un program pe care vrei s-l desc)izi, apei tasta 'nter. !e ecran apare programul, e$act n forma care l-ai lsat. #$ecuia programului se face de ctre calculator la apsarea tastelor C/01 i 23, urmat de apsarea tastelor A1/ i 24. !e ecranul negru va aprea mesa&ul scris ntre g)ilimele Vreau sa invat sa fac programe la calculator. "ntre instruciuni trebuie s e$iste nite separatori, acest separator + (punct i virgul se pune la sfritul instruciunilor, fr a se pune dup primele dou rnduri 5include i void main+,. 6ai s ncercm s afim pe ecran urmtorul mesa&%
777777777777777777

ndrumtor palate i cluburi ale copiilor


7 *ine ai venit8 7 777777777777777777

!rogramul scris n limba&ul C'' va arta astfel% [Link] #include<iostream.h> void main() { cout<<******************<<endl; cout<<* Bine ai venit! *<<endl; cout<<******************<<endl; }

/recerea la un rnd nou se face cu comanda cout::endl. !entru a lsa dou rnduri se va scrie cout::endl::endl.

Calcule matematice
;emnele cu care comanzi o operaie sunt aproape ca la aritmetic, adic semnul + pentru adunare, semnul , pentru scdere, semnul - pentru nmulire, iar pentru mprire semnul ., cum ar fi de e$emplu scris e$presia <$=4'>%9 ? cout::<7=-4'>@9::endl .

Problema rezolvata
Aaria are de dou ori mai multe bomboane dect Andrei, iar Andrei are cu B bomboane mai puine dect !aul. ac !aul are -C bomboane, s se determine% a, Cte bomboane are Andrei. b, Cte bomboane are Aaria. c, Cte bomboane au cei < copii mpreun. !rogram<.cpp #include<iostream.h> void main() { cout<<!ndrei<<"#$%<<endl; cout<<&aria<<("#$% '(<<endl cout<<)otal<<"#*"#$%*("#$% '(<<endl; }

I.& /lgoritmi

ndrumtor palate i cluburi ale copiilor

Algoritmul
0ezolvarea unei probleme de genul celei de mai sus nu necesit un algoritm, ntruct formularea este pentru un caz particular +!aul are -C bomboane, Andrei cu B bomboane mai multeD etc.,. En algoritm trebuie s poat fi aplicat unei mulimi de probleme de acelai fel. !utem reformula problema prin folosirea a dou zone de memorie * i a% &aria are de dou ori mai multe +om+oane dec,t !ndrei- iar !ndrei are cu a +om+oane mai multe dec,t .aul. /ac .aul are p +om+oane- s se determine0 d 1,te +om+oane are !ndrei; e 1,te +om+oane are &aria; f 1,te +om+oane au cei 2 copii 3mpreun. Falorile variabilelor a i p se vor citi de la tastatur. !entru rezolvarea problemei sunt necesare patru zone de memorie a calculatorului, pe care le vom numi variabile. * G cte bomboane are !aul a G cte bomboane are Andrei m G cte bomboane are Aaria t G cte bomboane au cei trei copii mpreun

Algoritmul
P1. e la tastatur se vor citi doar valorile pentru a i *, celelalte dou se vor calcula n funcie de valorile citite. 4pera5ia de citire se face cu comanda cin, urmat de variabila+zona de memorie, n care se va depune numrul introdus de la tastatur. P&. !entru a calcula numrul de bomboane pe care le are Andrei i Aaria vom folosi opera5ia de atri+uire% a0a+* G adunm la valoarea care este in memorie n variabila a coninutul variabilei * iar rezultatul l vom depune tot n zona de memorie a. P1. m0a-& G nmulim valoarea din zona de memorie a cu 9 iar rezultatul l depunem n variabila m +numrul de bomboane pe care le are Aaria, P2. t0*+a+m G calculm numrul total de bomboane prin nsumarea coninutului zonelor de memorie *3 a i m iar rezultatul l depunem n t. P4. ;e comand scrierea pe ecran a valorii din variabila t din memorie. (peraiile descrise mai sus n aceast ordine p-,p9,p<,p=,p4 reprezint algortimul de rezolvare a problemei date. program=.cpp #include<iostream.h> void main ( ) { int p-a-m-t ; cout<<p6; cin>>p; cout<<a6; cin>>a; a6a*p ; m6a'( ; t6p*a*m ; cout<<!ndrei <<a<<endl; cout<<&aria <<m<<endl; cout<<1ei trei copii au 3mpreun 7<<t<< +om+oane <<endl; }

ndrumtor palate i cluburi ale copiilor !e primul rnd #include<iostream.h este necesar atunci cnd vrem s folosim comanda de scriere cout sau comanda de citire cin.

Problema rezolvata
Aaria are ca tem o compunere despre Htefan cel Aare. !entru aceasta, ea trebuie sa citeasc trei povestiri. Numrul de pagini ale primei povestiri este a, a doua povestire are cu b pagini mai multe, iar a treia povestire de dou ori mai multe pagini dect a doua povestire. Cerin56 Cte pagini are fiecare povestire? Cate pagini va citi in total Aaria pentru a realiza povestirea? !rogramul scris n limba&ul C'' va arta astfel% [Link] #include<iostream.h> void main ( ) { int a-+-p"-p(-p2-t ; cout<<a6; cin>>a ; cout<<+6; cin>>+ ; p"6a; p(6a*+; p26p('(; t6p"*p(*p2; cout<<.rima povestire6<<p"<<endl; cout<<! doua povestire6<<p(<<endl; cout<<! treia povestire6<<p2<<endl; cout<<8n total &aria a citit6<<t<< pagini<<endl; }

Retineti:
;oluionarea problemelor cu a&utorul calculatoarelor presupune o analiz a problemei realizat n baza unei g7ndiri algoritmice bazat pe raionamente de tip matematic. ( zon de memorie primeste la un moment dat o singur valoare ( zon de memorie primeste valoare de la tastatur sau prin atribuire Faloarea unei zone de memorie poate fi modificat prin operatii matematice Continutul unei zone de memorie poate fi afiat prin scriere pe ecranul calculatorului +cout,

I.1 (tructuri alternati!e


; gndim structurat% oricare ar fi raionamentul de rezolvare al unei probleme, operaiile pot fi grupate doar n trei categorii de structuri% - structuri liniare compuse din una sau mai multe operaii care se e$ecut secvenial n ordinea de la prima la ultima. - structuri cu ramificaie compuse din una sau mai multe ramificaii spre operaii care se e$ecut n funcie de condiia verificat. - structuri repetitive compuse din una sau mai multe operaii a cror repetiie este controlat.

ndrumtor palate i cluburi ale copiilor Algoritmul descris n prima lecie este compus din prima categorie, de structuri liniare, n componena sa sunt operaii de citire, atribuire i scriere. !entru probleme foarte simple, algoritmul poate fi reprezentat direct n limba& de programare. 0eprezentarea algoritmului n pseudocod folosete un set redus de cuvinte uor de reinut. !uine sunt problemele a cror rezolvare cu calculatorul s nu necesite verificarea unor condiii. Ferificarea condiiilor impune folosirea operaiei de decizie. Condiia se formuleaz astfel nct s accepte doar dou rspunsuri% 8/ +Adevrat, i N9 +2als,. 8ac6 se :nde*line;te o condi5ie atunci e<ecut6 instruc5iunea 1 alt=el3 e<ecut6 instruc5iunea & (=7r;itul lui dac6 Instruciunea - se va e$ecuta atunci cnd condiia este adevrat iar instruciunea 9 se va e$ecuta cnd condiia este fals. ( condiie poate fi de genul% numrul a este mai mare dect numrul b, sau numrul a este mai mic dect -C i o mulime altele. ( condiie se scrie aproape ca la matematic% a mai mare ca b a b a mai mic dec7t b a<b a mai mare sau egal cu b a 0b a mai mic sau egal cu b a<0b a egal cu b a00b a di=erit de b a>0b Instruciunea se numete i= +traducerea din limba englez a cuvntului dac,. (bligatoriu condiia se va pune ntre paranteze. i= +condiie, instruciune-. else instruciune 9. 9:emplu0 if (a>b) cout<<a; else cout<<b; Dac valoarea din varia+ila a este mai mare dec,t valoarea din varia+ila b se va scrie pe ecran numrul din a altfel se va scrie numrul din b. Falorile variabilelor aJ-C bJ< aJbJ< aJ=bJB< if(t<20) cout<<DA; else cout<<NU; Dac valoarea din varia+ila t este mai mic dec,t (# se va scrie pe ecran mesa;ul </! altfel se va scrie mesa;ul <=>. ;e va scrie pe ecran -C < B<

Problema rezolvata 5

ndrumtor palate i cluburi ale copiilor Andrei a primit de ziua lui un &oc de construcie 1ego n care se afl < piese rotunde i ? piese ptrate. !entru a construi o nav spaial are nevoie de * piese. Falorile pentru variabilele <, ? i * se citesc de la tastatur. A&ut-l pe Andrei s afle cte piese are n &oc i tiprete K AL dac poate s construiasc naveta, altfel tiprete KNEL.

Algoritmul
P1. e la tastatur se vor citi valorile pentru <3 ? i *. !entru a calcula numrul de piese 1ego pe care le are Andrei vom folosi operaia de atribuire% P&. n0<+? G adunm la valoarea care este in memorie n variabila < cu coninutul variabilei ? iar rezultatul l vom depune n zona de memorie n. P1. ;e comand scrierea pe ecran a valorii din variabila n din memorie +numrul de piese,. P2. ac n 0* atunci se va scrie pe ecran mesa&ul K AL Altfel se va scrie pe ecran mesa&ul KNEL (pro+lem de deci?ie (peraiile descrise mai sus n aceast ordine reprezint algoritmul de rezolvare a problemei date folosind structura cu ramificaie e la pasul =. ![Link] #include<iostream.h> void main ( ) { int p-:-@-n ; cout<<piese rotunde6; cin>>:; cout<<piese patrate6; cin>>@; cout<<p6; cin>>p; n6:*@ ; cout<<!ndrei are <<n<< piese Aego << endl; if (n>6p cout<</! <<endl; else cout<<=> <<endl; } ( problema des ntlnit n programare este aflarea celui mai mare sau celui mai mic numr dintre dou sau mai multe numere citite de la tastatur. ac dorim s aflm cel mai mare numr dintre dou numere citite de la tastatur n a si b3 ntr-o variabil ma<. vom scrie aa% If (a>b) max a; else max b; !roblema apare dac dorim s aflm cel mai mare numr dintre trei sau mai multe numere citite de la tastatur. Nu mai putem folosi o singur instruciune de decizie i=. Algoritmul de aflare a ma$imului i minimului a trei numere citite n <3 ?3 @ este urmtorul% Fom folosi dou variabile ma< pentru aflarea celui mai mare numr i min pentru aflarea celui mai mic numr. ;e va atribui variabilei ma< valoarea citit n prima variabil <A ma<0<. ;e compar ma< cu coninutul celorlalte dou variabile ? i @. ac ? este mai mare dect ma<, se va nlocui ma< cu ? folosind operaia de atribuire ma<0?. ac @ este mai mare dect ma< se va nlocui ma$ cu z% ma<0@. 1a fel se va gsi cel mai mic numr n variabila min astfel% se atribuie variabilei min valoarea citit n prima variabil <A min0<. ;e compar min cu coninutul celorlalte dou variabile ? i @. ac ? este mai mic dect min, se va nlocui min cu ? folosind operaia de atribuire min0?. ac @ este mai mic dect min se va nlocui min cu z% min0@. "n final vom comanda scrierea pe ecran a celor dou variabile ma< ;i min. #include<iostream.h> #include<conio.h>

ndrumtor palate i cluburi ale copiilor int :-@-?-min-ma:; void main() {clrscr(); cout<<:6; cin>>:; cout<<@6; cin>>@; cout<<?6; cin>>?; ma:6:;min6:; if(@>ma: ma:6@; if(?>ma: ma:6?; if(@<min min6@; if(?<min min6?; cout<<1el mai mare numar6<<ma:<<endl; cout<<1el mai mic numar6<<min<<endl; getch(); } Al doilea rnd al programului trebuie scris pentru a putea folosi comanda de LcurareL a ecranului clrscr() i getch(). ac scriem la sfritul programului comanda getch() la e$ecuia programului face s atepte apsarea unei taste dup afiarea rezultatelor deci nu se termin programul imediat i nu se mai revine la ecranul albastru de editare a programului, ci se ateapt apsarea unei taste pentru a termina programul. eci # include<conio.h este necesar atunci cnd vrem s folosim comenzile clrscr() i getch().

Problema rezolvata
Ionel are o suma de bani de la mama sa ca s-i cumpere rec)izite +caiet, pi$, linie si acuarele,. Htiind preul unui caiet c, pi$ *, linie l i a unei cutii de acuarele a, scriei un program care s afieze urmtoarele rezultate% preul total al rec)izitelor, preul cel mai mare dat de Ionel pentru una din rec)izitele cumprate, i numele rec)izitei+rec)izitelor, cu acest pre. #$emplu% ate de intrare caietJ< pi$J4 linieJ> acuareleJB ate de ieire 9< +pre5ul total > + pre5ul cel mai mare linia +are cel mai mare pre5

e la tastatur se vor citi valorile pentru c3 *3 l i a. t0c+*+l+a G calculm preul total prin nsumarea coninutului zonelor de memorie c, *3 l i a iar rezultatul l depunem n t. ;e comand scrierea pe ecran a valorii din variabila t din memorie +preul total al rec)izitelor, Cel mai mare pre l vom cuta n variabila ma<3 care va primi pentru nceput valoarea citit n c +pre5ul caietului,. ma<0c Fom compara coninutul variabilei ma< cu celelalte preturi citite n *3 l i a. aca valoare uneia din rec)izite este mai mare dect ma<, atunci se va nlocui ma< cu acea valoare. daca * ma< ma<0*+ daca l ma< ma<0l+ daca a ma< ma<0a. ;e comand scrierea pe ecran a valorii din variabila ma< din memorie +preul cel mai mare dat de Ionel pentru una din rec)izitele cumprate,.

ndrumtor palate i cluburi ale copiilor In continuare pentru a gsi care din rec)izitele cumprate a costat cel mai mult vom compara valoarea variabilei ma< cu valorile variabilelor c3 *3 l i a. aca este egalitate se va afia pe ecran numele rec)izitei sau rec)izitelor cele mai scumpe. daca "ma<00c# scrie Bcaiet C + daca "ma<00*# scrie B*i< C + daca "ma<00l# scrie Blinie C+ daca "ma<00a# scrie Bacuarele.C. [Link] #include<iostream.h> #include<conio.h> int c-l-p-a-ma:-t; void main ( { clrscr( ; cout<<pret caiet6; cin>>c; cout<<pret pi:6; cin>>p; cout<<pret linie6; cin>>l; cout<<pret acuarele6; cin>>a; t6c*p*l*a; cout<<t<<endl; ma:6c; if(p>ma: ma:6p; if(l>ma: ma:6l; if(a>ma: ma:6a; cout<<ma:<< endl; if (ma:66c cout<<caiet <<endl; if (ma:66p cout<<pi: <<endl; if (ma:66l cout<<linie <<endl; if (ma:66a cout<<acuarele <<endl; getch( ; } /este% ate de intrare caietJ-< pi$J3 linieJ= acuareleJ9B ate de intrare caietJ< pi$J4 linieJ= acuareleJ4 ate de intrare caietJ9 pi$JlinieJ< acuareleJ< ate de intrare caietJM pi$JM linieJ9 ate de ieire 4< 9B acuarele. ate de ieire -B 4 pi$ acuarele. ate de ieire 3 < linie acuarele. ate de ieire -3 M caiet

ndrumtor palate i cluburi ale copiilor acuareleJ4 pi$

Adevrat sau fals


!n acum am folosit condiii simple, cum ar fi aN-C sau b:J>. Fom incerca, s folosim i condiii compuse, legate cu nite cuvinte, care se numesc o*eratori logici. e e$emplu dac vrem s verificm condiia ca valoarea unei variable s s fie cuprins ntre 4C i -CC, putem scrie% if(s> !0""s< #00) cout<<!ti introdus numere curpinse 3ntre B# i "##; Aceti operatori DD se numesc operatori KEIL. #i au rolul s fac condiia adevrat dac toate condiiile simple sunt adevrate. #$emplu% ;e da un numar natural O, -:JO:J<M4, care reprezinta numarul din an asociat unei zile. ;tiind ca anul nu este bisect, se cere sa se afiseze anotimpul din care face parte. ate de intrare ate de ieire OJ<4C Iarna

Rezolvare
!rimele luni ale anului sunt ianuarie G <- zile i februarie 9> zile, iar ele fac parte din anotimpul iarna. O este mai mic sau egal cu 43 anotimpul este iarna. if ($< !%) cout<<Iar&a; Anotimpul primvara incepe cand numrul O este mai mare dect 43 +<-'9>,. Htiind c anotimpul primvara este compus din lunile% martie, aprilie i mai, iar numrul zilelor acestora este <-+martie,'<C+aprilie,'<-+mai, J 39 zile. Fom scrie condiia astfel% if ($>!% "" $< #!#) cout<<'rimvara; Anotimpul vara incepe cand numrul O este mai mare dect -4- +43 zile de iarn ' 39 zile de primvar,. Numrul zilelor lunilor de var sunt <C+iunie,'<-+iullie,'<-+august, J 39 zile if ($>#!# "" $< 2()) cout<<*ara; Anotimpul toamna incepe cand numrul O este mai mare dect 9=<. Numrul zilelor de toamn sunt <C+septembrie, '<-+octombrie,'<C+noiembrie, J 3- zile ac numrul O, citit e la tastatur este cuprins ntre% if ($>2() "" $< ))() cout<< +oam&a; Anotimpul iarna incepe atunci cnd numrul O mai mare dect <<=. if ($>))() cout<<Iar&a; ac numrul

ndrumtor palate i cluburi ale copiilor

program>.cpp #include<iostream.h> #include<conio.h> void main ( ) { int C ; clrscr(); cout<<C6; cin>>C; if(C<6BD cout<<8arna <<endl; if(C>BD EE C<6"B" cout<<.rimvara<<endl; if(C>"B" EE C<6(F2 cout<<Vara <<endl; if(C>(F2 EE C<622F cout<< )oamna <<endl; if(C>22F cout<<8arna <<endl; getch(); } !utem scrie o singur condiie compus pentru afirea anotimpului iarna. ar dac vom scrie% if ($< !%""$>))() cout<<Iar&a; nu vom obine nici un rezultat, pentru c numrul O nu poate fi n acelai timp i mai mic dect 43 i mai mare dect <<=. (peratorul logic K;AEL este cel necesar n acest caz. ac mcar una din condiiile cele simple e adevrat, atunci i cea compus este adevrat. if ($< !% ,, $>))() cout<<Iar&a;

Cifrele unui numr care are trei cifre

!n acum operaiile pe care le-am fcut cu numere au fost% adunare, scdere i nmulire. !entru mprire avem doi operatori% c7tul :m*6r5irii . i restul :m*6r5irii F. !entru a afla ctul mpririi numrului a la b vom scrie% c0a.b iar pentru rest #$emple% Falorile variabilelor aJ-C bJ4 aJ-C bJ< aJ=B bJ4 aJ99 bJM a.b 9 < 3 < r0aFb aFb C 9 =

!roblema e$tragerii cifrelor unui numr n se face mprind numrul la -C n mod repetat. !rima cifra care se e$trage este de fapt ultima cifr a numrului citit i este egal cu restul mpririi numrului n la -C. c0nF1G urmtoarea cifra se poate e$trage dac tergem din numrul n ultima cifr +aceasta se poate face nlocuind vec)ea valoarea a lui n cu ctul mpririi lui la -C% n0n.1G operaia se repet de un numr de ori egal cu numrul de cifre ale numrului.

10

ndrumtor palate i cluburi ale copiilor #$emplu% n 0 24H Eltima cifra a numrului n este n F 1G cJ=43Q-C este H nlocuim pe n cu ctul mpririi lui n la 1G adica nJ=43@-C n024 urmtoarea cifra, ultima cifra a numrului =4 cJ=4Q-C este 4 nJ=4@-C n02 urmtoarea cifra, ultima cifra a numrului = cJ =Q-C este 2 -[Link] c &/#0 0i & &1#0 s2au repetat 3e trei ori pe&tru &umrul & 3e trei cifre4 #include<iostream.h> #include<conio.h> int n-c"-c(-c2; void main( {clrscr( ; cout<<n6; cin>>n; cout<<1ifrele numrului 0<<endl; c" 6nG"# ; cout<<c"<< <<endl; n6nH"#; c( 6nG"# ; cout<<c(<< <<endl; n6nH"#; c2 6nG"# ; cout<<c2<< <<endl; n6nH"#; getch( ; } n c0nF1G =43 3 Falorile variabilelor =4 4 = = C 8eci am e<tras *e r7nd ci=rele num6rului nA H3 43 2 :nce*7nd de la coada s*re *rima ci=ra a lui n.

Problem rezolvat
Inamicul cel mai mare al prinului Caspian, balaurul cel viclean a furat-o pe prines. Acesta a nc)is-o ntr-o camer cu o u magic pe care se afl inscripionat un numr de 4 cifre, mai mic dect <CCCC. Ca s desc)id ua, Caspian avea nevoie de 9 numere% primul numr este suma cifrelor numrului inscripionat i cel de-al doilea numr este cea mai mare cifra a numrului scris pe ua magic. #$emple% ate de intrare nJ9-=4B nJ-C=<< nJ-M>-ate de ieire -3 B -= -B >

e la tastatur se va citi valoarea lui n, numrul nscris pe ua magic. #$tragem pe rnd cifrele numrului n%

11

ndrumtor palate i cluburi ale copiilor c10nF1G n0n.1G c&0nF1G n0n.1G c10nF1G n0n.1G c20nF1G n0n.1G c40nF1G n0n.1G Calculm suma cifrelor n variabila s% s0c1+c&+c1+c2+c4 Cea mai mare cifra a numarului n o aflm n variabila ma< astfel% ma<0c1 , ma$ primete valoarea primei cifre ;e compar ma< cu coninutul celorlalte cifre. cifra respectiv folosind operaia de atribuire. ac cifra e$tras este mai mare dect ma<, se va nlocui ma< cu

;e comand scrierea pe ecran a valorilor din variabilele s i ma< din memorie. [Link] #include<iostream.h> #include<conio.h> int n-s-ma:-c"-c(-c2-cF-cB; void main ( ) { clrscr( ; cout<<n6; cin>>n; c"6nG"#; n6nH"#; c(6nG"#; n6nH"#; c26nG"#; n6nH"#; cF6nG"#; n6nH"#; cB6nG"#; n6nH"#; s6c"*c(*c2*cF*cB; cout<<s<<endl ; ma:6c"; if(c(>ma: ma:6c(; if(c2>ma: ma:6c2; if(cF>ma: ma:6cF; if(cB>ma: ma:6cB; cout<<ma:<< endl; getch( ; }

Iacan5a
/renul Facana pleaca din ;uceava ctre Constana i are M vagoane. e la tastatura se citete numrul de cltori c din primul vagon i un numr m. Htiind ca pentru fiecare vagon, ncepnd cu al doilea vagon, numrul cltorilor este mai mare cu 1G decat n vagonul precedent s se calculeze i s se afieze%

12

ndrumtor palate i cluburi ale copiilor a, numrul total de cltori din tren. b, numrul vagonului care are un numr de calatori care se imparte e$act la m altfel se va afia mesa&ul Rnu e$istR. c, numrul de cltori din ultimele dou vagoane 8ate intrareA cJ= mJ3 8ate de iesireA a, -B= b, M c, 3> 8escrierea algoritmuluiA ;e citesc datele de intrare% c i m ;e calculeaz numrul de cltori din fiecare vagon folosind numrul de cltori din vagonul precedent, tiind c !10c G numrul de cltori din primul vagon calculm% !&0!1+1GG numrul de cltori din al doilea vagon !10!&+1GG numrul de cltori din al treilea vagon !20!1+1GG numrul de cltori din al patrulea vagon !40!2+1GG numrul de cltori din al cincilea vagon !J0!4+1GG numrul de cltori din al aselea vagon Astfel pentru datele de intrare cJ= i mJ3 soluia este% = -= 9= <= == 4= !entru a calcula cerina de la punctul a, numrul de cltori din tren adunm numrul de cltori din cele M vagoane% t0!1+!&+!1+!2+!4+!J ;e comand scrierea pe ecran a valorii din variabila t din memorie +numrul total de cltori din tren, Al doilea punct b, al problemei, ne cere numrul vagonului care are un numr de cltori care se mparte e$act la m. Acest lucru se va face dac vom testa restul mpririi numerelor din v-,v9,v<,v=,v4,vM la m i dac este este zero atunci se va afia pe ecran numrul vagonului ce ndeplinete condiia, atlfel se va afia mesa&ul Knu e$istL% i= +v-QmJJC, cout::-::endl. else i= +v9QmJJC, cout::9::endl. else i= +v<QmJJC, cout::<::endl. else i= +v=QmJJC, cout::=::endl. else i= +v4QmJJC, cout::4::endl. else i= +vMQmJJC, cout::M::endl. else cout::Lnu e$istaL::endl. Cerina de la punctul c, este afiarea numrului de cltori din ultimele dou vagoane% <0!4+!J "n final vom comanda scrierea pe ecran a variabilei <. Implementarea algoritmului n limba&ul de programare *C'' va arta astfel% ![Link] #include<iostream.h> #include<conio.h> int n-m-v"-v(-v2-vF-vB-vI-t-:;

13

ndrumtor palate i cluburi ale copiilor void main ( ) { clrscr( ; cout<<c6; cin>>c; cout<<m6; cin>>m; v"6c; v(6v"*"#; v26v(*"#; vF6v2*"#; vB6vF*"#; vI6vB*"#; t6v"*v(*v2*vF*vB*vI ; cout<<t<<endl ; if (v"Gm66# cout<<"<< endl; else if (v(Gm66# cout<<(<< endl; else if (v2Gm66# cout<<2<< endl; else if (vFGm66# cout<<F<< endl; else if (vBGm66# cout<<B<< endl; else if (vIGm66# cout<<I<< endl; else cout<<nu e:ista<<endl; :6vB*vI; cout<<:<<endl ; getch( ; } eoarece la calculul cerinei de la punctul b am folosit n instruciunea i=3 iar pe ramura else tot o instruciune i=, spunem c am utilizat instruciuni if imbricate. ac e$ist mai multe soluii, se va afia doar una dintre ele. Ca s se poat afia toate soluiile posibile va trebui s folosim o variabil suplimentar oK care primete valoarea zero +considerm c nu e$ist nici un vagon cu un numr de cltori care se mparte e$act la m, i instruciunea compus% oK0G+ i= +v-QmJJC, Scout::-::[Link]-.T i= +v9QmJJC, Scout::9::endl. oOJ-.T i= +v<QmJJC, Scout::<::endl. oOJ-.T i= +v=QmJJC, Scout::=::endl. oOJ-.T i= +v4QmJJC, Scout::4::endl. oOJ-.T i= +vMQmJJC, Scout::M::endl. oOJ-.T i= "oK00G# cout::Lnu e$istaL::endl. #ste destul de greoi s lucrm ntr-un program cu multe variabile% v-,v9,v<D, vM. ar dac n problema de mai sus trenul are -C vagoane, sau -4? Ca s eliminm acest inconvenient vom folosi o singur variabil !, n care vom calcula, pe rnd, numrul de cltori din fiecare vagon astfel% !0c+ - numrul de cltori din primul vagon !0!+1G+ - numrul de cltori din al doilea vagon !0!+1G+ - numrul de cltori din al treilea vagon i aa mai departe. !roblema este atunci cnd dorim s calculm numrul total de cltori din tren, s adunm coninuturile variabilei !. Eltima valoare calculat este numrul de cltori din ultimul vagon. Numrul total de cltori se va calcula astfel% t0t+!+ aceast operaie se va repeta de cinci ori. Ceea ce este foarte important este ca valoarea variabilei t s primeasc valoarea de nceput c, numrul de cltori din primul vagon% t0c. Aceasta problema se poate genereliza, pentru un numr oarecare de vagoane% n. ar pentru aceasta va trebui s nvai instruciuni repetitive, care a&ut la e$ecuia unei instruciuni sau a unui grup de instruciuni de un anumit numr de ori.

14

ndrumtor palate i cluburi ale copiilor

Probleme *ro*use s*re re@ol!are

1. En copil citete o carte n < zile. "n fiecare zi, ncepnd cu a 9-a zi, citete cu a pagini mai mult dect n ziua
precedent. Cte pagini are cartea, dac n a 9-a zi citete b pagini. e la tastatura se citesc numere naturale a i b + numere mai mici dect 9CC ,, iar pe ecran se vor afia numrul de pagini ale crii. #$emplu% ate de intrare ate de ieire a J -C <M+9'-9'99, b J -9 ( clas format din n copii a plecat la teatru mpreun cu doamna nvtoare. Cu prere de ru, = copii au anunat ca nu pot merge. Copiilor rmai, nvtoarea le-a spus sa aduc b lei pentru biletele de intrare si s lei pentru sucuri.

2.

8ate de intrareA Numrul de copii n, preul biletului de intrare b3 preul sucului s 8ate de ie;ireA a, Ci lei au pltit elevii pentru intrarea la teatru? b, Ce a fost mai scump% biletul sau sucul? '<em*lu ate de intrare nJ-B bJ-4 sJM ate de ieire a,-34 b,biletul

3. Andrei este trimis de mama sa la piata cu o suma de bani s. #l trebuie sa cumpere < Og de legume diferite.
*aiat istet, Andrei face turul pietei, si isi noteaza preturile cele mai mici pentru rosii, castraveti, ardei si ceapa. 2ie a pretul unui Og de rosii, b pretul unui Og de castraveti, c pretul unui Og de ardei si 3 pretul unui Og de ceapa. ;e citesc de la tastatura valorile pentru s3 a3 b3 c si d- in aceasta ordine. ;tabiliti ce tipuri de legume trebuie sa cumpere Andrei astfel incat sa-i ramana cat mai multi bani nec)eltuiti +care-i poate pune la pusculita,. 8ate de intrareA s , suma de bani primit pentru cumprturi a G Og de roii b G Og de castravei c G Og de ardei d G Og de ceap 8ate de ie;ireA Cele trei tipuri de legume cumprate de Andrei astfel nct s-i rmn ct mai muli bani nec)eltuii

4. ;e da un numr natural O, -:JK:J<M4, care reprezint numrul din an asociat unei zile. Htiind ca anul nu este
bisect, se cere sa se afieze luna din care face parte. ate de intrare K G numrul asociat unei zile din an ate de ieire 1una din care face parte a K G a zi a anului

15

ndrumtor palate i cluburi ale copiilor

5. 1a cercul de informatic sunt = fete i b biei. "n aceast sptmn se fac nscrieri i n fiecare zi se nscriu c
fete i d biei. Afiai% a, cte fete i ci biei sunt nscrii la sfritul sptmnii b, ci elevi sunt nscrii la cerc c, dac numrul de elevi nscrii la cerc este un numr par se va afia K AL n caz contrar se va afia KNEL ate de intrare ate de ieire =J<4 a, =3 fete bJ4= B4 biei cJ9 b, -9= dJ< c, A

16

ndrumtor palate i cluburi ale copiilor

I.2 (tructuri re*etiti!e


#$ecuia unui bloc de instruciuni printr-un numr cunoscut de repetiii se reprezint prin structura repetitiv cu contor *entru L F)M. *entru contorJvaloare ini5ial la valoare final e<ecut6 *loc de instruciuni s=7r;it *entru Contorul pornete de la valoarea iniial +de obicei pornete de la -, i crete pn la valoarea final cu un pas de cretere +nu neaprat unu,. #$emplu% *entru aJ- la 4 e<ecut6 scrie a s=7r;it *entru (peraia de scriere se e$ecut de cinci ori pentru valorile variabilei a% -, 9, <, =, 4. pasul de cretere a variabilei a este -% a0a+1 sau a++ #$ist i situaii cnd contorul descrete, pornete de la o valoare iniial mai mare dect valoarea final, n acest caz pasul este --. =or+aJ-.a:J4.a'', cout::a::L U. =or+[Link]-.a--, cout::a::L U.

"n programare e$ist nenumrate situaii n care numrul de repetiii este cunoscut, de aceea aceast structur este foarte des folosit.

Problem rezolvat
En elev ia fcut tema pe vacan ntrun numr de zile. #l ia notat cte e$erciii a rezolvat n fiecare zi i cte ore a lucrat n fiecare zi.; se scrie un program care s afieze urmtoarele% Nr. total de e$erciii rezolvate. Nr. total de ore n care a lucrat. Nr. cel mai mare de e$erciii rezolvate ntro zi. !rogramul va citi urmtoarele%[Link] zile n care elevul ia fcut tema n, nr. de e$erciii rezolvate ntro zi e, [Link] ore lucrate n fiecare zi o. #$emplu% ate de intrare nJ9 ziua - eJ= oJ9 ziua 9 eJ< oJnJ4 eJ= eJ> oJ- oJ= eJ< eJM eJ4 oJ9 oJ< oJ9 e la tastatur se vor citi valorile pentru n3 e i o. ate de ieire B < = 9M -9 >

17

ndrumtor palate i cluburi ale copiilor !entru a citi numrul de e$ercitii e si numarul de ore lucrate o din fiecare zi folosim structura repetitiva *entru +=or#. !entru a calcula numarul total de e$ercitii si numarul total de ore lucrate folosim doua variabile te si to care se intializeaza cu valoarea zero% teJC si toJC. ;e aduna valoarea citita in variabila e la valoarea te% te0te+e #ste posibila utilizarea unei singure variabile e pentru memorarea, pe rand, a e$ercitiilor lucrate in fiecare zi deoarece dupa ce s-a adunat la suma te, nu mai este nevoie de valoarea ei ci se trece la citirea numarului de e$ercitii rezolvate in ziua urmatoare. Numarul cel mai mare de e$ercitii rezolvate intr-o zi ma< primeste valoarea zero% ma<JC daca e ma< ma<0e *entru i01 la n e<ecuta citeste e citeste o te0te+e to0to+o daca e ma< ma<0e s=arsit *entru scrie te3 to3 ma< Implementarea algoritmului n limba&ul de programare *C'' va arta astfel% #include<iostream.h> #include<conio.h> int n-e-o-?-te6#- to6#-ma:6#; void main ( ) { clrscr( ; cout<<n6; cin>>n; for (?6" ;?<6n ;?** { cin>>e ; cin>>o ; te6te*e ; to6to*o; if (e>ma: ma:6e; } cout<<te<< endl; cout<<to<< endl; cout<<ma:<< endl; getch( ; } aca dorim ca la citirea datelor de intrare sa apara pe ecran si numarul zilei pentru care se face citirea ne vom folosi de contorul @ care primeste valorile -,9,<D.,n. Inainte de citirea valorilor variabilelor e si o vom afisa pe ecran continutul variabilei z% for (?6" ;?<6n ;?** {cout<<?iua 7<<?<<endl; cin>>e ; cin>>o ; .....}

Probleme *ro*use s*re re@ol!are

1. Intr-o zi !etru mergea prin pdure. #l a&unge la un pod, unde un ;fin$ l oprete i i spune c l las s
treac dac rezolv urmtoarea problem% !etru are & pietre inscripionate cu numere pe ele. ; se

18

ndrumtor palate i cluburi ale copiilor afiseze pe ecran restul mpririi sumei tuturor numerelor la un numr K nscris pe pod. ;e dau n i K de la tastatur i cele n numere. #$emplu% ate de intrare nJ4 OJ< B -4 -> < ate de ieire 9 +suma numerelor numarului la OJ< este 9, M 9< MB 3 -- M< -= 4> <C B -C este ==, restul impartirii

nJ-C OJ--

2. ;e citesc n numere. ;a se afle si sa se afiseze pe ecran care suma este mai mare% suma primelor K
numere sau suma urmatoarelor. ;e dau n i K de la tastatur i cele n numere. #$emplu% ate de intrare nJB OJ= -B 4 9> <B< =9 43 ate de ieire s9 +suma primelor = numere s-J>- suma urmatoarelor < numere s9J-B=,

3. 1a !alatul Copiilor au venit n grupuri de copii la concursul de dans. Numarul de copii din fiecare grup
se citeste de la tastatura. Cati copii are cel mai mare grup si cu cat este mai mare fata de cel mai mic grup de copii. ;a se afiseze numarului grupului de copii care se imparte e$act la K. ;e dau n i K de la tastatur i cele n numere. #$emplu% ate de intrare nJ= OJ< -9 > -= B ate de ieire -= copii B -

4. 1a o staie meteo ntr-o lun s-au nregistrat urmtoarele temperaturi msurate n grade Celsius.
;criei un program care citete de la tastatur temperatura citit i determin temperatura minim, temperatura ma$im i cu ct este mai mare temperatura ma$im fa de temperatura minim nregistrat. ate de intrare ;e citesc de la tastatur numrul n de zile i temperatura nregistrat n fiecare zi. ate de ieire !e prima linie se vor afia temperatura ma$im. !e linia a doua se vor afia temperatura minim. !e linia a treia diferena dintre temperatura ma$im i minim #$emplu% ate de intrare nJ-C -4 -B -- -< -> -3 -C 9C 99 -= ate de ieire 99 -C -9

5. ;inbad Aarinarul se afl pe o insul cu comori. !este tot se aflau cufere pline cu monezi de aur. Hi n
timp ce ;inbad se minuna de toate splendorile din &urul su, cnd dintr-o dat i apru un du), care spuse% U#$ist o posibilitate de a avea toate aceste comori doar pentru tine dac rezolvi urmtoare problem% !e acest insul sunt & cufere, fiecare coninnd un numr de monezi de aur ce este inscripionat pe cufere. Afl cte monede sunt n total pe insul i toate vor fii ale taleL

19

ndrumtor palate i cluburi ale copiilor "n acest moment, ;inbad bucuros se apuc s fac calculele i se gndi c nu are ce face cu aa de multe monezi doar pentru el i cufarul cu cele mai puine monezi s l dea bisericii din satul su pentru a face o fapt bun. ac i voi l vei a&uta pe ;inbad Aarinarul s descopere cte monezi sunt n total, cte monezi trebuie s dea bisericii i cte i mai rmn, el va fii foarte darnic cu voi i v va rsplati cu -CC de puncte. Cerin56 Cunoscndu-se numrul n de cufere de pe insul i cte monezi conine fiecare cufr s se determine % - cte monezi sunt n total. - cte monezi trebuie s dea bisericii. - cte monezi i mai rmn. 8ate de intrare e la tastatur se citete n numrul de cufere, i apoi n numere naturale reprezentnd cte monezi conine fiecare cufr. 8ate de ie;ire !e primul rnd de ecran se va afia numrul total al monezilor. !e al doilea rnd al ecranului se va afia numrul cel mai mic de monezi dintr-un cufr pe care l va dona bisericii. !e al treilea rnd al ecranului se va afia numrul monezilor care i mai rmn lui ;inbad. Mestric5ii nV-CC #$emplu% ate de intrare nJ = -CC 99C -4C >C

ate de ieire 44C >C =BC

Retineti:
En algoritm scurt si simplu poate genera un program usor de scris si verificat atele problemei sunt memorate n zone de memorie prin nume asociate datelor ;rtuctura repetitiv cu un numr cunoscut de pasi +for, controleaz numrul de e$ecutii cu a&utorul unei variabile +zon de memorie, care se comport ca un contor.

20

ndrumtor palate i cluburi ale copiilor

II. 'lemente de *rogramare *entru gimna@iu


II.1 Instructiuni re*etiti!e "n programare, de foarte multe ori, este necesar repetarea unei secvene de instruciuni. #a implic un salt n e$ecuia programului de la instruciunea final a secvenei care se repet la nceputul secvenei. ;e disting trei tipuri de instruciuni repetitive% -. Instruciunea repetitiv cu numr cunoscut de pai +2(0, 9. Instruciunea repetitiv cu test iniial +W6I1#, <. Instruciunea repetitiv cu test final + (...W6I1#, I&[Link]&ea repetitiv cu &umr cu&oscut 3e pa0i (5-6) Instruciunea 2(0 are urmtoarea sinta$% for (e:presie"; e:presie(; e:presie2 secven5 de instruc5iuni unde% e:presie" este aa-numita Ke$presie de iniializare a ciclului forL, din care trebuie s rezulte valoarea iniial a contorului. e:presie( reprezint condiia de continuare a ciclului, mai e$act condiia pe care trebuie s o ndeplineasc contorul pentru ca e$ecuia ciclului s continue cu un nou pas. prin aceast e$presie ne putem asigura c ciclul este finit% el se va nc)eia n momentul n care condiia dat de e:presie( nu mai este adevarat. e:presie2 asigur trecerea la pasul urmtor al ciclului. ea reprezint o incrementare sau o atribuire prin care se stabilete valoarea pe care o va avea contorul la pasul urmtor al ciclului.

Probleme rezolvate: 1. ; se calculeze suma sJ-'9'<'D'n. Numrul n citit de la tastatur. 9:emplu numeric0
ate de intrare nJ = 5include :iostream.)N void main+, S int i,n,sJC. cout::[Link]. for+iJ-.i:Jn.i'', sJs'i. cout::RsJR::s. T ate de ieire -C

2. ; se calculeze suma numerelor naturale cuprinse ntre dou numere date a i b. Numerele a i b
citite de la tastatur. 9:emplu numeric0 /ate de intrare0 capetele intervalului 2 % /ate de ieire 0 suma6"B. ate de intrare ate de ieire aJ < -4 bJ B

21

ndrumtor palate i cluburi ale copiilor 5include :iostream.)N void main+, S int i,a,b,$,sJC. cout::[Link]. cout::[Link]. if +aNb, S$[Link]$.T for+iJa'-.i:Jb--.i'', sJs'i. cout::RsJR::s. T

3.

;e introduc de la tastatur n numere. ; se afieze valoarea ma$im i de cte ori apare n ir. !e prima linie se va afia valoarea ma$im iar pe rndul urmtor numrul de apariii a ma$imului n irul de numere.

9:emplu numeric0 ate de intrare nJ > "( "B % "B "# F "B % 5include :iostream.)N void main+, S int i,n,nr,O,ma$. cout::[Link]. cout::[Link]. ma$[Link]-. for+iJ9.i:Jn.i'', S cout::[Link]. if +nrJJma$, OJO'-. else if+nrNma$, Sma$[Link]-.T T cout::ma$::endl. cout::O::endl. T

ate de ieire -4 <

4. ;e citesc pe rnd n numere ntregi. ; se numere cte dintre ele au restul B la mprirea cu -<. ;
se afieze numrul acestora i suma celorlalte numere . #$emplu numeric % ate de intrare ate de ieire nJ = ( ((# i FI (# "B 2# FI 5include :iostream.)N void main+, S int i,n,nr,O,sJC. cout::[Link]. for+iJ-.i:Jn.i'', S cout::[Link]. =4

22

ndrumtor palate i cluburi ale copiilor if +nrQ-<JJB, OJO'-. else sJs'nr.T cout::endl::ROJ R::O::endl::RsJR::s. T 5. ; se calculeze suma sJ-'-79'-797<'D'-797<7D7n. 9:emplu numeric0 ate de intrare ate de ieire nJ = << 5include :iostream.)N void main+, S int i,n,sJC,pJ-. cout::[Link]. for+iJ-.i:Jn.i'', SpJp7i. sJs'p.T cout::RsJR::s. T

Probleme *ro*use s*re re@ol!are

1. ; se afieze toi divizorii unui numr natural dat. 9:emplu numeric 0 ate de intrare ate de ieire nJ -9 " ( 2 F I "( 2. ;e introduce un numr. ; se verifice dac este numr prim. 9:emple numerice 0 ate de intrare ate de ieire nJ 9< !rim nJ <9 Nu este prim 3. ; se afieze tabla nmulirii cu n. 9:emplu numeric 0 ate de intrare nJ 4

ate de ieire ":B6B (:B6"D 2:B6"B F:B6(# I:B62#J

4. ; se calculeze sumele
s-J-79'97<'<7='D'+n--,7n s9J-9'99'<9'D'n9 s<J-@9'9@<'<@='D'n@+n'-, s=J9-<'=-4'D-33'-CC 5. ; se afieze descompunerea unui numr dat n factori primi. 9:emplu numeric 0 ate de intrare ate de ieire nJ -9 "(6 (K( ' 2K"

23

ndrumtor palate i cluburi ale copiilor

6. !entru a o elibera pe Ileana Cosnzeana, 2t-2rumos trebuie s parcurg < Om. #l merge zilnic a
Om, dar Xna-cea-0ea l duce n fiecare noapte cu b Om napoi, b:a. up cte zile 2t 2rumos o elibereaz pe Ileana Cosnzeana? 9:emplu0 ate de intrare :6"# a6F +6" ate de ieire <

7. ;e citesc pe rnd temperaturile medii ale fiecrei luni a unui an, ca numere ntregi. ; se afieze
cu dou zecimale media anual a temperaturilor pozitive i a celor negative. 9:emplu0 ate de intrare ate de ieire $B $2 " L "( "% (# (" "L "# I $( medieMpo?6"[Link] medieMneg6$2.22

8. ;e citesc mediile a n elevi, ca numere reale. ; se afieze cea mai mare i cea mai mic medie.
; se verifice dac sunt corigeni. 9:emplu 0 /ate de intrare /ate de ieire ate de intrare n6F D.B# F.(B [Link] I.22 ate de ieire ma:[Link] min6F.(B " corigent

9. ; se afieze toate numerele pn la -CC care au patru divizori. 10. intre numerele mai mici ca -CCC, care au cei mai muli divizori ?

I&[Link]&ea repetitiv cu test i&itial (78I9:) Instruciunea W6I1# are urmtoarea sinta$% 78I9: (condi5ie secven5 de instruc5iuni unde% - condi5ie reprezint o e$presie logic +care poate fi adevarat sau fals,. - secven5a de instruc5iuni este alcatuit din una sau mai multe instruciuni. !rincipiu de e$ecuie% -. se evalueaz condiia+e$presia logic,. 9. G dac aceasta este adevarat se e$ecut secvena de instruciuni, apoi se revine la evaluarea condiiei. n timpul e$ecuiei secvenei de instruciuni valoarea de adevr a condiiei s-a putut modifica. - dac condiia nu este ndeplinit se prsete instruciunea W6I1# i se trece la e$ecuia instruciunii care urmeaz n program. (bservaii% Condiia trebuie s fie ncadrat ntotdeauna ntre paranteze rotunde. ac secvena de instruciuni conine cel puin dou instruciuni acestea vor fi ncadrate ntre acolad desc)is i acolad nc)is. #$ist posibilitatea ca secvena de instruciuni s nu se e$ecute nici mcar o dat +atunci cnd condiia nu este ndeplinit nc de la prima testare a acesteia,.

24

ndrumtor palate i cluburi ale copiilor

Probleme rezolvate: 1. ;e citete un numr ntreg n. ; se calculeze n factorial n8J-797<7D7n 9:emplu numeric0 /ate de intrare0n6F- date de iesire0 nN6(F
5include :iostream.)N void main+, S int i,n,factJ-. cout::[Link]. iJ-. Y)ile+i:Jn, S factJfact7i. iJi'-. T cout::Rn8JR::fact. T

2. ; se determine puterea la care apare numrul prim p n descompunerea n factori primi a numrului
natural nenul n. /ate de intrare0n6(F-p6( date de iesire0 putere62- pentru c (F6( 2 ' 2 5include :iostream.)N void main+, S int n,p,putere. cout::[Link]. cout::[Link]. putereJC. Y)ile+nQpJJC, S putereJputere'-. nJn@p. T cout::RputereJR::putere. T

3. ;e citete un numr ntreg n. ; se determine suma cifrelor numrului n. 9:emplu numeric0 /ate de intrare0n6F2%(- date de iesire0 s6"I
5include :iostream.)N void main+, S int n,c,sJC. cout::[Link]. Y)ile+n8JC, ScJnQ-C. sJs'c. nJn@-C. T cout::RsJR::s. T

25

ndrumtor palate i cluburi ale copiilor

4. ;e citete dou numere ntregi a i b. eterminai cel mai mare divizor comun al celor dou numere. 9:emplu numeric0 /ate de intrare0 a6(B-+6"B./ate de iesire0 cmmdc6B;
0ezolvarea -+algoritmul lui #uclid,% 5 include :iostream.)N void main+, Sint a,b,r,cmmdc. cout::Ra,bJ [Link]. Y)ile+b8JC, SrJaQb. aJb. bJr.T cmmdcJa. cout::RcmmdcJ R::cmmdc. T 0ezolvarea 9 +prin scderi repetate,% 5 include :iostream.)N void main+, Sint a,b,cmmdc. cout::Ra,bJ [Link]. Y)ile+a8Jb, if+aNb, aJa-b. else bJb-a. cmmdcJa. cout::RcmmdcJ R::cmmdc. T

5. ;e citete un numr ntreg n scris n baza -C. ; se realizeze conversia acestui numr n baza Z
+9:JZ:J3,. 9:emplu numeric0 /ate de intrare0 n"#6%I- O6F./ate de iesire0 nO6"#2#; 5 include :iostream.)N void main+, Sint n-C,nZJC,pJ-,Z. cout::[Link]-C. cout::Rbaza%[Link]. Y)ile +n-C8JC, SnZJnZ'p7+n-CQZ,. n-CJn-C@Z. pJp7-C.T cout::RnZJR::nZ. T

Probleme *ro*use s*re re@ol!are

1. ;e introduce un ir de numere de la tastatur, pn la ntlnirea valorii C . ; se afieze valoarea


ma$im i de cte ori apare n ir. 9:emplu numeric0 /ate de intrare0 numerele introduse 0 "(- "D- %- "D- "#- F- "D- %- L- "2- # /ate de ieire 0 ma:imul este "D si apare de 2 ori.

2. ;e citete un numr ntreg n. ; se determine inversul +oglinditul, numrului n. 9:emplu numeric0 /ate de intrare0n6FIL2- date de iesire0 inv62LIF. 3. En numr se numete palindrom dac el este egal cu inversul +oglinditul, lui. #$emplu% numarul
-<=<- este palindrom. ; se afieze toate numerele care sunt palindrom i care aparin intervalului [a,b\, cu a i b citite de la tastatur. 9:emplu numeric0 /ate de intrare0 a6%D-+6"2B /ate de ieire 0 LL-DD-"#"-"""-"("-"2"

26

ndrumtor palate i cluburi ale copiilor

4. ;e citete un numr ntreg n. ; se afieze numrul obinut prin eliminarea tuturor cifrelor C din
numr. 9:emplu numeric0 /ate de intrare0 nr6(#B#% /ate de ieire 0 (B%

5. ;e introduce de la tastatur un ir de n numere ntregi. ; se afieze toate perec)ile de numere


introduse consecutiv care au proprietatea c suma cifrelor primului numr este par iar suma cifrelor celui de-al doilea numr este impar. 9:emplu numeric0 /ate de intrare0 n6"(- numerele 0 "I- (%B- %L- FB- BI- (""- %"2- DL- I(F- D"22- "LI- FBB /ate de ieire 0 (%B i %L- ("" i %"2- D"22 i "LI

6. ; se scrie programul prin care se calculeaz c.m.m.d.c. i c.m.m.m.c. a < numere introduse de
la tastatur, ; se generalizeze problema pentru n numere introduse de la tastatur.

7. ; se afieze toate numerele naturale, mai mici dect un numr natural n, care sunt prime cu n, n
introducndu-se de la tastatur. +dou numere naturale se numesc prime ntre ele dac cel mai mare divizor comun al lor este -,

8. ;e citete un numr n scris n baza Z +9:JZ:J3,. ; se realizeze conversia acestui numr n


baza -C.

9. "ntr-o tabr particip b biei i f fete. ;e organizeaz un &oc la care trebuie s participe un
numr ct mai mare de ec)ipe, formate din acelai numr nrb de biei i nrf de fete. /rebuie s scriei un program care determin numrul ma$im de ec)ipe care se pot forma i numrul nrb de biei i, respectiv numrul nrf de fete, care intr n componena fiecrei ec)ipe. ac nu se pot forma cel puin dou ec)ipe identice, afiai Nu ne putem &uca. #$emple% pentru bJ-C fJ-4 se va afia% 4 ec)ipe cu 9 baieti < fete, pentru bJ-9 fJ94 se va afia Nu ne putem &uca.

10. ; se afizeze primele n perec)i de numere prime vecine, cu n introdus de la tastatura. 9:emple 2 i B- B i %- "" i "2- "% i "D.
I&[Link]&ea repetitiv cu test i&itial (D-44478I9:) Instruciunea (...W6I1# are urmtoarea sinta$% Dsecven5 de instruc5iuni 78I9: (condi5ie ; unde% - condi5ie reprezint o e$presie logic +care poate fi adevarat sau fals,. - secven5a de instruc5iuni este alcatuit din una sau mai multe instruciuni. !rincipiu de e$ecuie% -.se e$ecut secvena de instruciuni. [Link] evalueaz condiia+e$presia logic,. G dac aceasta este adevarat se e$ecut din nou secvena de instruciuni, - dac condiia nu este ndeplinit se prsete instruciunea (...W6I1# i se trece la e$ecuia instruciunii care urmeaz n program. (bservaii% Condiia trebuie s fie ncadrat ntotdeauna ntre paranteze rotunde. ac secvena de instruciuni conine cel puin dou instruciuni acestea vor fi ncadrate ntre acolad desc)is i acolad nc)is.

27

ndrumtor palate i cluburi ale copiilor eoarece testarea condiiei are loc dup e$ecutarea secvenei de instruciuni , se va e$ecuta cel puin o dat secvena de instruciuni c)iar dac condiia nu este ndeplinit nc de la nceput.

Probleme rezolvate: 1. ;e citete un numr ntreg n. ; se calculeze suma a n numere naturale citite pe rnd de la tastatur. 9:emplu numeric0 /ate de intrare0n6I-numerele0 "( I% 2F % "B BF date de iesire0 s6"LD
5include :iostream.)N void main+, S int i,n,nr,s. cout::[Link]. [Link]. do S cout::[Link]. sJs'nr. iJi'-. T Y)ile+i:Jn,. cout::RsJR::s. T

2. ;e citesc dou numere ntregi n i O. eterminai toate numerele mai mici sau egale cu n care sunt
multipli de O. /ate de intrare0n6F#-C6I./ate de iesire0 I-"(-"L-(F-2#-2I 5include :iostream.)N void main+, S int i,n,factJ-. cout::[Link]. cout::[Link]. iJO. do S if+iQOJJC, cout::i::L L. iJi'-. T Y)ile+i:Jn,. T

3. ;e citete un numr natural nenul n. ; se verifice dac are toate cifrele pare. /ate de intrare0n6(F2I Paspuns0 =>; n6FFL# Paspuns0 /!
5include :iostream.)N void main+, S int n,t. cout::[Link]. tJ-. @@are toate cifrele pare do

28

ndrumtor palate i cluburi ale copiilor S if+nQ-CQ98JC, tJC. @@are o cifra impara nJn@-C.

T Y)ile+n8JC,. if+tJJ-, cout::L AL. else cout::LNEL. T

4. ; se citeasc numere naturale pn la introducerea a dou numere pare consecutiv. ; se calculeze


suma numerelor introduse , inclusiv ultimele numere. /ate de intrare0numerele0 I-"2-B-(-%-L-""-B-L-F date de iesire0 s6ID 5include :iostream.)N void main+, S int nr-,nr9,t,s. cout::[Link]-. [Link]. do S tJC. if+nr-Q9JJC, tJt'-. sJs'nr-. cout::Rnr9JR.cinNNnr9. if+nr9Q9JJC, tJt'-. nr-Jnr9. T Y)ile+t8J9,. sJs'nr9. cout::LsJL::s. T

5. !e o strad sunt n case. Casele sunt numerotate de la - la n folosindu-se cifre confectionate din
material [Link] astfel de cifre au fost necesare pentru numerotarea tuturor caselor de pe strad? 9:emplu numeric0 /ate de intrare0n6IB case Q$au folosit "(" cifre 5include :iostream.)N void main+, S int i,n,nc,$. cout::[Link]. ncJC. for+iJ-.i:Jn.i'', S $Ji. do S ncJnc'-. $J$@-C. T

29

ndrumtor palate i cluburi ale copiilor Y)ile+$8JC,. T cout::RncJR::nc. T

Probleme *ro*use s*re re@ol!are

1. ;e citete un numr ntreg n format din mai multe cifre. ; se determine suma cifrelor impare i
produsul cifrelor pare ale numrului n. /ate de intrare0 n6(%BFL /ate de ieire 0 s6"F- p62B

2. ; se citeasc succesiv numere ntregi pn la ntlnirea lui C. ; se determine suma ma$im a dou
numere consecutive. 9:emplu numeric0 /ate de intrare0 numerele 0 (-B -% -2 -F -$F - 2 -% -L -2- I- "-# /ate de ieire 0 "B (% * L

3. ;e citete un numr natural a. ; se construiasc un numr b din cifrele impare ale lui a luate n ordine
invers. 9:emplu numeric0 /ate de intrare0 a6%(2I /ate de ieire 0 +62%

II.& Iectori "tablouri unidimensionale#


"n practic, apare de multe ori necesitatea de a prelucra un set de valori de acelai tip, aezate ntr-o anumit ordine. e e$emplu, dac dorim s memorm temperaturile ma$ime nregistrate pe parcursul unei luni ntr-o anumit localitate ar trebui s declarm cte o variabil pentru fiecare din zilele lunii, ceea ce ar fi total ineficient. 1imba&ul C'' permite memorarea tuturor elementelor unui astfel de ir de valori ntr-o singur variabil inde$at, n care elementele sunt dispuse ntr-o anumit ordine, ocupnd locaii de memorie succesive, bine determinate. ( astfel de variabil se numete vector sau tablou unidimensional. 2iecare element este identificat prin KindiceleL sau KpoziiaL sa n cadrul vectorului. !entru a ne referi la un element al vectorului, trebuie s scriem numele variabilei-vector urmat de indicele elementului cuprins ntre paranteze ptrate. e e$emplu dac numele variabilei-vector este v atunci putem scrie v[<\J<= pentru vectorul sc)iat mai &os% B --9 <= 9 -4< -= -4

v[-\ v[9\ v[<\ v[=\ v[4\ v[M\ v[B\ Declararea u&ui vector Ca i celelalte variabile un vector trebuie declarat nainte de a fi utilizat. "n declaraia unui vector trebuie s apar numele variabilei-vector, tipul elementelor vectorului i numrul ma$im de componente ale vectorului, astfel% ti*Nelemente numeN!ariabilaN!ectorOnum6rNma<imNelementeP #$emplu% int v[9C\. ;-a declarat un vector v cu ma$im 9C componente +elemente, numere ntregi )bser!a5ieA

30

ndrumtor palate i cluburi ale copiilor Numrul ma$im de componente ale vectorului nu trebuie neaprat s coincid cu numrul efectiv de componente ale vectorului. Numrul efectiv de componente este citit n cadrul programului i poate s fie diferit de la o e$ecuie la alta a programului. ;itirea 0i afi0area compo&e&telor u&ui vector 5include :iostream.)N void main+, S int v[9C\,n,i. cout::[Link]. @@numrul efectiv de componente din vector for+iJ-.i:Jn.i'', S cout::Lv[U::i::L\JL. citirea elementelor vectorului cinNNv[i\. S for+iJ-.i:Jn.i'', cout::v[i\::L L. afisarea elementelor vectorului T Algoritmi pentru prelucarea vectorilor 'arcur<erea vectorilor #$emplu% ;e citete un vector cu n componente numere ntregi. ; se afieze cte componente pare i cte componente impare conine vectorul. 5include :iostream.)N void main+, S int v[9C\,n,i,nrparJC,nrimparJC. cout::[Link]. for+iJ-.i:Jn.i'', S cout::Lv[U::i::L\JL. cinNNv[i\. S for+iJ-.i:Jn.i'', cout::v[i\::L L. cout::endl. for+iJ-.i:Jn.i'', if+v[i\Q9JJC, nrparJnrpar'-. else nrimparJnrimpar'-. cout::LnrparJL::nrpar::endl. cout::LnrimparJL::nrimpar. T

Probleme *ro*use s*re re@ol!are

1. ;e citete un vector cu n componente numere ntregi. ; se calculeze media aritmetic a elementelor


pozitive din vector.

2. ;e citete un vector cu a componente numere ntregi. ; se copieze vectorul a n alt vector b. 31

ndrumtor palate i cluburi ale copiilor

3. ;e citete un vector cu a componente numere ntregi. ; se creeze un nou vector b care s conin 4. 5.
componentele vectorului a n ordine invers, astfel% b[n\Ja[-\, b[n--\Ja[9\,D., b[-\Ja[n\. ;e citete un numr natural. ; se afieze frecvena cifrelor sale +cifrele care apar n numr i de cte ori apar,. ;e citete un vector cu n componente numere ntregi. ; se afieze cte dintre componentele sale au valoarea egal cu suma elementelor vecine. Determi&area mi&imului1maximului 3i&tre eleme&tele u&ui vector #$emplu% ;e citete un vector cu n componente numere ntregi. ; se determine valoarea ma$im i poziiile+indicii, unde apare n vector. 5include :iostream.)N void main+, S int v[9C\,n,i,ma$. cout::[Link]. for+iJ-.i:Jn.i'', S cout::Lv[U::i::L\JL. cinNNv[i\. S for+iJ-.i:Jn.i'', cout::v[i\::L L. cout::endl. ma$Jv[-\. for+iJ9.i:Jn.i'', if+v[i\Nma$, ma$Jv[i\. cout::LFaloarea ma$ima este U::ma$::L si apare pe pozitiile%L::endl. for+iJ-.i:Jn.i'', if+v[i\JJma$, cout::i::L L. T

Probleme *ro*use s*re re@ol!are

1. ;e citete un vector cu n componente numere ntregi. ; se determine att elementul minim ct i 2. 3. 4. 5.


elementul ma$im, printr-o singur parcurgere a vectorului. ;e citete un vector cu n componente numere ntregi. ; se determine cele mai mari dou elemente, printr-o singur parcurgere a vectorului. ;e citete un vector cu n componente numere ntregi. ; se afieze ma$imul dintre elementele pare ale vectorului. ;e citesc doi vectori cu componente numere ntregi. ; se afieze cte dintre componentele primului vector sunt strict mai mari dect toate componentele celui de-al doilea vector. ;e citete un numr ntreg n. ; se determine cifra ma$im i cifra minim a numrului prin plasarea cifrelor ntr-un vector. ;utarea u&ui eleme&t =&tr2u& vector Cutarea unui element ntr-un vector nesortat ;e citete un vector cu n componente numere ntregi precum i un numr ntreg $. ; se verifice dac numrul $ se gasete printre componentele vectorului v i, n caz afirmativ s se precizeze poziia unde se gsete.

32

ndrumtor palate i cluburi ale copiilor 5include:iostream.)N void main+, Sint i,$,n,v[9C\,gasit. cout::[Link]. cout::R$[Link]$. for+iJ-.i:Jn.i'', Scout::Rv[R::i::R\JR. cinNNv[i\.T gasitJC. for+iJ-.i:Jn ]] 8gasit.i'', if +v[i\JJ$,gasitJ-. if +gasit, cout::R;-a gasit elementul in pozitia R::i--. else cout::RNE s-a gasit elementul.R. T C6utarea unui element :ntrLun !ector sortat "C6utarea binar6# ;e citete un vector cu n componente numere ntregi ale crui elemente sunt sortate cresctor precum i un numr ntreg $. ; se verifice dac numrul $ se gasete printre componentele vectorului v i, n caz afirmativ s se precizeze poziia unde se gsete. 5include:iostream.)N void main+, Sint i,$,n,v[9C\,gasit,st,dr,mi&l. cout::[Link]. cout::R$[Link]$. for+iJ-.i:Jn.i'', Scout::Rv[R::i::R\JR. cinNNv[i\.T [Link]. gasitJC. Y)ile+st:Jdr ]] 8gasit, Smi&lJ+st'dr,@9. if+v[mi&l\JJ$, gasitJ-. else if+$:v[mi&l\, drJmi&l--. else stJmi&l'-.T if+stNdr, cout::RNE s-a gasit elementulR. else cout::R;-a gasit elementul in pozitia R::mi&l. T [Link] unui element :ntrLun !ector -.;e citete un vector cu n componente numere ntregi precum i un numr ntreg $. ; se tearg din vector primul element care are valoarea $. 5include:iostream.)N void main+, Sint i,n,v[9C\,$,O. cout::[Link]. cout::R$[Link]$. for+iJ-.i:Jn.i'', Scout::Rv[R::i::R\JR. cinNNv[i\.T iJ-. Y)ile+i:Jn ]] v[i\8J$, i''.

33

ndrumtor palate i cluburi ale copiilor if+i8Jn'-, SOJi. for+iJO.i:Jn--.i'', v[i\Jv[i'-\. for+iJ-.i:Jn--.i'', cout::v[i\::R R. T else cout::RNE s-a gasit elementulR. T 9.;e citete un vector cu n componente numere ntregi. ; se insereze elementul cu valoarea ^ nainte de primul element care area valoarea $ +$ i ^ se citesc de la tastatur,. void main+, Sint i,n,v[9C\,O,$,^. cout::[Link]. cout::R$[Link]$. cout::R^[Link]^. for+iJ-.i:Jn.i'', Scout::Rv[R::i::R\JR. cinNNv[i\.T iJ-. Y)ile+i:Jn ]] v[i\8J$, i''. if+i8Jn'-, SOJi. for+iJn'-.iNJO'-.i--, v[i\Jv[i--\. v[O\J^. for+iJ-.i:Jn'-.i'', cout::v[i\::R R. T else cout::RNu s-a gasit elementulR. T

Probleme *ro*use s*re re@ol!are

1. ;e citete un vector cu n componente numere ntregi. ; se introduc n vector dup fiecare element
par, un element cu valoarea C.

2. ;e citete un vector cu n componente numere ntregi. ; se elimine din vector toate elementele pare 3. 4.
tiind c vectorul are cel puin un element impar. ;e citete un vector cu n componente numere ntregi. ; se mute ultimul element la nceputul vectorului. ;e citesc doi vectori cu componente numere ntregi. se mute primul element la sfritul vectorului. 6eu&iu&ea a 3ou [Link] 5include:iostream.)N void main+, Sint i,&,m,n,a[9C\,b[9C\,c[4C\,gasit,O. cout::[Link]. cout::[Link]. for+iJ-.i:Jn.i'', Scout::Ra[R::i::R\JR. cinNNa[i\.T for+&J-.&:Jm.&'', Scout::Rb[R::&::R\JR. cinNNb[&\.T OJC.

34

ndrumtor palate i cluburi ale copiilor for+iJ-.i:Jn.i'', Sc[O\Ja[i\.O''.T for+&J-.&:Jm.&'', SgasitJC. for+iJ-.i:Jn ]] 8gasit.i'', if+a[i\JJb[&\, gasitJ-. if+8gasit, Sc[O\Jb[&\.O''.T T for+iJ-.i:JO.i'', cout::c[i\::R R. T I&[Link] a 3ou [Link] 5include:iostream.)N void main+, Sint i,&,m,n,a[9C\,b[9C\,c[4C\,gasit,O. cout::[Link]. cout::[Link]. for+iJ-.i:Jn.i'', Scout::Ra[R::i::R\JR. cinNNa[i\.T for+&J-.&:Jm.&'', Scout::Rb[R::&::R\JR. cinNNb[&\.T for+iJ-,OJC.i:Jn.i'', for+&J-.&:Jm.&'', if+a[i\JJb[&\, SO''.c[O\Ja[i\.T if+OJJC, cout::RIntersectia este multimea vidaR. else for+iJ-.i:JO.i'', cout::c[i\::R R. T Difere&.a a 3ou [Link] 5include:iostream.)N void main+, Sint i,&,m,n,a[9C\,b[9C\,c[4C\,gasit,O. cout::[Link]. cout::[Link]. for+iJ-.i:Jn.i'', Scout::Ra[R::i::R\JR. cinNNa[i\.T for+&J-.&:Jm.&'', Scout::Rb[R::&::R\JR. cinNNb[&\.T OJC. for+iJ-.i:Jn.i'', Sfor+&J-.&:Jm]]8gasit.&'', if+a[i\JJb[&\, gasitJ-. if+8gasit, Sc[O\Ja[i\.O''.T T if+OJJC, cout::R iferenta este multimea [Link] for+iJ-.i:JO.i'', cout::c[i\::R R.

35

ndrumtor palate i cluburi ale copiilor T 'robleme propuse -.;e consider dou mulimi A i *. ; se verifice dac% - A este inclus n * - A include mulimea * - A este egal cu * 9. ;e consider dou mulimi A i *. ; se calculeze produsul cartezian al celor dou mulimi.

II.1 (ortarea elementelor unui !ector


(peraia de sortare presupune rearan&area elementelor vectorului astfel nct ntre valorile lui s e$iste o relaie de ordine +ordonare cresctoare sau ordonare descresctoare,. #$ist mai multe metode +algoritmi de sortare,. !rezentm n continuare doar < dintre cele mai cunoscute metode. Qortarea prin metoda inserrii "n aceast metod se folosesc 9 vectori% -vectorul surs +vectorul nesortat, a% -vectorul destinaie +vectorul sortat, b. #lementele vectorului surs a[i\ se copiaz n vectorul destinaie prin inserarea n poziia corespunztoare, astfel nct n vectorul destinaie s fie respectat relaia de ordine. 5include:iostream.)N void main+, Sint i,n,a[9C\,b[9C\,&,O. cout::[Link]. for+iJ-.i:Jn.i'', Scout::Ra[R::i::R\JR. cinNNa[i\.T b[-\Ja[-\. for+iJ9.i:Jn.i'', S &J-. Y)ile+&:Ji-- ]] a[i\Nb[&\, &''. for+[Link]&'-.O--, b[O\Jb[O--\. b[&\Ja[i\. T for+iJ-.i:Jn.i'', cout::b[i\::R R. T (ortarea *rin metoda bulelor !rin aceast metod se parcurge vectorul i se compar fiecare element cu succesorul su. ac nu sunt n ordine cele dou elemente se intersc)imb ntre ele. Fectorul se parcurge de mai multe ori pn cnd la o parcurgere complet nu se mai e$ecut nici o intersc)imbare ntre elemente +nseamn c vectorul este sortat,. 5include:iostream.)N void main+, Sint i,n,a[9C\,au$,gasitJ-. cout::[Link]. for+iJ-.i:Jn.i'', Scout::Ra[R::i::R\JR.

36

ndrumtor palate i cluburi ale copiilor cinNNa[i\.T Y)ile+gasit, SgasitJC. for+iJ-.i:Jn--.i'', if +a[i\Na[i'-\, SgasitJ-. au$Ja[i\. a[i\Ja[i'-\. a[i'-\Jau$. T T for+iJ-.i:Jn.i'', cout::a[i\::R R. T (ortarea *rin metoda selec5iei directe !rin aceast metod se aduce pe prima poziie elementul cu valoarea cea mai mic din cele n elemente ale vectorului, apoi se aduce pe poziia a doua elementul cu cea mai mic valoare din ultimele n-elemente ale vectorului , apoi se aduce pe poziia a treia elementul cu cea mai mic valoare din ultimele n-9 elemente ale vectorului , .a.m.d. 5include:iostream.)N void main+, Sint i,n,a[9C\,&,au$. cout::[Link]. for+iJ-.i:Jn.i'', Scout::Ra[R::i::R\JR. cinNNa[i\.T for+iJ-.i:Jn--.i'', for+&Ji'-.&:Jn.&'', if +a[i\Na[&\, Sau$Ja[i\.a[i\Ja[&\.a[&\Jau$.T for+iJ-.i:Jn.i'', cout::a[i\::R R. T Algoritmii de sortare prezentai corespund ordonrii cresctoare a vectorilor. !entru ordonare descresctoare este suficient s negai e$presiile folosite pentru comparare. 'robleme propuse -,.;e citete un numr n de ma$im 3 cifre. ; se afieze numerele obinute prin ordonarea cresctoare, respectiv descresctoare a cifrelor sale. 9,.2iind dat un vector cu n elemente, s se sorteze n prima parte a sa elementele impare n mod cresctor i la sfrit elementele pare n mod cresctor. <,.; se verifice dac un vector este ordonat cresctor sau descresctor. =,.; se verifice dac un vector este de tip depresiune, adic dac de la prima poziie pn la o poziie oarecare p este ordonat strict descresctor, iar de la poziia p'- pn la sfritul vectorului e ordonat strict cresctor. 4,. ; se verifice dac un vector este de tip munte, adic dac de la prima poziie pn la o poziie oarecare p este ordonat strict cresctor, iar de la poziia p'- pn la sfritul vectorului e ordonat strict descresctor. I&terclasarea a 3oi vectori Interclasarea este procedeul de obinere, plecnd de la doi vectori ordonai a unui nou vector ordonat, care conine toate elementele celor doi vectori iniiali.

37

ndrumtor palate i cluburi ale copiilor !rin acest algoritm se parcurg simultan cei doi vectori surs pentru a se compara un element dintr-un vector cu un element din celalalt vector. #lementul cu valoarea mai mic este copiat n vectorul destinaie i ters din vectorul surs. !rocesul continu pn cnd este epuizat unul din vectori. #lementele rmase n cellalt vector se adaug la sfritul vectorului destinaie. 5include:iostream.)N void main+, Sint n,m,i,&,O,a[9C\,b[9C\,c[9C\. cout::[Link]. for+iJ-.i:Jn.i'', Scout::Ra[R::i::R\[Link][i\.T cout::[Link]. for+iJ-.i:Jm.i'', Scout::Rb[R::i::R\[Link][i\.T iJ-.&[Link]-. Y)ile++i:Jn,]]+&:Jm,, if+a[i\:b[&\, Sc[O\Ja[i\.i''.O''.T else Sc[O\Jb[&\.&''.O''.T if+i:n, for+&Ji.&:Jn.&'', Sc[O\Ja[&\.&''.O''.T else for+iJ&.i:Jm.i'', Sc[O\Jb[i\.i''.O''.T for+iJ-.i:JO--.i'', cout::c[i\::R R. T

II.2 Qatrici "tablouri bidimensionale#


( matrice este un tabel cu elemente de acelai tip, dispuse pe linii i coloane. atorit acestei aezri a elementelor, o matrice este de fapt un tablou bidimensional. 2iecare element al matricii se afl pe o anumit linie i pe o anumit coloan. !oziia unui element pe linie se numete i indice de linie, iar poziia elementului pe coloan se mai numete i indice de coloan. ac notm variabila matrice cu a, atunci elementul de pe linia i i coloana & n matricea a se noteaz cu a[i\[&\. Ilustrm n continuare o matrice a cu < linii i = coloane, avnd ca elemente numere ntregi% Coloana 1inia 9 < > -C M M -B = --9 B < -4 < 9< a[9\[<\JB +elementul de pe linia 9 si coloana < este B, 9 < =

eclaraia unei variabile-matrice este asemntoare cu cea a unui vector. 1a declarare se precizeaz ntre dou paranteze ptrate numrul ma$im de linii, respectiv coloane. #$emplu% int a[-C\[-4\.

38

ndrumtor palate i cluburi ale copiilor ;-a declarat o matrice a cu ma$im -C linii i ma$im -4 coloane. 1a fel ca la vectori, aceste valori trecute n seciunea de declaraii nu reprezint neaparat dimensiunile efective ale matricii. imensiunile efective +numrul de linii i numrul de coloane, vor fi citite n cadrul programului. ;itirea 0i afi0area u&ei matrici 5include:iostream.)N 5include:conio.)N int a[-C\[-C\,m,n,i,&. void main+, S cout::Rnr. de linii% [Link]. citirea dimensiunilor matricii cout::Rnr. de coloane% [Link]. for +iJ-.i:Jm.i'', for+&J-.&:Jn.&'', Scout::Ra[R::i::R\[R::&::R\J R. citirea elementelor matricii cinNNa[i\[&\.T for +iJ-.i:Jm.i'', S for +&J-.&:Jn.&'', afiarea elementelor matricii cout::a[i\[&\::R R. +cte o linie pe un rnd al ecranului cout::endl.T cu cte un spaiu ntre elemente, cout::endl. T

'arcur<erea eleme&telor u&ei matrici #$emplu% ;e citete o matrice cu m linii i n coloane cu elemente numere ntregi. ; se afieze numrul elementelor pozitive, numrul elementelor negative i numrul elementelor nule din matrice. 5include:iostream.)N 5include:conio.)N int a[-C\[-C\,m,n,i,&,pozJC,negJC,nulJC. void main+, S cout::Rnr. de linii% [Link]. cout::Rnr. de coloane% [Link]. for +iJ-.i:Jm.i'', for+&J-.&:Jn.&'', Scout::Ra[R::i::R\[R::&::R\J R. cinNNa[i\[&\.T for +iJ-.i:Jm.i'', S for +&J-.&:Jn.&'', cout::a[i\[&\::R R. cout::endl.T cout::endl. for +iJ-.i:Jm.i'', for+&J-.&:Jn.&'', if+a[i\[&\NC, poz''. else if+a[i\[&\:C, neg''. else nul''. cout::LpozJL::poz::endl.

39

ndrumtor palate i cluburi ale copiilor cout::LnegJL::neg::endl. cout::LnulJL::nul. T <,. ;e consider o matrice ptratic +cu n linii i n coloane, ce conine numere naturale cu cel mult patru cifre fiecare. ;criei un program care citete de la tastatur numrul natural n +&RnR&1, i cele n-n elemente ale matricii i apoi afieaz pe ecran elementele matricii parcurse n spiral n sensul acelor de ceasornic ncepnd din colul din stnga-sus, ca n e$emplu. '<em*luA pentru n04 i tabloul alturat, se va afia% 1&1241J&SJ421S&JSTH41HT12 1&124 JSTH1 &124J STH1& 124JS 5include:iostream.)N int a[-C\[-C\,n,O,i,&. void main+, S cout::[Link]. for +iJ-.i:Jn.i'', for+&J-.&:Jn.&'', Scout::Ra[R::i::R\[R::&::R\J R. cinNNa[i\[&\.T for +iJ-.i:Jn.i'', S for +&J-.&:Jn.&'', cout::a[i\[&\::R R. cout::endl.T cout::endl. for+OJ-.O:Jn@9'-.O'', Sfor+&JO.&:Jn-O'-.&'', cout::a[O\[&\::R R. for+iJO'-.i:Jn-O'-.i'', cout::a[i\[n-O'-\::R R. for+&Jn-O.&NJO.&--, cout::a[n-O'-\[&\::R R. for+[Link]'-.i--, cout::a[i\[O\::R R.T T !robleme propuse% -,. ;e citete o matrice cu m linii i n coloane cu elemente numere ntregi. ; se determine media aritmetic a elementelor matricii. 9,. ;e citete o matrice cu m linii i n coloane cu elemente numere ntregi. ; se determine suma elementelor de pe fiecare linie i de pe fiecare coloan a matricii. <,. ;e citete o matrice cu m linii i n coloane cu elemente numere ntregi, precum i o valoare ntreag $. ; se afieze toate poziiile pe care apare acea valoare n matrice. =,. ;criei un program care citete de la tastatur dou valori naturale nenule m i n +mR1G, nR1G, i apoi m-n numere naturale nenule cu cel mult 2 cifre fiecare, reprezentnd elementele unei matrice cu m linii i n coloane. !rogramul determin apoi valorile minime de pe fiecare linie a matricei i le afieaz pe o linie a ecranului separate prin cte un spaiu. '<em*luA pentru m01, n04 i matricea

se afieaz pe ecran valorile 1 J & +cea mai mic valoare de pe prima linie a matricei este 1, cea mai mic valoare de pe linia a doua este J, cea mai mic valoare de pe linia a treia este &,. 4,. ;criei un program care citete de la tastatur un numr natural n +1<0n<0J, i elementele unui tablou bidimensional / cu n linii i n coloane, care memoreaz numere naturale mai mici dect 1GG, i afieaz

40

ndrumtor palate i cluburi ale copiilor pe ecran +dac e$ist,, separate prin cte un spaiu, elementele din matrice care au proprietatea c sunt egale cu produsul celorlalte elemente aflate pe aceeai coloan. '<em*lu% pentru matricea din figura alturat se afieaz, nu neaprat n aceast ordine, valorile 1G &&"1G01-4-&-1 + &&01-11-&-1#.

M,. ;e consider o matrice cu n linii i n coloane ce conine numere naturale cu cel mult patru cifre fiecare. ;criei programul care citete de la tastatur numrul natural n +&RnR&1, i cele n-n elemente ale matricii i apoi afieaz pe ecran elementele primului ptrat concentric, separate prin cte un spaiu. !tratul este parcurs n sensul acelor de ceasornic ncepnd din colul su stnga-sus, ca n e$emplu. !rimul ptrat concentric este format din prima i ultima linie, prima i ultima coloan a tabloului. '<em*luA pentru n04 i tabloul alturat, se va afia% 1&1241J&SJ421S&J 1&124 JSTH1 &124J STH1& 124JS :limi&area1i&serarea li&iilor1coloa&elor =&tr2o matrice #$emple% -,. ;e citete o matrice cu m linii i n coloane cu elemente numere ntregi precum i un numr ntreg $:Jm. ; se elimine linia $ din matrice. 5include:iostream.)N int a[-C\[-C\,m,n,i,&,$. void main+, S cout::Rnr. de linii% [Link]. cout::Rnr. de coloane% [Link]. for +iJ-.i:Jm.i'', for+&J-.&:Jn.&'', Scout::Ra[R::i::R\[R::&::R\J R. cinNNa[i\[&\.T for +iJ-.i:Jm.i'', S for +&J-.&:Jn.&'', cout::a[i\[&\::R R. cout::endl.T cout::endl. cout::R$[Link]$. for+&J-.&:Jn.&'', for+iJ$.i:Jm--.i'', a[i\[&\Ja[i'-\[&\. for +iJ-.i:Jm--.i'', S for +&J-.&:Jn.&'', cout::a[i\[&\::R R. cout::endl.T T

41

ndrumtor palate i cluburi ale copiilor 9,. ;e citete o matrice cu m linii i n coloane cu elemente numere ntregi, un numr ntreg $:Jm, precum i un vector v cu n componente numere ntregi. ; se insereze pe poziia $ din matrice o nou linie care s fie alcatuit din componentele vectorului v. 5include:iostream.)N int a[-C\[-C\,m,n,i,&,v[-C\,$. void main+, S cout::Rnr. de linii% [Link]. cout::Rnr. de coloane% [Link]. for +iJ-.i:Jm.i'', for+&J-.&:Jn.&'', Scout::Ra[R::i::R\[R::&::R\J R. cinNNa[i\[&\.T for +iJ-.i:Jm.i'', S for +&J-.&:Jn.&'', cout::a[i\[&\::R R. cout::endl.T cout::endl. for+iJ-.i:Jn.i'', Scout::Rv[R::i::R\JR. cinNNv[i\.T cout::endl. cout::R$[Link]$. for+&J-.&:Jn.&'', Sfor+iJm'-.iNJ$'-.i--, a[i\[&\Ja[i--\[&\. a[$\[&\Jv[&\. T for +iJ-.i:Jm'-.i'', S for +&J-.&:Jn.&'', cout::a[i\[&\::R R. cout::endl.T T 'robleme propuse> -,. ;e citete o matrice cu m linii i n coloane cu elemente numere ntregi precum i un numr ntreg $:Jn. ; se elimine coloana $ din matrice. 9,. ;e citete o matrice cu m linii i n coloane cu elemente numere ntregi, un numr ntreg $:Jn, precum i un vector v cu m componente numere ntregi. ; se insereze pe poziia $ din matrice o nou coloan care s fie alcatuit din componentele vectorului v. <,. ;e citete o matrice cu m linii i n coloane cu elemente numere ntregi, precum i un vector v cu n componente numere ntregi. ; se afieze numerele liniilor din matricea a identice cu vectorul v. ac nu e$ist asemenea linii s se adauge vectorul dup ultima linie a matricii i s se afieze matricea obinut. =,. ;e citete o matrice cu m linii i n coloane cu elemente numere ntregi precum i dou numere ntregi $:Jm i ^:Jm. ; se intersc)imbe liniile $ i ^ ale matricii i s se afieze matricea obinut. 4,. ;e citete o matrice cu m linii i n coloane cu elemente numere reale. ; se bordeze matricea cu coloana n'-, ale crei elemente a[i\[n'-\ au ca valoare media aritmetic a celor n elemente din linia i, i cu linia m'-, ale crei elemente a[m'-\[&\ au ca valoare media aritmetic a celor m elemente din coloana &. ; se afieze matricea obinut. Dia<o&alele u&ei matrici ptratice ( matrice a cu n linii i n coloane se mai numete matrice ptratic de ordinal n. "ntr-o matrice ptratic sunt definite% -diagonala principal, conine elementele% a[-\[-\, a[9\[9\, a[<\[<\, D. a[n\[n\ -diagonala secundara, contine elementele% a[-\[n\, a[9\[n--\, a[<\[n-9\, D. a[n\[-\ #$emplu%

42

ndrumtor palate i cluburi ale copiilor ;e consider o matrice ptratic de ordin n. ; se afieze pe cte o linie a ecranului urmtoarele% -elementele de pe diagonala principal a matricii -elementele de pe diagonala secundar a matricii -elementele aflate deasupra diagonalei principale a matricii -elementele aflate sub diagonala principal a matricii -elementele aflate deasupra diagonalei secundare a matricii -elementele aflate sub diagonala secundar a matricii 5include:iostream.)N int a[-C\[-C\,n,i,&. void main+, S cout::R imensiunea matricii [Link]. for +iJ-.i:Jn.i'', for+&J-.&:Jn.&'', Scout::Ra[R::i::R\[R::&::R\J R. cinNNa[i\[&\.T for +iJ-.i:Jn.i'', S for +&J-.&:Jn.&'', cout::a[i\[&\::R R. cout::endl.T cout::endl:: Kelementele de pe diagonala principal a matricii%L::endl. for +iJ-.i:Jn.i'', cout::a[i\[i\::L U. cout::Kelementele de pe diagonala secundara a matricii%L::endl. for +iJ-.i:Jn.i'', cout::a[i\[n-i'-\::L U. cout::endl::L elementele aflate deasupra diagonalei principale a matricii%L::endl. for +iJ-.i:Jn--.i'', for+&Ji'-.&:Jn.&'', cout::a[i\[i\::L U. cout::endl::L elementele aflate sub diagonala principal a matricii%L::endl. for +iJ9.i:Jn.i'', for+&J-.&:Ji--.&'', cout::a[i\[i\::L U. cout::endl::L elementele aflate deasupra diagonalei secundare a matricii%L::endl. for +iJ-.i:Jn--.i'', for+&J-.&:Jn-i.&'', cout::a[i\[i\::L U. cout::endl::L elementele aflate sub diagonala secundara a matricii%L::endl. for +iJ9.i:Jn.i'', for+&Jn-i'9.&:Jn.&'', cout::a[i\[i\::L U. T 'robleme propuse> -,. ;e consider o matrice ptratic de ordin n. eterminai i afiai elementele din ineriorul celor patru zone triung)iulare determinate de cele 9 diagonale. 9,. ;e consider o matrice ptratic de ordin n. ; se verifice dac matricea este simetric fa de diagonala principal. <,. ;e consider o matrice ptratic de ordin n. ; se verifice dac matricea este simetric fa de diagonala secundar. =,. ;e consider o matrice ptratic a de ordin n. ; se obin i s se afieze matricea b care este simetric n raport cu diagonala principal fa de matricea a. 4,. ;e consider o matrice ptratic a de ordin n. ; se obin i s se afieze matricea b care este simetric n raport cu diagonala secundar fa de matricea a.

43

ndrumtor palate i cluburi ale copiilor ;o&struirea u&ei matrici =& memorie #$emple% -,. ;criei un program C.C++ care citete de la tastatur dou numere naturale nenule n i m +&RmR1G, &RnR1G, i care construiete n memorie i apoi afieaz o matrice / cu n linii +numerotate de la 1 la n, i m coloane +numerotate de la 1 la m, cu proprietatea c fiecare element /ij memoreaz cea mai mic dintre valorile indicilor i i j +1RiRn, 1RjRm,. Aatricea se va afia pe ecran, cte o linie a matricei pe cte o linie a ecranului, elementele fiecrei linii fiind separate prin cte un spaiu. '<em*luA pentru n02 i m04 se va afia matricea alturat. 11111 1&&&& 1&111 1&122 5include:iostream.)N int a[-C\[-C\,m,n,i,&. void main+, S cout::Rnr. de linii% [Link]. cout::Rnr. de coloane% [Link]. for +iJ-.i:Jm.i'', for+&J-.&:Jn.&'', if+i:J&, a[i\[&\Ji. else a[i\[&\J&. for +iJ-.i:Jm.i'', S for +&J-.&:Jn.&'', cout::a[i\[&\::R R. cout::endl.T T 9,.;criei un program C.C++ care citete de la tastatur un numr natural n +&RnR&2, i construiete n memorie o matrice cu n linii i n coloane ale crei elemente vor primi valori dup cum urmeaz% - elementele aflate pe diagonala principal a matricei vor primi valoarea G - elementele de pe prima coloan, cu e$cepia celui aflat pe diagonala principal vor primi valoarea n - elementele de pe a doua coloan, cu e$cepia celui aflat pe diagonala principal vor primi valoarea nL1 ... - elementele de pe ultima coloan, cu e$cepia celui aflat pe diagonala principal vor primi valoarea 1 !rogramul va afia matricea astfel construit pe ecran, cte o linie a matricei pe cte o linie a ecranului, cu cte un spaiu ntre elementele fiecrei linii +ca n e$emplu,. '<em*lu% pentru n02 se va afia matricea alturat. G1&1 2G&1 21G1 21&G 5include:iostream.)N int a[9=\[9=\,n,i,&. void main+, S cout::R imensiunea matricii [Link]. for +iJ-.i:Jn.i'', for+&J-.&:Jn.&'', a[i\[&\Jn-&'-. for +iJ-.i:Jn.i'', a[i\[i\JC.

44

ndrumtor palate i cluburi ale copiilor for +iJ-.i:Jn.i'', S for +&J-.&:Jn.&'', cout::a[i\[&\::R R. cout::endl.T T <,.;criei un program C.C++ care citete de la tastatur dou numere naturale n i * +&RnR&G, 1R*R&G, i construiete n memorie un tablou bidimensional cu n linii i * coloane. /abloul va fi construit astfel nct, parcurgnd tabloul linie cu linie de sus n &os i fiecare linie de la stnga la dreapta, s se obin irul primelor n-* *6trate *er=ecte im*are, ordonat strict cresctor, ca n e$emplu. /abloul astfel construit va fi afiat pe ecran, fiecare linie a tabloului pe cte o linie a ecranului, cu cte un spaiu ntre elementele fiecrei linii. '<em*luA pentru n0&, *01 programul va afia tabloul alturat% 1 H &4 2H T1 1&1 5include:iostream.)N int a[9C\[9C\,m,n,i,&,$J-. void main+, S cout::Rnr. de linii% [Link]. cout::Rnr. de coloane% [Link]. for +iJ-.i:Jm.i'', for+&J-.&:Jn.&'', Sa[i\[&\J$7$. $J$'9.T for +iJ-.i:Jm.i'', S for +&J-.&:Jn.&'', cout::a[i\[&\::R R. cout::endl.T 'robleme propuse> -,. ;criei un program C.C++ care citete de la tastatur un numr natural n +&<n<4G, i apoi construiete n memorie o matrice cu n linii i n coloane, numerotate de la 1 la n, ale crei elemente primesc valori dup cum urmeaz% - elementele aflate pe diagonala secundar sunt toate nule. - elementele de pe linia i +1RiRn,, aflate deasupra diagonalei secundare, au valoarea egal cu i. - elementele de pe coloana nLi+1 +1RiRn,, aflate sub diagonala secundar, au valoarea egal cu i. !rogramul va afia matricea astfel construit pe ecran, cte o linie a matricei pe cte o linie a ecranului, elementele fiecrei linii fiind separate prin cte un spaiu. '<em*lu% pentru n02 se va afia matricea alturat. 111G &&G1 1G&1 G1&1 9,. ;criei un program C.C++ care citete de la tastatur un numr natural cu e$act 4 cifre i construiete n memorie o matrice cu 4 linii i 4 coloane, numerotate de la 1 la 4, format astfel% - elementele de pe linia 1, au toate valoarea egal cu cifra unitilor numrului citit. - elementele de pe linia &, au toate valoarea egal cu cifra zecilor numrului citit. - elementele de pe linia 1, au toate valoarea egal cu cifra sutelor. - elementele de pe linia 2, au toate valoarea egal cu cifra miilor. - elementele de pe linia 4, au toate valoarea egal cu cifra zecilor de mii. !rogramul afieaz pe ecran matricea astfel construit, cte o linie a matricei pe cte o linie a ecranului, elementele de pe aceeai linie fiind separate prin cte un spaiu. '<em*lu% dac se citete numrul &TS11 matricea construit va fi cea alturat. 11111 11111

45

ndrumtor palate i cluburi ale copiilor SSSSS TTTTT &&&&& <,. ;criei un program C.C++ care citete de la tastatur un numr natural n +&<n<&G,, construiete n memorie i afieaz pe ecran o matrice cu n linii i n coloane, n care fiecare element de pe diagonala secundar are valoarea n, fiecare element aflat deasupra diagonalei secundare este mai mic cu o unitate dect vecinul aflat pe aceeai linie n dreapta lui i fiecare element aflat sub diagonala secundar este mai mare cu o unitate dect vecinul aflat pe aceeai linie n stnga lui. #lementele matricei vor fi afiate pe ecran, cte o linie a matricei pe cte o linie a ecranului cu cte un spaiu ntre elementele fiecrei linii. '<em*luA pentru n04 se va afia matricea alturat. 1&124 &124J 124JS 24JST 4JSTH =,. ;criei un program C.C++ care citete de la tastatur un numr natural n +&<n<&G,, construiete n memorie i afieaz pe ecran o matrice cu n linii i n coloane, numerotate de la 1 la n, n care fiecare element aflat pe o coloana impar este egal cu suma dintre numrul liniei i numrul coloanei pe care se afl i fiecare element aflat pe o coloan par este egal cu numrul liniei pe care se afl. #lementele matricei vor fi afiate pe ecran, cte o linie a matricei pe cte o linie a ecranului cu cte un spaiu ntre elementele fiecrei linii. '<em*luA pentru n04 se va afia matricea alturat. &121J 1&4&S 21J1T 42S2H J 4 T 4 1G 4,. ;criei un program C.C++ care citete de la tastatur un numr natural n "&<n<1G#, construiete n memorie i afieaz pe ecran o matrice cu n linii i n coloane, numerotate de la 1 la n, n care fiecare element aflat pe prima linie sau pe prima coloan din matrice este egal cu suma dintre numrul liniei i numrul coloanei pe care se afl, iar fiecare dintre celelalte elemente este egal cu suma dintre elementul vecin aflat pe aceeai linie cu el, dar pe coloana din stnga sa i elementul vecin aflat pe aceeai coloan cu el, dar pe linia de deasupra sa. #lementele matricei vor fi afiate pe ecran, cte o linie a matricei pe cte o linie a ecranului cu cte un spaiu ntre elementele fiecrei linii. '<em*lu% pentru n04 se va obine matricea alturat. &124J 1 J 1G 14 &1 2 1G &G 14 4J 4 14 14 SG 1&J J &1 4J 1&J &4&

46

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