Sunteți pe pagina 1din 13

Programare n C / C++

5. Instruciuni.
5.1. Instruciunea expresie.
O instruciune expresie se obine punnd terminatorul de instruciune (punct-virgula) dup o
expresie
expresie;
!xemple
a++;
scanf();
max=a>b ? a : b;
!xemplul " Un numr real, introdus de la tastatur reprezint msura unui unghi exprimat n
radiani. S se scrie un program pentru conversia unghiului n grade, minute i secunde sexagesimale.
#include <stdio.h>
#define ! ".#$#%&'(%
)oid main()oid)*
float rad+ ,fr+ mfr;
int ,+ m+ s;
printf(-!ntroduceti numarul de radiani: -);
scanf(./f.+ 0rad);
,=,fr=rad1#234!;
m=mfr=(,fr5,)1(3;
s=(mfr5m)1(3;
printf(./%.'f radiani=/$d ,rade /3'd min /3'd sec6n.+
rad+ ,+ m+ s);
7
5.2. Instruciunea compus (blocul).
#orma general
*
declaratii8si8definitii;
instructiuni;
7
$e %olose&te n situaiile n care sintaxa impune o singur instruciune' dar codi%icarea impune
pre(ena unei secvene de instruciuni) *locul de instruciuni contea(a ca o singur instruciune)
5.3. Instruciunea vid.
#orma general ;
$intaxa impune pre(ena unei instruciuni' dar logica problemei nu necesit nici o prelucrare)
+n acest mod se introduc unele relaxri n sintax)
5.4. Instruciunea if.
#orma general
if (expresie)
instructiune#;
else
instructiune';
$e evaluea( expresia, dac este di%erit de - se execut instruc9iune# alt%el
instruc9iune'
O %orm simpli%icat are instruciune. vid
if (expresie)
instructiune;
."
Programare n C / C++
/n problemele de clasi%icare se ntlnesc deci(ii de %orma
if (expr#)
instr#;
else if (expr')
instr';

else
instrn;
0e exemplu dorim s contori(m caracterele citite pe categorii litere mari' litere mici' ci%re'
linii &i altele
if (c == :6n;)
linii++;
else if (c>=;a; 00 c<=;<;)
lmici++;
else if (c>=;=; 00 c<=;>;)
lmari++;
else if (c>=;3; 00 c<=;&;)
cifre++;
else
altele++;
!xemplul . S se scrie un program pentru rezolvarea cu discuie a ecuaiei de grad 2: ax
2
+bx+c=0
folosind operatorul condiional.
#include <stdio.h>
#include <math.h>
)oid main()oid)*
float a+ b+ c+ d;
printf(-!ntroduceti coeficientii ecuatiei: a+b+c6n?);
scanf(./f /f /f.+ 0a+0b+0c);
a? d=b1b5$1a1c+ d>=3? printf(.x#=/f6tx'=/f6n.+(5b5 s@rt(d))4'4a+
(5b+s@rt(d))4'4a):
printf(.x#=/f+i1/f6tx'=/f5i1/f6n.+5b4'4a+
s@rt(5d)4'4a+5b4'4a+ s@rt(5d)4'4a)):
b? printf(.x=/f6n.+5b4'4a): c? printf(.3 solutii6n.):
printf(.identitate6n.);
7
Exemplul 3: Data curent se exprim prin an, luna i zi. S se scrie un program care determin
data zilei de mine.
#include <stdio.h>
int bisect(int a)*
return a/$==3 00 a/#33A=3 BB a/$33==3;
7
int ultima(int a+ int l)*
if (l==')
return ('2+bisect(a));
else if (l==$BBl==(BBl==&BBl==##)
return "3;
else
return "#;
7
)oid main()
*int a+ l+ <;
..
Programare n C / C++
printf(-!ntroduceti data curenta: an+luna+<i6n?);
scanf(./d/d/d.+0a+0l+0<);
printf(.a<i: <i:/3'd luna:/3'd an:/$d6n.+ <+l+a);
if (< < ultima(a+l))
<++;
else
*<=#;
if (l < #')
l++;
else
*l=#;
a++;
7
7
printf(.maine: <i:/3'd luna:/3'd+ an:/$d6n.+ <+l+a);
7
5.5. Instruciunea sCitch.
Criteriul de selecie ntr-o problem de clasi%icare l poate constitui un selector care ia valori
ntregi)
#orma general
sCitch (expresie)*
case )al#: sec)enta#;
case )al': sec)enta';
. . .
default: sec)enta s;
7
$e evaluea( expresia selectoare, dac valoarea ei este egal cu una din constantele ca(urilor'
se alege secvena de prelucrare corespun(toare' dup care se continu cu secvenele de prelucrare ale
ca(urilor urmtoare)
0ac valoarea expresiei selectoare nu este egal cu nici una din constantele ca(urilor' se alege
secvena corespun(toare etic1etei de%ault)
Pentru ca prelucrrile corespun(toare ca(urilor s %ie dis2uncte se termin %iecare secvent de
prelucrare prin break) 0e exemplu
D=x;
sCitch (n)
* case %: D1=x;
case $: D1=x;
case ": D1=x;
case ': D1=x;
7
calculea( x
n
' unde n ia valori de la " la 3)
!xemplul 4 Scrieti o functie pentru determinarea ultimei zile din lun.
int ultima(int a+ int l)
* sCitch (l) *
case #: case ": case %: case E:
case 2: case #3: case #': return "#;
case $: case (: case &: case ##: return "3;
case ': return ('2 + bisect(a));
7
7
.5
Programare n C / C++
5.. Instruciunea Chile.
!ste ciclul cu test iniial, se repet instruciunea component ct timp expresia are valoarea
adevrat (di%erit de -))
Chile (expresie)
instructiune;
!xemplu 3!opiai fiierul standard de intrare stdin la ieirea standard stdout
41copierea intrarii la iesire14
* int c;
c = ,etchar();
Chile (c A= FGH)
* putchar(c);
c = ,etchar();
7
41 )arianta simplificata 14
* int c;
Chile ((c=,etchar()) A= FGH)
putchar(c);
7
!xemplul 6 S se calculeze cel mai mare divizor comun i cel mai mic multiplu comun a 2 numere
folosind algoritmul lui "uclid cu scderi. #ct timp numerele difer se nlocuiete cel mai mare dintre
ele prin diferena lor$.
#include <stdio.h>
)oid main()oid)*
unsi,ned lon, a+ b+ ca+ cb;
printf(-!ntroduceti cele doua numere6n?);
scanf(./lu /lu.+ 0a+ 0b);
ca=a; cb=b;
Chile (aA=b)
if(a > b)
a5=b;
else
b5=a;
printf(.cmmdc(/lu+/lu)=/lu6ncmmmc(/lu+/lu)=/lu6n.+
ca+cb+a+ca+cb+ca1cb4a);
7
5.!. Instruciunea doChile.
7epre(int ciclul cu test %inal,repetarea instruciunii are loc ct timp expresia este di%erit de -)
do
instructiune;
Chile (expresie);
Corpul buclei este %ormat dintr-o singur instruciune) 7epetarea se %ace cel puin o dat)
41 citirea unui raspuns 14
* char opt;
printf(-Iontinuam ? J 4 K?);
do
scanf(-/c?+ 0opt);
Chile (opt == :J; BB opt == :d;);
.4
Programare n C / C++
!xemplul 8 S se sta%ileasc dac un numr este sau nu palindrom #are aceeai reprezentare citit de
la stnga sau de la dreapta$.
#include <stdio.h>
)oid main()oid)*
unsi,ned lon, n+ c+ r=3;
scanf(./lu.+ 0n);
c=n;
do* r=#31r+n/#3;
n4=#3;
7Chile (n);
printf(./lu /s este palindrom6n.+c+ (c==r)? -?:?nu?);
7
5.". Instruciunea for.
7epre(int o alt %orm a ciclului cu test iniial)
for (exp8init; exp8test; exp8modif)
instructiune;
este ec1ivalent cu
exp8init;
Chile (exp8test)*
instructiune;
exp8modif;
7
!xemplul 9 S se sta%ileasc dac un numr ntreg n este sau nu prim.
:om ncerca toi divi(orii posibili (de la 2 la n)) 0ac nu gsim nici un divi(or' numrul este
prim) Continuarea ciclului pentru testarea posibililor divi(ori este determinat de dou condiii
- s mai existe divi(ori netestai
- candidaii de2a testai s nu %i %ost divi(ori)
;a ie&irea din ciclu se determin motivul pentru care s- a prsit ciclul
- s-au testat toi candidaii &i nu s-a gsit nici un divi(or' deci numrul este prim
- un candidat a %ost gsit divi(or' deci numrul este neprim)
Ciclul de testare a candidailor are %orma
for (d='; d1d <= n 00 n / d A= 3; d++)
;
Programul poate %i mbuntit prin evitarea testrii candidailor pari (cu excepia lui .))
#include <stdio.h>
)oid main()oid) *
unsi,ned lon, n+ d;
scanf(-/lu?+0n);
for(d='; d1d <= n 00 n/d; (d=')? d=": d+=')
;
printf(-numarul /lu este /sprim6n?+n+A(n/d)? -ne?:??);
7
5.#. Instruciunea continue.
Plasarea acestei instruciuni n corpul unui ciclu are ca e%ect terminarea iteraiei curente &i
trecerea la iteraia urmtoare)
continue;
!xemplul < & secven de numere ntregi este terminat prin '. S se calculeze suma termenilor
pozitivi din secven.
.3
Programare n C / C++
#include <stdio.h>
)oid main()oid) *
int n+ suma;
for(suma=3+scanf(-/d?+0n); n; scanf(-/d?+0n)*
if(n < 3) continue;
suma += n;
7
printf(-suma po<iti)i = /d6n?+ suma);
7
5.1$. Instruciunea breaL.
=re ca e%ect ie&irea dintr-o instruciune de ciclare sau dintr-o instruciune sCitch' pentru a
%ace alternativele dis2uncte (n ca( contrar dintr-o alternativ se trece n urmtoarea)) Permite
implementarea unor cicluri cu mai multe ie&iri plasate oriunde n interiorul ciclului)
O structur repetitiv %oarte general cu mai multe ie&iri plasate oriunde este
Chile (#) *
. . .
if(expresie#) breaL;
. . .
if(expresien) breaL;
. . .
7
5.11. Instruciunea ,oto.
7eali(ea( saltul la o etic1et) !ste o instruciune nestructurat &i se evit)
,oto eticheta;
5.12. Instruciunea return.
Orice %uncie nedeclarat )oid va trebui s ntoarc un re(ultat) >ipul acestui re(ultat este
speci%icat n antetul %unciei) >ransmiterea acestui re(ultat este reali(at de o instruciune return
inclus n corpul %unciei)
return expresie;
!xemplul "- !alculul factorialului.
lon, factorial( int p)
* int i;
lon, f;
for ( f = #+i='; i <= n; i++)
f 1= i;
return f;
7
0ac expresia ntoars este de alt tip dect cel al %unciei' atunci se %ace conversia la tipul
%unciei)
5.13. Exerciii.
") 0e pe mediul de intrare se cite&te un numr real rad repre(entnd un ung1i exprimat n radiani)
$ se converteasc n ,rade+ minute &i secunde centesimale)
2. ?n maratonist porne&te n curs la un moment de timp exprimat prin ora+ minutul &i
secunda startului) $e cunoa&te de asemeni timpul necesar sportivului pentru parcurgerea
traseului) $ se determine momentul terminrii cursei de ctre sportiv.
.6
Programare n C / C++
5) $ se stabileasc codomeniul 0 al valorilor %unciei
f : Mx#+ x'N J+ f(x) = a.x
'
+b.x+c+ a+ b+ c O+ a 3.
$e cunosc a+ b+ c+ x#+ x'.
4) Cunoscnd data curent exprimat prin trei numere ntregi repre(entnd anul' luna' (iua
precum &i data na&terii unei persoane exprimat n acela&i mod' s se calcule(e vrsta persoanei
exprimat n ani' luni &i (ile) $e consider n mod simpli%icator c toate lunile au 5- de (ile)
3) ?n punct n plan este dat prin coordonatele lui (x+ D). $ se stabileasc po(iia lui prin
indicarea cadranului ("' .' 5 sau 4) n care este plasat) Pentru un punct situat pe una din semiaxe se
vor preci(a cadranele separate de semiaxa respectiv (de exemplu .-5))
6) $e citesc trei numere reale po(itive ordonate cresctor) $ se veri%ice dac acestea pot s repre(inte
laturile unui triung1i &i n ca( a%irmativ s se stabileasc natura triung1iului isoscel' ec1ilateral'
dreptung1ic sau oarecare &i s se calcule(e aria sa)
8) Cunoscnd data curent &i data na&terii unei persoane exprimat %iecare sub %orma unui triplet
(an+luna+<i) s se a%le vrsta persoanei n ani implinii)
9) 0e pe mediul de intrare se cite&te un ung1i exprimat n ,rade+minute+secunde. $ se
converteasc n radiani.
<) ?n numr ntreg S repre(int o durat de timp exprimat n secunde . $ se converteasc n
<ile+ ore+ minute &i secunde utili(nd n program ct mai puine variabile)
"-) >rei valori reale sunt citite n variabilele a+ b+ c. $ se %ac sc1imbrile necesare ast%el nct
valorile din a+ b+ c s apar n ordine cresctoare)
"") $ se scrie algoritmul pentru re(olvarea cu discuie a ecuaiei de gradul " a1x+b=3' cu valorile lui
a &i b citite de pe mediul de intrare)
".) $ se scrie algoritmul pentru re(olvarea cu discuie a ecuaiei de gradul . a1x
'
+ b1x + c =
3) $e dau pe mediul de intrare coe%icienii a+ b+ c care pot avea orice valori reale repre(entabile
n memoria calculatorului)
"5) $e consider sistemul de ecuaii
a1x + b1D = c
m1x + n1D = p
dat prin valorile coe%icienilor a+ b+ c+ m+ n+ p. $ se re(olve sistemul cu discuie)
"4) $ se scrie algoritmul pentru @casierul automat@ care cite&te de pe mediul de intrare suma
(intreag) datorat de un client &i calculea( @restul@ pe care acesta l prime&te n numr minim de
bancnote &i mone(i de #33333+ %3333+ #3333+ %333+ #333+ %33+ #33+ %3+ '%+
#3+ %+ " &i # leu considernd c suma pltit este cel mai mic multiplu de #33333 mai mare
dect suma datorat)
"3) $ se calcule(e data revenirii pe pmnt a unei rac1ete' exprimat prin an+ lunP+ <i,
orP+ minut+ secundP' cunoscnd momentul lansrii exprimat n acela&i mod &i durata de
(bor exprimat n secunde)
"6) ?n numr per%ect este un numr egal cu suma divi(orilor si' printre care este considerat valoarea
" dar nu &i numrul)
$ se gseasc toate numerele per%ecte mai mici sau egale cu un numr L dat pe mediul de intrare' &i s
se a%i&e(e %iecare numr ast%el determinat' urmat de suma divi(orilor lui) 0e exemplu numrul ( are
divi(orii #+ '+ "+ () !l este numr per%ect deoarece ( = # + ' + ".
.8
Programare n C / C++
"8) 0ndu-se trei numere ntregi repre(entnd data unei (ile (an+lunP+<i)' s se stabileasc a
cta (i din an este aceasta)
"9) $e dau pe mediul de intrare un numr necunoscut de numere nenule terminate cu o valoare nul)
$ se stabileasc dac acestea
%ormea( un &ir strict cresctor,
%ormea( un &ir cresctor,
%ormea( un &ir strict descresctor,
%ormea( un &ir descresctor,
sunt identice,
nu sunt ordonate)
"<) 0ndu-se un numr ntreg n' s se a%i&e(e toi %actorii primi ai acestuia precum &i ordinele lor de
multiplicitate)
.-) =baterea medie ptratic a re(ultatelor obinute prin determinri experimentale se poate calcula cu
%ormula
aplicabil numai dac s-au %cut cel puin . msurtori)
0ndu-se pe mediul de intrare K (K'%) &i re(ultatele celor K determinri s se calcule(e abaterea
medie ptratic)
.") $ se calcule(e

n
# L
A L Q cnd se cunoa&te n
..) $ se scrie algoritmul pentru re(olvarea a n ecuaii de gradul .) $e citesc de pe mediul de
intrare valoarea lui n &i n triplei (a+b+c) repre(entnd coe%icienii ecuaiilor)
$e recomand reali(area unui program care s utili(e(e ct mai puine variabile)
.5) 0ndu-se notele obinute de o grup de n studeni la o disciplin' s se stabileasc ci dintre ei au
promovat (nu se vor utili(a dect variabile simple))
.4) $e dau pe mediul de intrare notele obinute de ctre studenii unei grupe la un examen' precedate
de numrul studenilor) $ se determine dac grupa este sau nu integralist' precum &i procenta2ul de
note %oarte bune (8..10))
.3) $ se determine cel mai mare (max) precum &i cel mai mic (min) element dintr-un &ir a
3
+ a
#
+
... a
n5#
.
$e dau pe mediul de intrare n precum &i cele n elemente ale &irului' care sunt citite pe rnd ntr-o
aceea&i variabil a)
.8) 0e pe mediul de intrare se cite&te un numr real b &i un &ir de valori reale po(itive terminate
printr-o valoare negativ (care nu %ace parte din &ir))
$ se stabileasc elementul din &ir cel mai apropiat de b) $e va preci(a &i po(iia acestuia) !lementele
.9
) # K ( K
x x K
si,ma
K
# i
'
K
# i
i
'
i

,
_



Programare n C / C++
&irului vor %i pstrate pe rnd n aceea&i variabil a)
.9) $ se calcule(e x
n
pentru x (real) &i n (intreg) dai' %olosind un numr ct mai mic de nmuliri de
numere reale)
.<) 0e pe mediul de intrare se citesc n valori ntregi po(itive) Pentru %iecare element s se indice cel
mai mare ptrat per%ect mai mic sau egal cu el)
5-) 0e pe mediul de intrare se cite&te o list de numere ntregi po(itive terminate cu un numr
negativ ce marc1ea( s%r&itul listei) $ se scrie n dreptul %iecrei valori numrul prim cel mai
apropiat mai mic sau egal cu numrul dat)
5") $ se re(olve ecuaia f(x) = 3 cu preci(ia epsilon dat' &tiind c are o rdcin n
intervalul *a+b7 preci(at) $e va utili(a metoda n2umtirii intervalului (@bisecie@))
+ndicaie $e mparte intervalul *a+b7 n dou 2umti egale, %ie m mi2locul intervalului) 0ac la
capetele intervalului *a+m7 %uncia are semne contrare soluia se va cuta n acest interval' alt%el se va
considera intervalul *m+b7.$e consider determinat soluia dac mrimea intervalului a devenit
in%erioar lui epsilon sau valoarea Bf(m)B < epsilon))
5.) 0ndu-se un numr ntreg n s se a%le ci%rele repre(entrii sale n ba(a #3 ncepnd cu
ci%ra cea mai semni%icativ)
55) $ se a%le ci%rele repre(entrii n ba(a b (ncepnd cu cea mai semni%icativ) a unui numr a dat n
ba(a #3)
+ndicaie
a = c
n
b
n
+ c
n5#
b
n5#
+ ...+ c
3

c
n
= a 4 b
n

a / b
n
= c
n5#
b
n5#
+ ...+ c
3
54) 0ndu-se numrul real a (3 < a < #) s se determine primele n ci%re ale repre(entrii lui
ntr-o ba( b dat)
53) 0e pe mediul de intrare se citesc n ci%re constituind repre(entarea unui numr ntr-o ba(
b# < #3' ncepnd cu cea mai puin semni%icativ) $ se obin &i s se a%i&e(e ci%rele repre(entrii
aceluia&i numr ntr-o alt ba( b' < #3)
56) $ se veri%ice dac un numar ntreg citit de pe mediul de intrare este palindrom' adic se cite&te
la %el de la stnga la dreapta &i de la dreapta la stnga (numrul este identic cu rsturnatul su)) ?n
ast%el de numr este $%#E#%$) Au se vor %olosi tablouri de variabile pentru pstrarea ci%relor
numrului)
58) $ se determine toate numerele prime mai mici sau egale cu un numr L dat pe mediul de
intrare)Pentru a veri%ica dac un numr x este prim se va incerca divi(ibilitatea lui cu '+"+$+...
*x 7) Aumrul este prim dac nu se divide cu niciunul dintre aceste numere &i este neprim dac are
cel puin un divi(or printre ele)
59) Printre numerele mai mici sau egale cu un numr n dat pe mediul de intrare s se gseasc cel
care are cei mai muli divi(ori)
5<) $e consider %uncia f(x) = ln ('.x
'
+ #)) $ se scrie un program pentru tabelarea pe
intervalul M5#3+ #3N cu urmtorii pa&i
3.# pentru B x B #.3
3.% pentru #.3 < B x B %.3
.<
Programare n C / C++
#.3 pentru %.3 < B x B #3.3
4-) $e d un numr ntreg po(itiv repre(entat n ba(a "-) $ se determine &i s se a%i&e(e ci%rele
repre(entrii sale n ba(a "6) $e preci(ea( c n ba(a "6 ci%rele utili(ate sunt
3+...&+=+R+I+J+F+H) Prin convenie la s%r&itul numerelor repre(entate n ba(a "6
(1exa(ecimal) se scrie litera S) 0ac ci%ra cea mai semni%icativ a repre(entrii sale este =))# atunci se
va a%i&a ca prim ci%r un -) !xemplu
#E% = 3=HS
(#3) (#()
3=HS = #3 1 #(
#
+ #% 1 #(
3
4") 0e pe mediul de intrare se citesc ci%rele repre(entrii unui numr ntreg n ba(a "6 terminate cu
caracterul B (ci%rele 1exa(ecimale sunt 3+...+&+ =+ R+ I+ J+ F+ H)) $ se calcule(e &i s se
a%i&e(e repre(entarea numrului n ba(a "-)
4.) 0ndu-se un numr ntreg n s se a%i&e(e repre(entarea sa cu ci%re romane impunnd regula
ca o ci%r s nu poat %i urmat de o alta cu valoare strict mai mare dect ea) Aumrul << se va
repre(enta n aceste condiii ca TUUUUV!!!! &i nu ca UI!U)
45) $e dau dou numere ntregi' primul repre(entnd un an &i al doilea' numrul de (ile scurse din acel
an) $ se determine data (luna &i (iua))
44) $ se calcule(e coe%icienii binomiali I
n
#
+I
n
'
+... I
n
p
n care n &i p sunt intregi po(itivi dai
(p <= n)' &tiind c exist urmtoarea relaie de recuren
I
n
L
=(n5L+#)4L1I
n
L5#
pornind cu I
n
3
=#
43) $e consider polinomul: p
n
(x)=a
3
x
n
+a
#
x
n5#
+ ... +a
n
$ se calcule(e valoarea polinomului ntr-un punct x dat' dac valorile coe%icienilor lui x se citesc pe
rnd' n aceea&i variabil a
a) n ordinea descresctoare a puterilor lui x (adic n ordinea a
3
+a
#
+...a
n
)
b) n ordinea cresctoare a puterilor lui x' (adic n ordinea a
n
+a
n5#
+...a
3
)
46) Pentru a' b &i n dai (a+b O+ n >) s se calcule(e x &i D ast%el ca x+i1D=(a+i1b)
n
%r
a %olosi %ormula lui Coivre
48) $ se calcule(e &i s se a%i&e(e valorile integralei
pentru L=#+'+...+n' n care n &i x sunt dai' cunoscnd c
!
L
(x) =Mx
L
W=
L
#
x
L5#
+=
L
'
x
L5'
5 ... (5#)
L
=
L
L
Ne
x
unde
=
L
p
= L(L5#) ...(L5p+#)
49) $ se calcule(e pentru n dat' f
n
termenul de rangul n din &irul lui #ibonacci' cunoscnd relaia de
recuren
f
p
= f
p5#
+f
p5'
pentru p > ' %i f
3
= #+ f
#
= #
4<) Dirul *x
n
7 generat cu relaia de recuren x
n
= (x
n5#
+ a4x
n5#
)4' pornind cu x
3
= a4' este
convergent pentru a > 3 &i are ca limit a ) Pentru a oarecare' dat' s se construiasca un algoritm
care calculea( a ca limit a acestui &ir'cu o preci(ie eps dat)
5-

x
3
u L
L
du e u ) x ( !
Programare n C / C++
3-) Dirurile *u
n
7 &i *)
n
7 generate cu relaiile de recuren
u
n
=(u
n5#
+ )
n5#
)4' &i )
n
= u
n5#
)
n5#
pornind cu u
3
=#4BaB+ )
3
=#4BbB, unde a3+ b3 au
o aceea&i limit comun' valoarea integralei eliptice
$ se calcule(e aceast integral pentru a &i b dai' ca limit comun a celor dou &iruri' determinat
aproximativ cu preci(ia eps' n momentul n care distana ntre termenii celor dou &iruri devine
in%erioar lui eps' adic Bu
n
W)
n
B < eps)
3") Pentru calculul lui l,
'
x se generea( &irurile *a
n
7+ *b
n
7 &i *c
n
7
cu relaiile de recuren
x a cu pornind
' a
' a a
a
3 '
# n
'
# n
'
# n
n

'

<


dac
.
a
dac
.
" - n
b
n
= b
n5#
4 ' pornind cu b
3
=#
$e &tie c pentru # < x < '+ lim c
n
= l,
'
x.
0ac x (#+') se aduce argumentul n acest interval %olosind relaiile
l,
'
x = 5 l,
'
(#4x) pentru x < #
l,
'
x = L+l,
'
(x4'
L
) pentru x '
L

3.) 0e(voltarea n serie
este rapid convergent pentru x mic)Pentru x oarecare'acesta se descompune sub %orma
x = i + f in care
i = partea intreag a lui x
f = partea %racionar a lui x)
7e(ult e
x
= e
i
1 e
f
cu
5"

' 4
3
' ' ' '
x sin b x cos a
dx '
!
3 c cu pornind
' a daca b c
' a daca c
c
3 '
# n n # n
'
# n # n
n

'

+
<

3 L
L
x
A L
x
e
x a
' a
'
a
' a a
a
3 '
# n
'
# n
'
# n
'
# n
n

'

<


cu pornind
daca
daca
Programare n C / C++
Pentru x dat' s se calcule(e e
x
cu o preci(ie eps dat)
35) $ se obin repre(entarea ca %racie (ecimal a numrului m 4 n) !ventuala perioad se
a%i&ea( ntre parante(e)
34) $ se determine valoarea n pentru care
satis%ace conditia BQ 5 4"B < ' in care eps este dat)$e stie c)
33) $ se calcule(e %uncia *essel de spea +-a X
n
(x) &tiind c exist relaia de recuren
X
p
(x) = ('p5')4x1X
p5#
(x) W X
p5'
(x)
Calculele se %ac cu preci(ia eps (x+ n &i eps se dau pe mediul de intrare))
36) Pentru n dat s se calcule(e suma
38) $ se calcule(e cu o preci(ie cunoscut &tiind c
39) $ se calcule(e sin(x) &i cos(x) cu preci(ia dat eps utili(nd de(voltrile n serie de puteri
5.
3 i pentru e e e e
i
i
>


3 i pentru
e
#
e
#
e
#
e
i
i
<

n
# L
'
L n $
'
Q
3
S lim
k

,
_


3 L
'
L '
L
3
) A L (
'
x
) # ( ) x ( X

+
+

,
_


3 L
# L '
L
#
)A # L ( A L
'
x
) # ( ) x ( X
n ' $ '
) # n ' ( " #
$ '
" #
'
#
Q



+ +

+
+ +

E
#
%
#
"
#
#
$
Programare n C / C++
3<) #ie &irurile *a
n
7+*b
n
7+*c
n
7 generate cu relaiile de recuren
a
n
= (b
n5#
+c
n5#
)4' b
n
= (c
n5#
+a
n5#
)4' c
n
= (a
n5#
+b
n5#
)4' cu
a
3
= alfa ; b
3
= beta ; c
3
= ,ama
alfa+ beta+,ama date) Dtiind c cele trei &iruri sunt convergente &i au o limit comun' s se
calcule(e cu o preci(ie eps dat aceast limit)
6-) $ se calcule(e prin de(voltare in serie' cu preci(ia eps dat' sin(x):
0eoarece seria este rapid convergent cnd argumentul se a%l n primul cadran' se va %ace
reducerea sa la primul cadran utili(nd urmtoarele relaii
sin(x) = 5 sin(5x) dacP x < 3
sin(x) = sin(x5'n) dacP x > 'n
sin(x) = 5 sin(x5) dacP x >
sin(x) = sin(5x) dacP x > 4'
55
+ +
A E
x
A %
x
A "
x
A #
x
) x sin(
E % "
+ +
A (
x
A $
x
A '
x
# ) x cos(
( $ '
+ +
A E
x
A %
x
A "
x
x ) x sin(
E % "

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