Sunteți pe pagina 1din 41

1. Martienii sunt fiinte tare ciudate.

S-a considerat ca, in general, ei lucreaza


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

a- 'include(stdio.)*
'include(conio.)*
'include(mat).)*
$loat a/
"nt n/
$loat f+ int n, float a-
.
"f+n==1-
>eturn 1/
?lse
"f+ n*1-
>eturn f+n-1-41 3 f+n-1-/
5
"nt main+-
.
"nt n/ float a/
Grintf+6n=7-/
Scanf+62d7,8n-/
Grintf+6a7-/
Scanf+62f7,8a-/
etc)+-/
5
b- 'include(stdio.)*
'include(conio.)*
'include(mat).)*
"nt n/
"nt f+int n-
.
"f+n==1-
>eturn :/
?lse
"f+n*1-
>eturn 13po0+n-1,2-Hpo0+n-1,2-4@Hf+n-1-/
5
"nt main+-
.
"nt n/
Grintf+6n=7-/
Scanf+62d7, 8n-/
etc)+-/
5
c- 'include(stdio.)*
'include(conio.)*
'include(mat).)*
$loat b,c/
"nt n/
$loat f+ int n, float b, float c-
.
"f+n==1-
>eturn c/
?lse
"f+ n*1-
>eturn 0,<H+f+ n-1-3 b4f+ n-1--/
5
"nt main+-
.
"nt n/
$loat b,c/
Grintf+6n=7-/
Scanf+62d7, 8n-/
Grintf+6b=7-/
Scanf+62f7, 8b-/
Grintf+6c=7-/
Scanf+62f7,8c-/
Grintf+6 2d 2f 2f 9n7, f+n,b,c--/
etc)+-/
5
d- 'include(stdio.)*
'include(conio.)*
'include(mat).)*
"nt n/
$loat a/
$loat f+ int n, float a-
.
"f+ n==1-
>eturn 0/
?lse
"f+n*1-
>eturn ln+n-4n31 3f+ n-1-3a/
5
"nt main+-
.
"nt n/
$loat a/
Grintf+6n=7-/
Scanf+62d7,8n-/
Grintf+6a=7-/
Scanf+62f7, 8a-/
etc)+-/
5

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

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