cu numere in baza doi, care au acelasi numar de cifre 0 si 1. De exemplu: 12=1100 este un numar martian. Determinati toate numerele mantiene mai mici sau egale cu un n dat. Rezolvare: enera toate numerele de la 1 la n, le trecem in binar si !erificam daca numarul de cifre 0 este egal cu numarul de cifre 1. "n caz afirmati!, le afisam. #onstruim o functie martian care sa !erifice daca numarul aflat intre 1 si n are propietatea dorita. $unctia are ca parametru de intrare numarul intreg i %1,n& si este de tip boolean. 'include(stdio.)* 'include(conio.)* int martian+ int ,- . int n0,n1/ n0=0/ n1=1/ 0)ile+,1=1- . if+ ,22==0- n033/ else n133/ ,=,42/ 5 if+n0==n1- return 1/ else return 0/ 5 int main+- . int i,n/ printf+6n=7-/ scanf+62d7,8n-/ printf+6numerele martiene sunt: 9n7-/ for+i=:/i(=n/i33- if+martian+i-1=0- printf+62d 9n7,i-/ getc)+-/ 5 2. "n Castelul celor o suta de ape, fiecare camera are drept cod un numar natural prim pana la un n dat+ n(=:0.000000-. #)eile care desc)id aceasta camera au urmatoarea proprietate: cu o c)eie desc)izi doua ca;ere, cu conditia ca aceste caer esa aibe codurile formate din numere impare consecuti!e, abele prime, cu ar fi: +:/ <-, +</ =-, etc. >ealizati un program care sa realizeze cate c)ei sunt necesare pentru a desc)ide toate camerele castelului, codificate pana la un n dat. ?xemplu: Daca n=@<, camerele !or fi: +:/ <-, +</ =-, +11/ 1:-, +1=/ 1A-, +2A/ :1-, +@1/ @:-. Deci sunt necesare B c)ei. Rezolvare: 'include(stdio.)* 'include(conio.)* 'include(mat).)* int prim+ int ,- . int i,C,p/ p=1/ i=+int-+sDrt+,--/ for+C=2/C(=i/C33- if+,2C==0- p=0/ return p/ 5 int main+- . int n,i,c)ei/ printf+6introduceti !aloarea lui n: 6-/ scanf+6 2d 6,8n-/ c)ei=0/ for+i=:/i(=n/i33- if++prim+i-- 88 prim+i32--- . printf+62d , 2d 9n7, i,i32-/ c)ei33/ 5 printf+6 numarul de c)ei este: 2d7, c)ei-/ getc)+-/ 5 :. "n Orasul Minunilor s-a constatat un lucru ciudat: numarul scris pe geamul cabinei telefonice prin exterior era acelasi cu cel citit din interior. Matematicianul Max a obser!at ca un toate numerele pana la n au aceasta proprietate. $acand cercetari, a constatat ca si patratele lor au aceeasi proprietate. Determinati-le si !oi cu aCutorul calculatorului, pana la un n dat. Rezolvare: Eumarul scris pe geamul cabinei telefonice are proprietatea ca este palindrom. Din obser!atia matematicianului Max, trebuie sa existe si conditia ca patratul lui sa fie tot palindrom. Fsadar, sa gasim toate numerele pana la n dat, care sunt palindromuri si in plus si patratele lor sunt palindromuri. Ge acestea le !om afisa. 'include(stdio.)* 'include(conio.)* 'include(mat).)* int palindrom+ int ,- . int nr, nrin!, pal/ nr=,/ nrin!=0/ 0)ile+,1=0- . nrin!=nrin!H103,210/ ,=,410/ 5 if+nr==nrin!- pal=1/ else pal=0/ return pal/ 5 int main+- . int n,i/ printf+6 introduceti numarul n:7-/ scanf+62d7,8n-/ for+i=11/i(=n/i33- if+palindrom+i-- if+palindrom+po0+i,2--- printf+6 numarul 2d se afla scris pe cabina telefonica 9n7, i-/ getc)+-/ 5 @. Se defineste expresia: ?+m,n-=................................... Sa se scrie o functie care sa calculeze !aloarea acestei expresii pentru o perec)e de !alori reale +m,n- data. Rezolvare: Iom construi o functie . "n aceasta functie, apela malte doua functii pentru a determina minimul si respecti! maximul dinte doua !alori reale date. 'include(stdio.)* 'include(conio.)* 'include(mat).)* float m,n/ float max+ float a, float b- . float m/ if+a*b- m=a/ else m=b/ return m/ 5 float min+ float a, float b- . float m/ if+a(b- m=a/ else m=b/ return m/ 5 float exp+ float a, float b- . float rez/ if+ max+abs+a-,abs+b--(1- rez=po0++a3b,2-/ else if+ min+abs+a-,abs+b--*1- rez=14a314b/ else rez=aHb/ return rez/ 5 int main+- . printf+6 introduceti cele doua numere:7-/ scanf+62f7, 8m-/ scanf+62f7, 8n-/ printf+6 9n rezultatul expresiei este 2f7, exp+m,n--/ getc)+-/ 5 <. Graslea cel Ioinic stia ca poate duce fetei iubite un mar de aur, daca ii !a calcula Jmeului !aloarea expresiei: ?=KKKKK.. Jmeul ii daduse !oinicului !alorile x si n si astepta doar rezultatul. Ftunci, Graslea s-a apucat de treaba: a scos calculatorul din traista si si-a construit o procedura de calcul mar-de-aur. "ncercati si !oi. Rezolvare: Garametrii !or fi !ariabilele date de Jmeu: x si n. Ialoarea expresiei !a fi trasmisa in programul principal in !ariabila rez. Grocedura are ne!oie de !ariabilele locale p,i si C. 'include(stdio.)* 'include(conio.)* 'include(mat).)* float marLdeLaur+int ;, int m- . int i,C/ float rez=0,p/ for+i=1/i(=m/i33- . p=1/ for+C=1/C(=n/C33- p=pH+;3i-4+po0+;,2-3C-/ rez3=p/ 5 return rez/ 5 int main+- . int x,n/ printf+6n=-/ scanf+62d7,8n-/ printf+6x=7-/ scanf+62d7,8x-/ printf+6!aloarea finala: 2f7, marLdeLaur+x,n--/ getc)+-/ 5 B. Scrieti un subprogram care sa returneze suma cifrelor unui numar. int suma+ long n- . if+n==0- return 0/ else return n2103suma+ n410-/ 5 !oid main+- .clrscr+-/ long n/ printf+6n=7-/ scanf+62ld7, 8n-/ printf+6suma cifrelor este= 2d7, suma+n--/ getc)+-/ 5 =. Scrieti un subprogram care sa returneze produsul cifrelor unui numar . int produs+ long n- . if+n==0- return 1/ else return +n210-Hprodus+ n410-/ 5 !oid main+- . clrscr+-/ long n/ printf+6n=7-/ scanf+62ld7, 8n-/ printf+6 produsul este =2d7, produs+n--/ getc)+-/ 5 M. Scrieti un subprocram care sa returneze cel mai mare di!izor comun a doua numere. int cmmdc+ int a, int b- . if+a==b- return a/ else if+a*b- return cmmdc+ a-b,b-/ else return cmmdc+ a,b-a-/ 5 int cmmdc1+ int a, int b- . if+a2b==0- return b/ else return cmmdc1+ b, a2b-/ 5 !oid main+- . clrscr+-/N int a,b/ printf+6a=7-/ scanf+62d7,8a-/ printf+6b=7-/ scanf+62d7, 8b-/ printf+6cmmdc=2d7, cmmdc+a,b--/ printf+6cmmdc=2d7, cmmdc1+a,b--/ getc)+-/ 5 A. Scrieti un subprogram care sa returneze primii n termini dintr-o progresie aritmetica. int ,r/ int progaritm+ int n- . if+n==1- return / else return r3progaritm+n-1-/ 5 !oid main+- . clrscr+-/ int n,"/ printf+6n=7-/ scanf+62d7, 8 -/ printf+6r=7-/ scanf+62d7, 8r-/ for+ i=1/i(=n/ i33- printf+6 2d7, progaritm+i--/ getc)+-/ 5 10. Sa se scrie un subprogram recursi! care determina minimul dintre componentele unui !ector citit de la tastatura. 'include(stdio.)* 'include(conio.)* int !%10&/ int min+int a, int b- . return ++a(=b-Oa:b-/ 5 int min!ect+int n- . if +n==1- return !%0&/ if+n==2- return+min+!%0&,!%1&--/ else return min+!%n-1&,min!ect+n-1--/ 5 int main+- .int n/ printf+6n=7-/ scanf+62d7,8n-/ for+i=0/i(n/i33- . printf+6!%2d&=7,i-/ scanf+62d7,8!%i&-/ 5 printf+6min este: 2d7,min!ect+n--/ getc)+-/ 5 11. Sa se calculeze factorialul unui numar n, citit de la tastatura. ?xemplu: pentru n=<, se !a afisa 120. 'include(stdio.)* 'include(conio.)* long int factorial+long int n- . "f+n==0- return 1/ else if+n==1- return 1/ else return nHfactorial+n-1-/ 5 int main+- .long int x/ printf+6n=7-/ scanf+62ld7, 8x-/ printf+6$actorialul numarului 2ld este 2ld7,x,factorial+x--/ getc)+-/ 5 12. Groblema Sirul lui Fibonacci. n irul de numere al lui Fibonacci, fiecare numr reprezint suma a dou numere anterioare, ncepnd cu 0 i 1. Astfel, irul incepe cu 0, 1, 1, 2, 3, 5, , 13, 21, 3!, 55, ", 1!!, 233, 3##, $10 etc ?xemplu: 'include(stdio.)* 'include(conio.)* unsigned long int fibonacci+unsigned long int n- . if+n==0- return 0/ else if+n==1- return 1/ else return fibonacci+n-1-3fibonacci+n-2-/ 5 int main+- . unsigned long int x/ printf+6x=7-/ scanf+62d7,8x-/ printf+6Sirul $ibonacci al nr. 2ld este 2ld7,x,fibonacci+x--/ getc)+-/ 5 1:. Sa se scrie un subprograma care !erifica daca un numar este prim. ?xemplu: Gentru n== se !a afisa 6G>"M7, iar pentru n=12 se !a afisa 6EP ?SQ? G>"M7. 'include(stdio.)* 'include(conio.)* int prim+int n- . int i, test=1/ for+i=2/i(=n42/i33- if+n2i==0- test=0/ return test/ 5 int main+- . int n/ printf+6n=-/ scanf+62d7,8n-/ if+prim+n-==1- printf+69n nr prim7-/ else printf+69n nr nu e prim7-/ getc)+-/ 5 1@. Sa se scrie un subprograma care returneaza suma numerelor prime mai mici decat un n dat. 'include(stdio.)* 'include(conio.)* 'include(mat).)* int prim+int n- . int s=0,i,C,test/ for+i=2/i(=n/i33- test=1/ .for+C=2/C(=i42/C33- if+i2C==0- test=0/ if+test==1- s=s3i/ 5 return s/ 5 int main+- .int n/ printf+6n=7-/ scanf+62d7,8n-/ printf+6Suma numerelor este=2d7,s-/ getc)+-/ 5 1<. Sa se scrie o functie care calculeaza si returneaza numarul de di!izori ai unui numar natural. 'include(stdio.)* 'include(conio.)* 'include(mat).)* int nrdi!+int n- . int i,nr=0/ for+i=1/i(=n/i33- if+n2i==0- nr33/ return nr/ 5 int main+- . int n/ printf+6n=7-/ scanf+62d7,8n-/ printf+6 Eumarul de di!izori este 2d7, nrdi!+n--/ getc)+-/ 5 1B. Scrieti subprograme recursi!e pentru e!aluarea urmatoarelor functii trigonometrice: a- cos+x-=KKKKKK.. b- sin+x-=KKKKKK.. a- 'include(stdio.)* 'include(conio.R* 'include(mat).)* "nt cos+int x- . if+ abs+x-(1- >eturn 1-po0+x42,2-3po0+x,2-Hpo0+x,2-/ "f+ abs+x-*=1- >eturn 2Hcos+x42,2--1/ 5 "nt main+- . "nt x/ Grintf+6x=7-/ Scanf+62d7,8x-/ etc)+-/ 5 b- 'include(stdio.)* 'include(conio.)* 'include(mat).)* "nt x/ "nt sin+int x- . "f+abs+ x-(1- >eturn x-po0+x,2-Hx4B/ ?lse "f+abs+x-*=1- >eturn 2sin+x42-Hcos+x42--1/ 5 "nt main+- . "nt x/ Grintf+6x=7-/ Scanf+62d7, 8x-/ etc)+-/ 5 17. Scrieti suprograme recursi!e pentru e!aluarea uramatoarelor functii f:EH> definite astfel: a- f+n-=//////// b- f+n-=44444444444 c- f+n-=........ d- f+n-=444444
Scrieti un subprogram care citeste un numar natural a si o cifra b, apoi returneaza numarul de aparitii ale cifrei b in scrierea numarului a. Exemplu: Gentru a=12<M<@ si b=<, subprogramul !a retorna !aloarea 2. Daca n=21<2::1, atunci se !a afisa pe ecran numarul <::11. 'include(stdio.)* 'include(conio.)* 'include(iostream.)* long n/ int i/ int cif+long a, int b- . int nr=0/ 0)ile+a1=0- . if+a210==b- nr33/ a=a410/ 5 return nr/ 5 int main+- . do . printf+6n=7-/ scanf+62ld7,8n-/ 5 0)ile+n(0 SS n*AAAAAAAA-/ int C,t,numar=0/ for+i=A/i*=1/i- -- .t=cif+n,i-/ if+t1=0- for+C=1/C(=t/C33- numar=numarH103i/ 5 if+numar==0- printf+6numarul nu are cifre impare7-/ else printf+62d7,numar-/ 5 Sa se scrie doua subprograme: p1 sa returneze suma cifrelor unui numar n si p2, care returneaza numarul n, dupa eliminarea ultimei cifre ale numarului. ?xemplu: Gentru n=12:@, subprogramul p1 !a returna !aloarea 10. Gentru n=12:@. subprogramul p2 !a retorna !aloarea 12:. Daca n=1020:0, programul !a afisa !aloarea :. 'include(stdio.)* 'include(conio.)* 'include(iostream.)* int p1+int long n- .int s=0/ 0)ile+n1=0- .s=s3n210/ n=n410/ 5 return s/ 5 int p2+int long n- . return n410/ 5 int main+- .long int n, nr=0/ do . printf+6n=7-/ scanf+62d7,8n-/ 50)ile+n==0-/ 0)ile+n1=0- . if+p1+n-==p1+p2+n--- nr33/ n=p2+n-/ 5 printf+62d7, nr-/ 5 Scrieti un program care citeste de la tastatura un numar n si apoi n numere naturale, de maxim A cifre fiecare si afiseaza cate numere prime contine sirul citit. Exemplu: Gentru n=< si !alorile 12 : A = 1, se !a afisa pe ecran !aloarea 2+in sirul dat exista doua numere prime, : si =-. 'include(stdio.)* 'include(conio.)* 'include(iostream.)* unsigned long i,n,nr,x/ int prim+unsigned long x- .int p/ unsigned long d/ if+x22==0- return x==2/ else if+x==1- return 0/ else .p=1/ d=:/ 0)ile+p 88 dHd(=x- if+x2d==0- p=0/ else d=d32/ return p/ 5 int main+- . printf+6n=7-/ scanf+62ld7,8n-/ nr=0/ printf+6dati numerele:7-/ for+i=1/i(=n/i33- . printf+6x=7-/ scanf+62d7,8x-/ if+prim+x-- nr33/ printf+62d7,nr-/ 5 BIBLIOGRAFIE 1. Informatica profilul real specializarea: matematica-informatica, intensiv informatica, manual pentru clasa a IX-a - Mariana Milosescu; 2. Informatica profilul real, specializarea: matematica-informatica, intensiv informatica, manual pentru clasa a X-a - Mariana Milosescu; 3. Informatica intensiv, manual pentru clasa a XI-a - Mariana Milosescu; 4. Culegere de probleme de informatica intensiv si neintensiv! - Giorgie Daniel Vlad, Daniela Marcu. ". Initiere in C## $rogramare %rienta pe %biecte - Muslea Ionut &. Informatica te'nici de programare, (ditura )*+ Infomat, 2,,,!- Tudor Sorin -. .anual de C/C## pentru licee, (ditura 012IC1), 133- Dorian Stoilescu 4. 5e'nici de programare, (ditura $(50I%6, 1333 Cornelia Ivas si Mona Pruna 3. Initiere in C## . $rogramare orientata pe obiecte, (ditura .icroInformatica, Clu7- Ionut Muslea 1,. .anual complet de C##, (ditura 012IC1), 133- Dorian Stoilescu 11. 8'id de pregatire bacalaureat informatica $ascal, C, C## - Stelian Ciurea, Caren Minca, !odica Pintea 12. C## pentru avansati, (ditura .icroInformatica, Clu7, 1334 Ionut Muslea 13. Informatica, (ditura 6iculescu !odica C"erciu, Dan Grigoriu 14. #lgoritica C$$, %ditura Corint &lorea Matei 1". 'ac In(o)*+++, %ditura #gora, Clu,--a.oca, *+++ Voicu #. , Ionescu M. 1&. &undaentele .rograarii, %ditura /0S In(oat- Pasoi Mircea 1-. In(oratica .entru liceu si 1acalaureat, Si1iu, %ditura Donaris, *++2 Moraru, Pavel &lorin, Mateescu 14. In(oratica .ro(ilul real, anual .entru clasa a 3-a, %ditura didactica si .edagogica, 'ucuresti *++4 Milosescu Marin 13. 'acalaureat la in(oratica, -otiuni reca.itulative, Te5e re5olvate si su1iecte .ro.use, %ditura /0S In(oat,- Pasoi Mircea, Tudor Sorin