You are on page 1of 128
Despre carte Aceast culegere de probleme este un instrument indspensabil fn Tnvarea programs, permijind ‘acu ixarea silanes} semantic insietiunilor limbajulu, edt si fnsustea unor principi corecte de Progra acon sy consent pent on cr de roam cao. Teucrarca sruturalé pe 8 capitole, confine 120 de probleme rezovate si alte 165 de probleme props: ‘Exemplcle sunt alese cu gr, find sortae tn ondinea devi. Petra Gecare problem rerolvath se preznth sucint, in limba) natural, metoda de rezlvare, dup care este dl programul coment Probleme reroivale al fost teste do cre auton, care garanteazd asifel corecttudnea soluilor plopuse. Problemele propise sunt sseminitoare x4 sunt deavoltisi ale problemelor rezolvale st Contibui a cretereaincrederilprogramatoruls in propile fot. Despre autori Valeria IORGA, doctor ingiver (din 1982), este prof. univ. le Facultatea de Automatica si Caleulatoare din Universitatea Poltehnica Bucuresti. Pred cusuri de + Programarea Calculatoarelor ——® -Metode numerice * Siructuri de Date sAlgoriimi ——_#_Sistome de programare pent tip real ‘A publicat diverse cirji de Specalitate in prestigioase edituri din Rominia precum si cursuriunivesitare htografate,arueol fn reviste de specialtate, Este membru al ACM si al Societatii Romane de Informatica Paul - Alexandru CHIRITA, stodent fn al V la Faculatea de Automaticd i Calew- lutoare din Universitatea Politehnica Bucuresti, a obfinut numeroase premil la concursuile de cercetre studenten perioada 2000-2001 a fast busier Socrates Ia Bcole Polytechnique, Paleisesy, Franja. De’ asemenea, a cfectuat un stagiu de specializare fn cadral fimei Schlumberger din Paris. In peezent este profesor asistent pent cursurile de Programarea Caledatoarcor gb Strucurt de Date 4 Algoriin! #3 ty pregieye proiectl de diploma cara Learning Pb Lower Saxony, Hanovra, Germania Corina STRATAN, student’ in anul V la Facultatea de Automatic si Caleulatoare din Universitatea Poitelnica Bucueet, a participa la ralizarea a rumeroase proiecte de cereetare {in cadrul laboratoruui de e-Business din UPB gi al Centrlui Najional de Tehnologia Informatics CoLaborator. fn prezent este profesor asistent pentru cursurile de Programarea Catewlatoarclor $i Siracturi de Date $i Algorimi $i progateste preiectl de diploma. sub supervizarea Universiti Caltech din Siatele Unit Cristian OPINCARU este student fn anul V la Facultatea de Automatica i Caleuatoare din Universtitea Politelnica Bucuresti. In cadrul acestei fault fine ore de laborator Ia tursurile de Programarea tn lnbajul C (Amul 1), Structri de date si algortini (Amal 1) i SeructuraSistemelor de Cateu (Ant TY). ‘Cristian OPINCARU este coautor al unui manual de informatic8 de casa a Xa Valeriu lorga Paul Chirifé Corina Stratan —_ Cristian Opincaru Programare in C/C++ Culegere de probleme N a NICULESCU E-mail: edit@niculescuro “Intemet: www.niculeseu.ro ‘computerizatt: TOP GALS.R.L. ‘TiptritlaS.c. EURO PONTIC ae ISBN 973-568-800-X Prefata les Cu tofii acceptim faptul cX nu este fntotdeauna uyor si te faci infeles. daca nu te exprimi in limbaj natural, ci printe-un program. Progratiarea structurat8 a cAutat, prin strategia de abordare top-down, prin impunerea unui numir redus de structuri de control cu o.intrare si 0 ieyire, prin evitarea instrucfiunii de salt neconditionat si prin comentarii inteligente, st fact programele mai clare, mai usor de infeles si de controlat, pentru a opera modificari fri riscur. [A fost definitastel un stil de programare reprezentind mai mult un set de regu, scceptate $i respectate de comunitatea programatorilor. Avestea stabilesc: “e utilizarea unei scriesialiniate (indentate) in inteiorul instructiunilor structurate (decizie selectic,cicl, instruciune compusi), cu intervale de deéalare bine stabilite (8 spaji du>8 uni, 4 dup& alii mai economi) « scrirea unei singureinstructiun peo finie comentarea semnifieativa a unor Seevente mai sofisticate de insteuctiuni 4 definitea de funetii care realizeazS un singur obiectiv ~ bine preciza formulat lar print-un comeatariu ce insoteste functia si stableste semnificaia fiecdrui parametrv. Prezenta lucrare, strusturata pe & eapitole, confine 120 de probleme rezolvate gi alte 165 de probleme propuse. Ea consttuie un suport consistent pentru orice curs de programare a calculatomrelor. Multe dintre problemele propuse si rezolvate au Feprezentat aplicafil de seminar si laborator, subiecte date ta lucrari de control si la examene. Toate problemele rezalvate au fost testate de care autor, eare garantea7a astfel corecttudinea solutilor propuse. Pentru rezolvarea unei probleme concrete folosind calculatorul nu este sufvient st ccunostiinstructiunile unui limbaj de programare. Dromey, in lucrarea ,How to solve it by computer abordeazi aceasta chestiune oferind un numir important de modele (probleme rezolvate semnifiative). © culegere de probleme este un instru folosind un limbaj de programare, permit instruciunilorlimbajulu, eft si fnsusirea unor prine nt indispensabil in invitarea program find atit fixarea sintaxei si semanticii corecte de programare. Exemplele sunt alese cu grijf, flind sortate in ordinea dificultitii, Pentru fiecare problema rezolvati se prezintA suecint, in limbaj natural, metoda de rezolvare dupa care este dat programul comentat. in capitolul 1, Justrueynt, sunt dezvoltatalgoritmi simpli folosind numa tipurile de date primitive simple st instructunite imbajului C. O serie de aplicai bazeuza pe apicarea unorrelai de recuren pena cael unor limite de iar saa in capitolul 2 se definese si se utilizeaza functii nerecursive gi recursive. Capitolul 3, Veetori introduce tipul tablou gi pointeri, permitand dezvoltarea unor algoritmi de selectie, sortare, calcule cu polinoame, numere lungi si muljimi. In capitolul 4, Matrci, se introduc tablourile cu mai multe dimensiuni, alocarea dinamiet de memorie si se devolté probleme de algebra nia Capitotul 5, inttulat“Siruri de caractere”, prezinta aplicati cu caracter nenumerie fn capitolul 6, Structuri, este inirodus tipul integistrare (structura) prints-o serie de exemple sermificative {In capitolul 7, denumit Fisiere, se dezvoltt-aplicati ce utilizenza fisiere text si figiere binare Capitolut 8, Clase, wilizeaz facilitajile limbajului C** relative la programarea orientaté pe obiecte ~ clase, supraincdrcare operatori, derivare si potimorfism. In exemplele alese se definese clase pentru Iucrul cu numere complexe, fractii rationale, e lungi, siruri de caractere, figuri geometrice, etc polinoame, nume Problemele propuse sunt asemandtoare sau sunt dezvoltari ale problemelor rezolvate si au un fol important pentru student. Ele dezvolta atitudinea activa si contribuie la eresterea increderii programatorului in propriile forfe. [Ne exprimim speranta ca aceasti lucrare si fie de un real folos celor interesafi Autorit Capitolul 1 Instructiuni Breviar ‘Atribuirea simple: variabila Atribuirea compusd: variabila op = expresi ‘Atribuirea multipl: jabila.l = variabila2 =. = expresie; Instrucfiunes compusd: ( declaratii_si_definitii; Anstructiuni; 3 Af (oxpresie) insteuetiunel; else instructiune?; AE (expresie) instzuctiune; 4€ (expr) astel; else if (expr?) instr2; = expresie; Decizia (forma generala) Decizia (forma simplificata): Decizia multipli: eis awiteh (oxpresie) { ease vall: secvental case val2: secventa? Selectia derautt: | “secventa 9; } while (oxpresie) Giclul do: ao wnile (expresie) Ciclul whi te (eat timp): Ciclul eu centor: for (exp_init; exp_test; exp_nodif) instructiune; Saltul la pasul urmitor al unui cicku ‘continue; Iegirea dintr-un ciclu : bre: fntoarerea unui rezuta dino fino otura expsesies 1

You might also like