Sunteți pe pagina 1din 18

2

CURS
Sumar
Instruciu
ni
n C/C++
Funcii matematice
Instruciuni de selecie (de condiionare)
Instruciuni de iterare
Instruciuni de salt
Instrucini de tip expresie
Instruciuni bloc
Aplicaii rezolvate
Teme propuse
1. Func matematce
Nume funce F. header Forma genera
abs math.h int abs (int x);
fabs math.h double fabs (double x);
labs math.h long int labs(long int
x);
acos math.h double acos (double x);
asin math.h double asin (double x);
atan math.h double atan (double x);
ceil math.h double ceil (double x);
floor math.h double floor (double x);
cos math.h double cos (double x);
sin math.h double sin (double x);
tan math.h double tan (double x);
exp math.h double exp (double x);
log math.h double log (double x);
log1 math.h double log1 (double x)
po! math.h double po! (double x"
double #);
po!1 math.h double po!1 (int x);
modf math.h double modf (double
val" double $parte
%&ntreag');
s(rt math.h double s(rt (double x);
s(rtl math.h double s(rtl (long
double x);
Semncae
&ntoarce modulul expresiei &ntregi x ( )x) )
are acela*i rol cu abs" doar c' &ntoarce un nr. real
are acela*i rol cu abs" numai c' &ntoarce valoarea
unui &ntreg lung
calculeaz' valoarea funciei arccos(x)
calculeaz' valoarea funciei arcsin(x)
calculeaz' valoarea funciei arctangent'(x)
rotun+e*te o valoare &ntreag' cu valoarea &ntreag'
urm'toare ex., ceil(1.1-).-
rotun+e*te o valoare &ntreag' cu valoarea &ntreag'
anterioar'" adic' /x0 ex., floor(1.1-).1
calculeaz' valoarea funciei cosinus(x)
calculeaz' valoarea funciei sinus(x)
calculeaz' valoarea funciei tangenta(x)
calculeaz' valoarea funciei e
x
calculeaz' valoarea funciei ln(x).loge(x)
calculeaz' valoarea funciei lg(x).log1(x)
calculeaz' valoarea x
#
calculeaz' valoarea 1
x
separ' o valoare double &n &ntreg *i real. Funcia
returneaz' valoarea p'rii fracionare *i atribuie
partea &ntreag' unei anumite variabile
calculeaz' r'd'cina p'trat' a lui x
calculeaz' r'd'cina p'trat' a lui x
1
fmod math.h double fmod (double x" returneaz' restul &n virgul' mobil' a &mp'ririi lui x
double #); la #
rand stdlib.h int rand (void); returneaz' un nr. aleator &ntre *i 1A23%4A5
random stdlib.h int random (int limita); returneaz' o valoare aleatoare &ntre *i o limit'
2. Instrucun de seece (de condonare)
6dat' cu scrierea unor aplicaii mai complexe" pot ap'rea situaii &n care programul s'
necesite efectuarea unui anumit set de instruciuni dac' o condiie este adev'rat'" iar dac' nu este
adev'rat'" probabil" executarea unui alt set de instruciuni. 78nd un program execut' (sau nu)
anumite instruciuni &n funcie de o anumit' condiie" se spune c' programul realizeaz' o
procesare condona. 9entru a realiza o procesare condiional'" programul evalueaz' o
condiie" return8nd un rezultat adev'rat sau fals.
9entru a a+uta programele s' efectueze procesarea condiionat'" limba+ul &n cauz'
dispune de instruciunile f *i f-ese" ca *i instruciuni de selecie (condiionare) simpl'"
respectiv" swtch" ca *i instruciune de selecie (condiionare) multipl'.
Instrucunea f
a) Cu dou stua,
if (expresie) nstrucune
1
else nstrucne
2
9rincipiul
de execuie este urm'torul,
: se evalueaz' expresia
: dac' valoarea produs' de aceasta este diferit' de " se execut' instruciune
1
;
: dac' valoarea produs' este se execut' instruciune
2
.
T
instruciuni1
b) Cu o stuae,
<condiie>
F
instruciuni2
if (expresie) nstrucune
9rincipiul de execuie este urm'torul,
: se evalueaz' expresia;
: dac' valoarea produs' de aceasta este diferit' de
subordonat'.
T F
" se execut' instruciunea
<condiie>
instruciuni
-
Instrucunea swtch
Instruciunea s!itch are forma general',
switch (expresie)
{
case exp
1
: secven istruciuni
1
; break;
case exp
2
: secven instruciuni
2
; break;
..
case exp
n
: secven instruciuni
n
; break;
[efault: secven instruciuni
n!1
";
#
;nde,
: expresie are semnificaia, expresie de tip &ntreg;
: exp
i
, sunt expresii constante de tip &ntreg;
: instruciune
i
reprezint' o secven' oarecare de instruciuni.
9rincipiul de execuie este urm'torul,
: se evalueaz' expresia expresie;
: dac' aceasta produce o valoare egal' cu cea produs' de exp
i
" se execut' &n ordine"
instructiune
i
*i se trece la instruciunea urm'toare instruciunii switch" altfel
se execut' numai secvena instruciuni din clauza efault.
: Alternativa efault este facultativ'. <n absen'" &n cazul &n care nu exist'
coinciden' de valori" se trece la instruciunea urm'toare instruciunii switch.
F
F
caz1
caz
n instruciunen+1
T
T
instruciune1
instruciune
n
3. Instrucun de terare
6dat' cu scrierea unor aplicaii mai complexe" pot ap'rea situaii &n care un program s'
repete acela*i set de instruciuni de un anumit num'r de ori sau p8n' c8nd se &ndepline*te o
anumit' condiie. Atunci c8nd programele repet' una sau mai multe instruciuni" p8n' c8nd este
&ndeplinit' o condiie dat'" se spune c' programul execut' o procesare teratv. 6
trecere a programului prin instruciunile care se repet' se nume*te terae.
=
9entru a putea realiza o procesare iterativ'" limba+ul 7>7?? pune la dispoziie o serie de
instruciuni de iterare" care se pot cataloga &n felul urm'tor,
@ instruciuni iterative cu condiie predefinit'" cu un num'r determinat de pa*i @
instruciunea sau bucla for;
@ instruciuni iterative cu sf8r*it deschis,
@ instruciune repetitiv' condiionat' anterior @ whe;
@ instruciune repetitiv' condiionat' posterior @ do.whe.
Aceast' condiie poate fi predefinit' (ca &n buclele f$r) sau cu sf8r*it deschis (ca &n
buclele while *i $%while).
Instrucunea for
Instruciunea f$r are forma general',
f$r (expresie
iniiali&are
;expresie
test
;expresie
incre'entare
) nstrucune 3up' cum
se vede" &ntre paranteze se g'sesc = expresii,
: expresie
iniiali&are
se folose*te" de regul' pentru iniializarea variabilei de
ciclare. Aste de remarcat faptul c' &n cadrul acestei expresii (cu rol special) este posibil
chiar s' declar'm variabila de ciclare (cu valoare iniial');
: expresie
test
se folose*te pentru a testa dac' se execut' instruciunea subordonat'
@ dac' expresia produce la evaluare o valoare diferit' de (adev'rat' din punct de
vedere logic)" instruciunea subordonat' f$r se execut';
: expresie
incre'entare
se folose*te pentru incrementarea variabilei de ciclare.
9rincipiul de execuie este urm'torul,
P1, se evalueaz' expresie
iniali&are
(un caz special este acela &n care se face *i declaraia
variabilei de ciclare);
P2, se evalueaz' expresie
test
. <n cazul &n care aceasta produce o valoare diferit' de (dac' este
adev'rat' din punct de vedere logic)" se execut' instruciunea subordonat' f$r; apoi se trece la
9=" altfel se trece la instruciunea urm'toare (se termin' execuia instruciunii f$r); P3, se
evalueaz' expresia de incrementare *i se revine la 9-.
Observae, Boate expresiile pot fi vide. <n concluzie" expresiile de mai sus au rolul precizat &n
mod normal @ dar nu obligatoriu *i nici restrictiv. 3e exemplu" dac' expresie
test
este vid'" se
execut' un ciclu infinit.
C
'ain()
{
f$r(;;);
#
9rogramul de mai sus cicleaz'. 3ac' un ciclu nu se termin' (instruciunile se execut' la
infinit) spunem c' programul cicleaz'. 9entru a opri din execuie un astfel de program"
proced'm difereniat dup' mediul &n care lucr'm,
: ()* @ tast'm +,-.!/01*2;
: 345()3* @ tast'm +,-.!0.,!(2..
1eprezentarea prin schem' logic' a instruciunii for este,
Instrucunea whe
Forma general' este,
while (expresie) instruciune
9rincipiul de execuie este urm'torul,
P1, se evalueaz' expresia;
var = start var = var + s
T
var<=stop instruciuni
F
T
DcondE instructiuni
F
P2, dac' valoarea produs' de aceasta este diferit' de (dac' expresia este adev'rat' din punct de
vedere logic)" se execut' instruciunea subordonat'" apoi se revine la 91" altfel se trece la
instruciunea urm'toare instruciunii while.
Instrucunea do..whe
Aceast' instruciune este asem'n'toare cu structura -2/20, 15,4. din limba+ul 9ascal.
3eosebirea este dat' de faptul c' testul de repetiie este Fpe dosG fa' de cea din 9ascal. Forma
general' a acestei instruciuni este urm'toarea,
$
nstrucun
while(expresie);
9rincipiul de execuie este urm'torul,
P1, se evalueaz' instruciunea subordonat';
instructiuni
T
<cond>
F
P2, se evalueaz' expresia. <n cazul &n care valoarea produs' la evaluare este (este fals' din
punct de vedere logic)" execuia instruciunii $ se termin'" altfel se trece la 91.
H
Observae, Iecvena se execut' cel puin o dat'" dup' care se pune problema dac' s' se
repete sau nu (prin evaluarea expresiei logice).
4. Instrucun de sat
7 are patru instruciuni care execut' ramific'ri necondiionate, return6 7$t$6
break *i c$ntinue. 3intre acestea" return *i goto pot s' se g'seasc' oriunde &n program.
: break *i contnue pot fi utilizate &mpreun' cu oricare din instruciunile de buclare.
A*a cum s@a discutat anterior" se mai poate utiliza breaJ *i &mpreun' cu s!ich.
: return @ este utilizat' pentru re&ntoarcerea dintr@o funcie. A caracterizat' drept
instruciune de salt deoarece determin' execuia s' se re&ntoarc' (s' sar' &napoi) &n
punctul &n care a fost apelat' funcia. -eturn poate s' aib' sau nu asociat' o valoare.
3ac' return are o astfel de valoare" aceasta devine valoarea returnat' de funcie.
: goto @ este o instruciune de salt foarte rar utilizat'. 2u este ceva neaparat necesar
put8nd fi &nlocuit' cu alte instruciuni. Instruciunea 7$t$ cere o etichet' pentru
operaie. 6 operaie este un specificator valid urmat de punct *i virgul'. 4ai mult"
eticheta trebuie s' se g'seasc' &n aceea*i funcie ca *i 7$t$ care o utilizeaz'" nu putei
s'ri &ntre funcii.
5. Instrucun de tp exprese
Axistena acestei instruciuni ar putea s' ne mire. <n pseudocod expresiile intervin &n
cadrul operaiunii de atribuire. <n 7 exist' instruciunea expresie. Aa este de forma,
expresie;
Astfel" limba+ul permite s' scriem instruciunea expresie 8!2;. Aceasta se evalueaz'" chiar dac'
nu folosim &n nici un fel rezultatul. 9rogramul de mai +os este corect.
'ain()
{
8!2;
#
3eci" o instruciune de tip expresie este pur *i simplu o expresie valid' urmat' de
punct *i virgul' ca &n,
func(); >$o apelare de funcie$>
a9b!c; >$o instruciune de atribuire$>
b!f(); >$o instr. valid' dar cel puin interesant'$>
K
; >$o instruciune vid'$>
9rima instruciune de tip expresie este o apelare de funcie. A doua este una de
atribuire. A treia expresie" destul de stranie" este totu*i evaluat' de compilatorul 7 deoarece
funcia f() poate s' efectueze o anumit' sarcin'. ;ltimul exemplu arat' c' 7 permite ca o
instruciune s' fie vid' (uneori numit' nstrucune nu).
6. Instrucun boc
Instruciunile bloc sunt simple grupuri de instruciuni &nrudite care sunt tratate ca o
unitate. Instruciunile care formeaz' un bloc sunt unite logic. ;n bloc &ncepe cu o acolad'
deschis' { *i se &ncheie cu corespondentul s'u" acolada &nchis' #
Axemplu,
'ain()
{
int i;
{
:;$ instructiune bl$c;:
i912<;
printf(=>?6i);
#
#
7. Apca rezovate
Apcaa 1. (Instruciuni de condiionare simple)
I' se realizeze un program pentru rezolvarea ecuaiei de gradul al II@lea.
L
IBA1B
a" b" c
d.bM- @ Cac
NU
dD
x1.(@ b @ rad(d))>-a
x2.(@ b ? rad(d))>-a
NU
a.
DA x . @ c>b
x
DA
NU DA
b.
NU DA
c.
FAcuatia nu FAcuatia are
are nici o o infinitate
solutieG de solutiiG
FAcuatia nu
are o solutii
realeG
x1" x2
IB69
@inclue Asti$.hB
@inclue A'ath.hB
v$i 'ain (v$i)
{
int a6b6c;
fl$at x16x26;
printf(C4ntr$uceti c$eficientii ecuatiei.DnC);
printf(CDta9C); scanf(C>C6Ea);
printf(CDtb9C); scanf(C>C6Eb);
printf(CDtc9C); scanf(C>C6Ec);
if(Fa) ::a99<
if(Fb) ::b99<
if(Fc)
printf(C2cuatia are $ infinitate e s$lutii.C);
else
printf(C2cuatia nu are nici $ s$lutie.C);
else
{
x19%c:(fl$at)b;
printf(C*$lutia ec. este: >.2f.C6x1);
#
else
N
{
9p$w(b62)%G;a;c;
if(A<)
printf(C2c nu are s$lutii reale.C);
else
{
x19(%b!sHrt()):2;a;
printf(C*$lutiile sunt:DnDtx1 este: >.2fDnC6x1);
x29(%b!sHrt()):2;a;
printf(CDtx2 este: >.2fDnC6x2);
#
#
#
Apcaa 2. (Instruciuni repetitive)
Ie vor scrie programe care vor calcula expresiile,
a) * 9 1!2!I!G!!n;
b) * 9 1%2!I%G!Jn;
c) / 9 1;2;I;G;;n;
d) / 9 1;(1:2);I;(1:G);8;(1:K);;
e) * 9 1 ! 1;2 ! 1;2;I ! 1;2;I;G ! 1;2;I;G;8 ! O ? 1$-$O$n.
unde n este un &ntreg limit' dat de la tastatur'. Fiecare expresie va fi tratat' prin toate cele trei
variante de bucle studiate &n acest paragraf.
a) Paloarea expresiei *91!2!I!G!!n.
) Expresa determnat prn FOR:
IBA1B
n
s." i.1
i.i?1
A
iQn s.s?i
F
s IB69
@inclueAsti$.hB
v$i 'ain()
{
int n; l$n7 int s9<;
printf(C(ati n: C);
scanf(C>C6En);
f$r(int i91;iA9n;i!!)
s!9i;
printf(CLal$area expresiei este: >lC6s);
#
R
) Expresa determnat prn WHILE:
IBA1B
n
s." i.1
A
iQn s.s?i
i.i?1
F
s IB69
@inclueAsti$.hB
v$i 'ain()
{
int n6i91; l$n7 int s9<;
printf(C(ati n: C);
scanf(C>C6En);
while(iA9n)
{
s!9i;
i!!;
#
printf(CLal$area expresiei este: >lC6s);
#
) Expresa determnat prn DO..WHILE:
IBA1B
@inclueAsti$.hB
n
v$i 'ain()
{
s." i.1
s.s?i
i.i?1
A
iQn
F
s IB69
int n6i91; l$n7 int s9<;
printf(C(ati n: C);
scanf(C>C6En);
${
s!9i;
i!!;
#while (iA9n);
printf(CLal$area expresiei este: >lC6s);
#
b) Paloarea expresiei *91%2!I%G!Jn. <n exemplul de mai +os am creat funcii proprii
pentru calculul valorii expresiei &n fiecare din cazuri.
@inclueAsti$.hB
int val$are1(int n)
{
int s9<6 i916 se'n91;
f$r(;iA9n;i!!)
{
::se va foos nstructunea for
::o ata forma de screre
1
s!9se'n;i;
se'n9%se'n;
#
return s;
#
int val$are2(int n)
{
int s9<6 i916 se'n91;
while(iA9n)
{
s!9se'n;i;
se'n9%se'n;
i!!;
#
return s;
#
int val$areI(int n)
{
int s9<6 i916 se'n91;
${
s!9se'n;i;
se'n9%se'n;
i!!;
#while(iA9n);
return s;
#
v$i 'ain()
{
int n;
::se va foos nstructunea whe
::se va foos nstructunea do..whe
printf(C(ati n: C); scanf(C>C6En);
printf(C2xpresia calculata cu M)- are val$area: >.DnC6val$are1(n));
printf(C2xpresia calculata cu 3N4.2 are val$area: >.DnC6val$are2(n));
printf(C2xpresia calculata cu ()..3N4.2 are val$area: >.C6val$areI(n));
#
c) Paloare expresiei /91;2;I;G;;n.
@inclueAsti$.hB
int val$are1(int n)
{
int p91;
f$r(int i91;iA9n;i!!)
p;9i;
return p;
#
int val$are2(int n)
{
int p916 i91;
while(iA9n)
{
p;9i;
i!!;
#
::se va foos nstructunea for
::se va foos nstructunea whe
11
return p;
#
int val$areI(int n)
{
int p916 i91;
${
p;9i;
i!!;
#while(iA9n);
return p;
#
v$i 'ain()
{
int n;
::se va foos nstructunea do..whe
printf(C(ati n: C); scanf(C>C6En);
printf(C2xpresia calculata cu M)- are val$area: >.DnC6val$are1(n));
printf(C2xpresia calculata cu 3N4.2 are val$area: >.DnC6val$are2(n));
printf(C2xpresia calculata cu ()..3N4.2 are val$area: >.C6val$areI(n));
#
d) Paloare expresiei /91;(1:2);I;(1:G);8;(1:K);
@inclue Asti$.hB
@inclue A'ath.hB
fl$at val$are1(int n)
{
fl$at p916t;
f$r(int i91;iA9n;i!!)
{
::se va foos nstructunea for
if (F(i>2)) ::se ma putea scre f(%2==0), adca, testarea daca
numaru este mpar
{
t9p$w(i6%1);
p;9t;
#
else p;9i;
#
return p;
#
fl$at val$are2(int n)
{
fl$at p916t;
int i91;
while(iA9n)
{
::se va foos nstructunea whe
if (F(i>2)) ::se ma putea scre f(%2==0), adca, testarea daca
numaru este mpar
{
t9p$w(i6%1);
p;9t;
#
else p;9i;
i!!;
#
return p;
1-
#
fl$at val$areI(int n)
{
fl$at p916t;
int i91;
${
::se va foos nstructunea do..whe
if (F(i>2)) ::se ma putea scre f(%2==0), adca, testarea daca
numaru este mpar
{
t9p$w(i6%1);
p;9t;
#
else p;9i;
i!!;
#while(iA9n);
return p;
#
v$i 'ain()
{
int n;
printf(C(ati n: C); scanf(C>C6En);
printf(C2xpresia calculata cu M)- are val$area: >.2f.DnC6val$are1(n));
printf(C2xpresia calculata cu 3N4.2 are val$area: >.2f.DnC6val$are2(n));
printf(C2xpresia calculata cu ()..3N4.2 are val$area: >.2f.C6val$areI(n));
#
e) Paloarea expresiei *91!1;2!1;2;I!1;2;I;G!1;2;I;G;8!O ?1$-$O$n. Pom alege
o sigur' variant' pentru rezolvarea cazului" *i anume cea &n care vom folosi instruciuni repetitive
cu un num'r determinat de pa*i.
@inclueAsti$.hB
v$i 'ain()
{
int s9<6n6p;
printf(C(ati n: C);
scanf(C>C6En);
f$r(int i91;iA9n;i!!)
{
p91;
f$r(int O91;OA9i;O!!)
p;9O;
s!9p;
#
printf(CLal$area expresiei este: >.C6s);
#
1=
Apcaa 3. (Instruciuni condiionate multiple)
Ie cite*te un text format din cuvinte ce pot fi desp'rite prin spaiu sau virgul'. Bextul citit se
termin' cu punct sau SAnterT. I' se contorizeze vocalele *i consoanele din acel text.
a) Parianta folosind o bucl' repetitiv' condiionat' anterior.
@inclueAsti$.hB
v$i 'ain()
{
int v9<;
int c9<;
printf(C4ntr$uceti textul $rit: C);
char k;
k97etchar(); :; cteste un caracter, care va prmu dn text, care
va transms varabe k ;:
while(kF9P.P EE kF9PDnP)
{
if (kF9P6P EE kF9P P)
switch (k)
{
case PaP:
case P0P:
case PeP:
case P2P:
case PiP:
case P4P:
case P$P:
case P)P:
case PuP:
case P1P: v!!;
break;
efault: c!!;
#;
k97etchar(); ::urmatoru caracter dn text va trms n varaba k
#
printf(C5u'arul e v$cale este >uDnC6v);
printf(C5u'arul e c$ns$ane este >uDnC6c);
#
b) Parianta folosind o bucl' repetitiv' condiionat' posterior.
@inclueAsti$.hB
v$i 'ain()
{
int v9<;
int c9<;
printf(C4ntr$uceti textul $rit: C);
char k;
1C
${
k97etchar();
if (kF9P6P EE kF9P P EE kF9PDnP EE kF9P.P)
switch (k)
{
case PaP:
case P0P:
case PeP:
case P2P:
case PiP:
case P4P:
case P$P:
case P)P:
case PuP:
case P1P: v!!;
break;
efault: c!!;
#;
#while(kF9P.P EE kF9PDnP);
printf(C5u'arul e v$cale este >uDnC6v);
printf(C5u'arul e c$ns$ane este >uDnC6c);
#
Apcaa 4. (Instruciuni de salt)
a) I' se contorizeze num'rul de vocale *i cel de consoane din alfabet" folosind instruciunea de
salt 7$t$.
@inclueAsti$.hB
v$i 'ain()
{
int nrQv$cale9<6nrQc$ns$ane9<;
char litera9P0P;
eticheta:
switch (litera) {
case P0P:
case P2P:
case P4P:
case P)P:
case P1P: nrQv$cale!!;
break;
efault: nrQc$ns$ane!!;
#;
litera!!;
if(literaA9PRP) 7$t$ eticheta;
printf(C5u'arul e v$cale este: >.DnC6nrQv$cale);
printf(C5u'arul e c$ns$ane este: >.C6nrQc$ns$ane);
#
1H
b) 3in &ntregul alfabet vor fi afi*ate doar literele caractere mari p8n' la S4T. Uucla se va
&ncheia &n mod voit" prin folosirea instruciunii break.
@inclueAsti$.hB
v$i 'ain()
{
f$r(char litera9P0P;literaA9PRP;litera!!)
{
if(litera99PSP) break;
printf(C>c C6litera);
#
#
Apcaa 5.
I' se transforme un num'r din baza 1 &ntr@o baz' p" -D.pD.1.
:; Vom mpr succesv pe x (numru dat) a p, rennd cfree dn baza p ntr-
un numr xp, care va apo rsturnat, pentru a obne numru xp, vzut ca
reprezentarea n baza p a u x. Pentru a nu avea probeme n cazu n care prma
cfr a u xp ar 0, foosm o ncrementare cu 1 a cfreor a transformarea
x->xp, respectv o decrementare a transformarea xp->xp. ;:
@inclueAsti$.hB
v$i 'ain ()
{
int x6xpi6xp6p;
printf (C(ati x in ba&a 1<:C);
scanf (C>C6Ex);
printf(C(ati n$ua ba&a p:C);
scanf(C>C6Ep);
::un at mod de a scre o nstructune for
f$r (xpi9<; x; xpi91<;xpi!x>p!16x9x:p);
f$r (xp9<; xpi; xp91<;xp!(xpi%1)>1<6xpi9xpi:1<);
printf(C5u'arul in ba&a > este:>C6p6xp);
#
:; De remarcat, n acest exempu, foosrea operatoruu "," n cadru nstrucun for.
De pd, prmu for se nterpreteaz astfe:
% se nazeaz xp cu 0;
% ct tmp x este dfert de 0 execut:
% xp devne 10*xp+x%p+1
- x se mparte a p ( se face conversa a nt).;:
Apcaa 6.
I' se realizeze un program care intr@o bucl' while calculeaz' suma cifrelor unui num'r
introdus de la tastatur' *i afi*eaz' inversul lui.
@inclueAsti$.hB
@inclueA'ath.hB
1K
v$i 'ain()
{
int n;
int s9<; ::suma cfreor
int ninv9<; ::nversu numaruu
printf(C(ati n: C);
scanf(C>C6En);
while (n) ::sau whe(n!=0)
{
s9s!n>1<;
ninv9ninv;1<!n>1<;
n:91<;
#
:; nstructunea repettva de ma sus se ma putea scre s asa:
whe(nnv*=10,nnv+=n%10,s+=n%10,n/=10); ;:
printf(C*u'a este: >C6s);
printf(CDn4nversul este: >C6ninv);
printf(CDnSaxi'ul este: >C6(s!ninv!abs(s%ninv)):2);
#
8. Probeme propuse
1. Fiind furnizate trei numere &ntregi" s' se stabileasc' dac' acestea pot fi m'surile unui
triunghi *i" &n caz afirmativ" s' se calculeze fie perimetrul" fie aria" fie s' se detrmine
natura triunghiului dup' laturi (isoscel" echilateral" oarecare) &n funcie de dorina celui
care utilizeaz' programul. <n cazul unei erori" adic'" laturile nu pot forma un triunghi"
se cere afi*area unui mesa+.
2. I' se calculeze valoarea funciei f definit' pe mulimea numerelor reale pentru un x
citit,
T x%I6 ptr. xA8
M9T x!16 ptr. 8QxQ28
T x%8x!K6ptr. xB28
3. I' se afi*eze suma cifrelor unui num'r natural dat.
Indcae, Ie deta*eaz' fiecare cifr' de la sf8r*itul num'rului calcul8nd restul
&mp'ririi num'rului la 1; num'rul r'mas dup' desprinderea cifrei este c8tul &mp'ririi
la 1.
4. Fiind dat' valoarea unui num'r natural" se cere s' se tip'resc' aceast' valoare &n
scriere roman'.
Indcae, <n algoritm se urm're*te scrierea *i deta*area ordinelor romane de la cifrele
cele mai mari p8n' la cele mai mici (4.1" 7.1" 5.1" I.1)" evideniind separat
1L
cifrele 3.H" V.H" P.H *i grupurile 74.R" 57.R" I5.R care pot s' apar' o
singur' dat' &n reprezentarea roman' a num'rului.
5. I' se calculeze suma *91F!2F!IF!!nF.
6. I' se calculeze produsul /92;G;K;U;1<;;n" unde n92k.
7. I' se calculeze suma *91
2
!2
2
!I
2
!G
2
!!n
2
.
8. I' se calculeze suma *91%1;2!1;2;I%..J1;2;I;;n.
9. I' se transforme un num'r din baza 1 &n baza pD1.
10. I' se transforme un num'r din baza pD1 &n baza 1.
1N