Sunteți pe pagina 1din 84

Reprezentarea numereIor in memoria

caIcuIatoruIui
GeneraIitati
Putem reprezenta memoria calculatorului ca un sir de celule numite biti, fiecare celula putind
contine la un moment dat un 0 sau un 1 . 8 biti adiacenti formeaza un byte. Pentru ca o
informatie aflata in memorie sa fie utilizabila, trebuie sa stim unde anume se afla (la ce adresa).
Ce mai mica unitate de adresare este byte-ul.

Quantities of bytes
SI prefixes (decimal) IEC prefixes (binary)
Binary usage (often with KB for B)
!alue "ame !alue "ame
1000
1
= 10
3
kilobyte (kB) 1024
1
= 2
10
= 1.02410
3
kibibyte (KiB)
1000
2
= 10
6
megabyte (MB) 1024
2
= 2
20
1.04910
6
mebibyte (MiB)
1000
3
= 10
9
gigabyte (GB) 1024
3
= 2
30
1.07410
9
gibibyte (GiB)
1000
4
= 10
12
terabyte (B) 1024
4
= 2
40
1.10010
12
tebibyte (iB)
1000
!
= 10
1!
"etabyte (#B) 1024
!
= 2
!0
1.12610
1!
"ebibyte (#iB)
1000
6
= 10
1$
e%abyte (&B) 1024
6
= 2
60
1.1!310
1$
e%bibyte (&iB)
1000
7
= 10
21
'ettabyte ((B) 1024
7
= 2
70
1.1$110
21
'ebibyte ((iB)
1000
$
= 10
24
yottabyte ()B) 1024
$
= 2
$0
1.20910
24
yobibyte ()iB)
SI (*y+t,me -.ter.atio.al /01.it2+) IEC (-.ter.atio.al
&le3trote34.i3al 5ommi++io.)
ibibyte (a 3o.tra3tio. o6 kilo bi.ary byte
-. "ra3ti3a7 .8mar8l /e byte+ i.tr98. kilobyte e+te ambig88 :
#$
%
= 17000 byte+ +a8 &
#$
' #$&( bytes
Un grup de biti de dimensiune fia formeaza un cuvint.(word) !ungimea cu"intului este foarte
importantata in ar#itectura calculatorului. $n 1%&0 $'( )&0 cu"intul era de )* biti. $n 1%80 intel
808& folosea cu"inte de 1&biti, +ista calculatoare care folosesc cu"inte de &, de biti.
Pentru reprezentarea numerelor fiam de la inceput numarul n de biti pe care se face
reprezentarea- prin urmare reprezentarea oricarui numar "a fi un sir de n cifre 0 sau 1. .aptul
ca n este fiat face ca sa nu putem reprezenta orice numar intreg, ci doar numerele dintr-un
anumit inter"al, fiat o data cu alegerea lui n.
Conversii i operaii n diferite baze de numeraie
/om studia con"ersia numerelor 0ntregi 1i fractionare din baza 10 0ntr-o baz2 oarecare, 0n special
baza *, 1&,1i 8, precum 1i pe con"ersia in"ers2, dintr-o baz2 oarecare 0n baza 10, mai ales din
baza 1&, * 1i 8 0n baza 10 precum si modul de realizare a con"ersiei din baza 1& direct 0n baza *
sau 8 1i in"ers. /om prezentata opera3ii simple (adun2ri, sc2deri) 0n diferite baze de numera3ie.
Un sistem de numera3ie este constituit dintrr-o baza (b), o multime de simboluri denumite cifre si
din regulie de reprezentare a numerelor. 4um2rul simbolurilor distincte pentru cifrele sistemului
este egal cu baza (b). 5eci pentru 6
baza b7* (sistemul de numeratie binar) simbolurile "or fi cifrele 0 1i 1.
baza b78 (sistemul de numeratie octal) simbolurile "or fi 0,1,*,),,,8,&,9
baza b710(sistemul de numeratie zecimal) simbolurile "or fi 0,1,*,),,,8,&,9,8,%
baza b71& (sistemul de numeratie #eazecimal) simbolurile "or fi
0,1,*,),,,8,&,9,8,%,:,',C,5,+,..
;e obser"2 c2 pentru numerele scrise 0ntr-o baz2 mai mare dec<t baza 10 (zecimal) se folosesc
1i alte simboluri (litere) pe l<ng2 cifrele obi1nuite din baza 10. :stfel, 0n cazul numerelor scrise 0n
#eazecimal, literele :,',C,5,+,. au ca 1i "alori asociate 10,11,1*,1),1,,18. Pentru a face u1or
distinc3ie 0ntre numerele scrise 0ntr-o anumit2 baz2, la sf<r1itul num2rului se adauga intre
paranteze baza.
+emple6 100101001(*), sau 19:&'(1&).
/aloarea
0n zecimal
/aloarea
0n
4um2rul binar
coresp. cifrei
4um2rul binar
coresp. cifrei
#eazecim
al
#ea octal
0 0 0000 000
1 1 0001 001
* * 0010 010
) ) 0011 011
, , 0100 100
8 8 0101 101
& & 0110 110
9 9 0111 111
8 8 1000
% % 1001
10 : 1010
11 ' 1011
1* C 1100
1) 5 1101
1, + 1110
18 . 1111
Conversia numerelor din baza 10 n baza 2, 8, 16
Conversia prii ntregi
I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I = 31(10)
I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I = 37 (8)
I I I I I I I I I I I I I I I I I I I I I I I I I I I I
I I I = 11111 (2)
I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I = 1F (16)
:lgoritmul const2 0n 0mp2r3irea succesi"2 a num2rului scris 0n baza 10 la baza spre care se
dore1te con"ersia (se 0mparte num2rul la baz2, iar 0n continuare se 0mparte c<tul ob3inut la baz2
1.a.m.d. p<n2 c<nd c<tul de"ine 0), dup2 care se iau resturile ob3inute 0n ordine in"ers2, care
constituie "aloarea num2rului 0n baza cerut2. =rebuie subliniat c2 pentru numerele care con3in at<t
parte 0ntreag2 c<t 1i parte fractionara trebuie con"ertite separat partea 0ntreag2 1i cea fractionara.
+emplu6
;2 se con"erteasc2 numerul 0ntreg ,9 din baza 10 0n baza * .
,9 >* 7 *) r 1
*) >* 7 11 r 1
11 >* 7 8 r 1
8 >* 7 * r 1
* >* 7 1 r 0
1 >* 7 0 r 1
:stfel, lu<nd resturile 0n ordine in"ers2 ob3inem ,9 (10) 7 101111 (*)
;2 se con"erteasc2 numerul 0ntreg ,9 din baza 10 0n baza 1& .
,9 > 1& 7 * r 18
* > 1& 7 0 r *
,9 (10) 7 101111 (*) 7 *. (1&)
+ist2 1i o metod2 mai rapid2 de con"ersie a numerelor 0ntre bazele *,8 1i 1& 3in<nd cont c2
pentru fiecare cifr2 #ea eist2 , cifre binare corespondente 1i pentru fiecare cifr2 0n octal eist2 )
cifre binare dup2 tabelul care urmeaz26
,9 (10) 7 101 111 (*) 7 *. (1&) 7 89 (8)
?ruparea cifrelor din bazele *, 8 sau 1& se face @dinspre "irgul2 spre etremit23i@, adic2 la
numerele 0ntregi de la dreapta la st<nga (prin completare cu zerouri la st<nga num2rului dac2 este
cazul, deci 0n partea care nu-i afecteaz2 "aloarea), iar la numerele zecimale gruparea se face de
dup2 "irgul2 de la st<nga la dreapta, prin ad2ugare de zerouri la dreapta num2rului.
+ercitiu6 ;a se con"erteasca in baza 1&, * si 866
),9(10) 7
,)8(10) 7
Conversia prii fractionare
Pentru a con"erti un num2r subunitar (deci partea frac3ionar2 a unui num2r) din baza 10 0ntr-o
baz2 oarecare se fac 0nmul3iri succesi"e ale p2r3ilor frac3ionare p<n2 c<nd se aAunge la parte
frac3ionar2 nul2, sau se aAunge la perioad2 sau se dep21e1te capacitatea de reprezentare (se
ob3in cifre suficiente, de1i algoritmul nu s-ar fi terminat). Ceea ce dep21e1te partea zecimal2 la
fiecare 0nmul3ire reprezint2 o cifr2 a num2rului 0n baza spre care se face con"ersia. +emplu sa
se con"erteasca numarul 0.,9 (10) in baza (*)6
0,,9 * 7 0, %,
0,%, * 71, 88
0,88 *7 1,9&
0,9& * 7 1,8*
0,8* * 7 1,0,
0,0, * 7 0,08
0,08 * 7 0,1&
0,1& * 7 0,)*
0,)* * 7 0,&,
0,&, * 7 1,*8
0,*8 * 7 0,8&
0,8& * 7 1,1*
0,1* * 7 0,*,
0,*, * 7 0,,8
0,,8 * 7 0,%&
0,%&* 7 1,.....
5eci 0,,9(10) 7 0,011 110 000 101 000 1 (*) 7 0,9881(1&) 7 0,)&08(8)
Con"ersia unui num2r care are at<t parte 0ntreag2 c<t 1i parte fractionara se face con"ertind pe
r<nd partea 0ntreag2 1i cea fractionara
+emplu6
;2 se reprezinte 0n baza * si 1& num2rul real 1,,98
Bb3inem6 1,(10) 7 + (1&) 7 1110(*),
iar 0,98(10) 7 0,1100(*) 7 0,C(1&).
5eci 1,,98(10) 7 1110,1100(*) 7 +,C(1&)
Conversia unui numr dintr-o baz oarecare n baza 10
;e face prin adunarea puterilor bazei inmultite cu cifra de pe pozitia corespunzatoare.
+emplu6
;e d2 num2rul 0ntreg 0n #eazecimal ):8(1&) 1i se cere "aloarea sa 0n baza 106
4 7 81&e0 C 101&e1 C )1&e* 7 8 C 101&C ) *8& 7 %)&(10)
;e d2 num2rul 0n binar 110,11(*) 1i se cere "aloarea sa 0n zecimal , 0n #eazecimal si octal6
4 7 110,1100(*) 71 *e* C 1 *e1 C 0*e0 C 1 1>* C 11>*e* 7&.98(10) 7 &,C(1&) 7 &,&
(8)
;e d2 num2rul frac3ionar 0,),1(8) 1i se cere "aloarea sa 0n baza 10
4 7 )D8
E1
C ,D8
E*
C 1D8
E)
7 )>8 C,>&, C 1>81* 7 0.,)%,(10)
Oera!ii simle cu numere scrise n di"erite baze
:dunarea
:dunarea se face dup2 acelea1i reguli ca 0n zecimal, cu obser"a3ia c2 cifra cea mai mare
dintr-o baza Fb@ "a fi b-1 (adic2 % in zecimal, 9 in octal, 1 in binar 1i . 0n #eazecimal). 5eci dac2
prin adunarea a dou2 cifre de rang Fi@ se "a ob3ine un rezultat mai mare dec<t b-1, "a apare un
transport spre cifra de rang urm2tor Fi@C1, iar pe pozi3ia de rang Fi@ "a r2m<ne restul 0mp2r3irii
rezultatului adun2rii cifrelor de rang Fi@ la baz2. =ransportul spre cifra de rang Fi@C1 "a de"eni o
nou2 unitate la suma cifrelor de rang Fi@C1, adic2 se "a mai aduna acel transport 1.
+emple6
1111 1 11 11
01010110(*)C 1)&,(8)C &58:)*(1&)C
10110101(*) )9*1(8) ))+,C8(1&)
100001011(*) 8)08(8) :1&+.:(1&)
;-a marcat transportul de o unitate la cifra de rang superior prin scrierea unui 1 deasupra
cifrei de rang superior la care s-a f2cut transportul.
+emple6
;2 se adune cele * numere 0ntregi ),9(10) 1i ,)8(10) con"ertite mai sus 0n bazele 1& si 8 si
s2 se "erifice rezultatul prin con"ersia lui in baza 10
),9(10) C ,)8 (10) 7 988(10)
18'(1&) C 1'&(1&) 7 )11(1&). /erificare6 )11(1&) 7 )D*8&C1D1&C1 7 988
8))(8) C &&& (8) 7 1,*1(8). /erificare61,*1(8) 7 1D81*C,D&,C*D8C1 7 988
;c2derea
;i pentru sc2dere sunt "alabile regulile de la sc2derea din zecimal 1i anume6 dac2 nu se
pot sc2dea dou2 cifre re rang Fi@ (adic2 cifra desc2zutului este mai mic2 dec<t a sc2z2torului) se
face F0mprumut@ o unitate din cifra de rang urm2tor (Fi@C1). Gn cazul 0n care cifra din care se
dore1te realizarea F0mprumutului@ este 0, se face F0mprumutul@ mai departe la cifra de rang
urm2tor.
+emple6
. . . .
01011010(*) E :)5,(1&) E
01001100(*) 9 81' (1&)
00001110(*) *+'%(1&)
;2 se scad2 cele dou2 numere 0ntregi ),9(10) 1i ,)8(10) con"ertite mai sus 0n bazele de
numera3ie 1& 1i 8 1i s2 se "erifice rezultatul prin con"ersia lui 0n zecimal.
,)8 E ),9 7 %1(10)
1'&(1&) E 18'(1&) 7 8'(1&). /erificare6 8'(1&) 7 8D1&C11 7 %1
&&&(8) E 8))(8) 7 1))(8). /erificare 1))(8) 7 1D&,C)D8C) 7 %1
Reprezentarea numereIor intregi negative
.acind con"entia ca prima pozitie binara sa fie semnul numarului (0 pentru poziti" si 1 pentru
negati") se pot reprezenta atit numere poziti"e cit si negati"e. $n plus, numerele negati"e se
reprezinta prin comlementul lor fata de *.
ExempIu1: sa se reprezinte pe 8 pozitii binare numerele -,)(10) si C,)(10)
,)(10) 7 *'(1&),
-pentru a reprezenta numarul negati" -*' "om face complementul fata de 100(1&)6
100 E
*'
58(1&) este reprezentarea numarului -,)(10)

ExempIu2 6 sa se reprezinte pe )* pozitii binare numarul -818 (10)
818(10)7*0)(1&)
/om face complementul fata de 100000000(1&)6
100000000 E
*0)
.....5.5 este reprezentarea numarului -818 (10)
Exercitiu 6 sa se reprezinte pe )* pozitii binare numarul -&1) (10)
ExempIu36 ;a se afle numarul in baza 10 a carui reprezentare este
.....*01 (1&)
/om face complementul fata de 10000000 (1&)
100000000-
.....*01
5.. (1&) 7 -1)1&e*C181&e1C187 -)88)(10)
Exercitiu 6 ;a se afle numarul in baza 10 a carui reprezentare este
.....18& (1&)
Reprezentarea numereIor fractionare in virguIa mobiIa.
;e face conform standardului #$$$ %&' ($nstitute of +lectrical and +lectronics +ngineers )
Reprezentarea in simpIa precizie (32 pozitii binare).
5e eemplu numarul 0,18&*8 se reprezinta ca6
0.18&*8 * 7 0.)1*8
0.)1*8 * 7 0.&*8
0.&*8 * 7 1.*8
0.*8 * 7 0.8
0.8 * 7 1.0
0.18&*8 (5) 7 0.00101 (*) 7 1.01 H * e -) in forma normalizata
/om reprezenta numarul sub forma semn exponent mantisa:
1bit 8 biti *) biti
semnul (s) 7 0 (numar poziti")
eponentul (+) 7 1*9 - ) 7 1*, (10) 7 9C (1&) 7 0111 1100 (*)
mantisa (m) 7 01000000000000000000000 (etindem mantisa la *) biti)
:m omis primul bit (partea intreaga) care este intotdeauna 1.

00111110001000000000000000000000

Iegrupind cite , pozitii binare obtinem6
0011 1110 0010 0000 0000 0000 0000 0000 (*) 7 )+*00000 (1&)
% E & $ $ $ $ $

4um2rul de bi3i rezer"a3i pentru eponent determin2 inter"alul de numere reale reprezentabile 0n
calculator. 4um2rul de bi3i rezer"a3i pentru mantis2 determin2 precizia de reprezentare. Pe 8 bi3i
se pot reprezenta numere 0ntregi f2r2 semn de la 0 la *88, deci eponentul e poate lua "alori de
la -1*& la C1*9 deoarece
"alorile 0 si *88 sint rezer"ate.
;a se reprezinte 0n simpla precizie numerele6 **8,18 -*9, *8 0,1 1,*
7 **8,18 7 **8 C 0,18
**8 7 **, C , 7 1,1& C , 7 +, (1&) 71110 0100 (*)
0,18 * 7 0,)
0,) * 7 0,&
0,& * 7 1,*
0,* * 7 0,,
0,, * 7 0,8
0,8 * 7 1,&
0,& * 7 1,*
0,* * 7 0,,
0,, * 7 0,8
0,8 * 7 1,&
......................
7 1110 0100,0010 0110 0110 0110 0110J 7
1,1100 1000 0100 1100 1100 1100 J * e9 sub forma normalizata
s 7 0
+ 79C1*9 71), (5) 7 1*8 C & 7 81& C & 7 8& (1&) 7 1000 0110 (*)
m 7 1100 1000 0100 1100 1100 110 (*) (limitam mantisa la *) biti)
Ieprezentarea 0n "irgula mobila, simpla precizie pentru **8,18 este6
s E m
0 10000110 11001000010011001100110 7
0100 0011 0110 0100 0010 0110 0110 0110 (*) 7 43 64 26 66 (16)
4 3 6 4 2 6 6 6
x = -27, 25
*9(10) 7 1&C11 7 1' (1&)7 1 1011 (*)
0.*8* 7 0.8
0.8 * 7 1.0
0,*8 7 0,01(*)
7 11011,01 7 1,101101K *e, (scris sub forma normalizata)
s 71 (numar negati")
+ 7 , C 1*9 7 1)1 (10) 7 1*8 C ) 7 8 1&C ) 7 8) (1&) 7 1000 0011(*)
m 710110100000000000000000 (etindem mantisa la *) biti)

5eci reprezentarea 0n "irgula mobila, simpla precizie pentru E*9,*8 este 6
s + m
1 1000 0011 10110100000000000000000 7
1100 0001 1101 1010 0000 0000 0000 0000 (*)7 C15:0000 (1&) 7 -*9,*8(10)
C 1 5 : 0 0 0 0

x = 0,1
0,1 * 7 0,*
0,* * 7 0,,
0,, * 7 0,8
0,8 * 7 1,&
0,& * 7 1,*
0,* K* 7 0,,
0., * 7 0,8
0.8 * 7 1,&
0.& * 7 1,*
0,1(10) 7 0, 00011001100110011J
7 1,100110011001100110011001100JK*e-,
s 7 0 (numar poziti")
+ 7 -,C1*9 7 1*)(10) 7 11* C 11 7 9' (1&) 7 0111 1011(*)
m 710011001100110011001101
5eci reprezentarea 0n "irgula mobila, simpla precizie a numarului zecimal 0,1 este 6
s e m
0 01111011 10011001100110011001100 7
0011 1101 1100 1100 1100 1100 1100 1100 7 )5CCCCCC (1&)
) 5 C C C C C C
x = 1,2
0,* * 7 0,,
0,, * 7 0,8
0,8 * 7 1,&
0,& * 7 1,*
0,* K* 7 0,,
0,, * 7 0,8
0,8 * 7 1,&
0,& * 7 1,*
0,* K* 7 0,,
...................
7 1,00110011001100110011001 100... 7
1,0011 0011 0011 0011 0011 001 *e0 (sub forma nomalizata)
s 7 0
e 7 0C1*979. (1&) 7 111 1111(*)
m 7 00110011001100110011001 (*)
Ieprezentarea 0n "irgula mobila, simpla precizie pentru 1,* este6
s e m
0 01111111 00110011001100110011001 7
0011 1111 1001 1001 1001 1001 1001 1001 7 ).%%%%%% (1&)
) . % % % % % %
Reprezentarea in dubIa precizie (64 pozitii binare) se face la fel ca reprezentarea in simpla
precizie cu deosebirea ca eponentul se reprezinta pe 11 biti iar mantisa pe 8* de biti iar decalaAul
este 10*).
Ieprezentarea 0n "irgula mobila, dubla precizie pentru 1,* (10)7
1,0011 0011 0011 0011 0011 001 *e0 (*) (sub forma nomalizata) este6
s 7 0
+ 7 0 C 10*) 7 )..(1&) 7 011 1111 1111(*)
m 7 0011001100110011001100110011001100110011001100110011 (*)
s + m
0011111111110011001100110011001100110011001100110011001100110011
) . . ) ) ) ) ) ) ) ) ) ) ) ) )
7 )..)))))))))))))(1&)
4um2rul de bi3i rezer"a3i pentru eponent determin2 inter"alul de numere reale reprezentabile 0n
calculator. 4um2rul de bi3i rezer"a3i pentru mantis2 determin2 precizia de reprezentare. Pe 11 bi3i
se pot reprezenta numere 0ntregi f2r2 semn de la 0 la *0,8, deci eponentul e poate lua "alori de
la -10** la C10*) deoarece
"alorile 0 si *0,9 sint rezer"ate.
Reprezentarea informatiei aIfanumerice
$n 1%&) > 1%&, firma $'(, introduce codul EBCDIC (Etended Binary Coded Decimal Interc#ange
Code) o data cu faimoasa serie de calculatoare (mainframe) $'(>)&0. $n codul +'C5$C, fiecare
caracter se reprezinta pe 8 cifre binare care permit construirea a *8& coduri in contrast cu codul
deAa eistent ASCII pe 9 biti care permitea construirea a 1*8 caractere.
Codul ASCII (American Standard Code for Information Interc#ange) inceput in 1%&0 bazat pe
alfabetul englez, publicat in 1%&) si re"izuit in1%&9 apoi etins la *8& caractere a de"enit codul
adoptat de aproape orice calculator modern in special de ersonal comuters . :bre"ierea
:;C$$L sau :;C$L se refera la un sir terminat cu caracterul null cunoscut si sub numele de sir C,
cu care "om lucra frec"ent in programarea in limbaA C.
=able :;C$$ E$
=:'!+ :;C$$ -$$
+emple de siruri :;C$$ terminate cu caracterul null6
4B/$4;B.= +U 7 ,+,.8&,%,+8),.,&8,*0,88800
4o"insoft +U7
4egru /oda %)7,+&8&99*98*08&&.&,&1*0)%))00
+ercitiu6 ;a se gaseasca numarul in baza 10 a carui reprezentare in "irgula mobila, simpla
precizie, corespunde sirului de caractere :;C$$ M$rim@.
Unicode tabIe (UTF- 16 biti) 65 536 caractere
$
$
$
#
$
&
$
%
$
(
$
)
$
*
$
+
$
,
$
-
$
.
$
B
$
C
$
/
$
E
$
0
#
$
#
#
#
&
#
%
#
(
#
)
#
*
#
+
#
,
#
-
#
.
#
B
#
C
#
/
#
E
#
0

$$
$$
9
*ymb
ol+
$$
&$
; < = > ? @ A ( ) B C 7 9 . D 0 1 2 3 4 ! 6 7 $ 9 : E F = G H
I8m
ber
$$
($
JKB 5 L & M GN - O K P MI Q # R S * 1T UV) ( W X Y Z [
Kl"4a
bet
$$
*$
\ a b 3 / e 6 g 4 i ] k l m . o " ^ r + t 8 _ ` % y ' a b c d 
$$
,$
e f g h ij k l mn o pq r qq s 0 t u v w xy z{ | } q ~
$$
.$

$$
C$
- Pati.
$$
E$
, 2
$#
$$

$#
&$

$#
($
n N n N n n D O p} R r R j R r S s S s S s
$#
*$
n { T t T t T t u U u U U WwY y Z z Z z r ~ l
$#
,$
O g
$#
.$
O o q P 8 a 2 | T t [ U u O D YyZ z Z 2 S g 5 p
$#
C$
| ] | I DDd||] |Np U U U o
$#
E$
a G g G g K k q q Z _ | DDd

H| N A O o
$&
$$
A E E O R r R r S s T t
$& q qqqqqqq q q q q q
&$
$&
($
qqqqq q qqqqq q q q q q e
$&
*$
! " # $ %
$&
,$
& ' ( ) * + , - . / 0 1 2 3 4 5 6 7
$&
.$
8 9 q q ^ qq q q q q q
$&
C$
qqqqq q l ` q q q q q q qqqqq ` y ' q q
$&
E$
- ' ` q qqqqq q q q q qqq q qqqqqqqq q q q q q
$%
$$
q q q qqq q q q q qqqq qqqqqqqqq q q q qq
$%
&$
qqq q q qqqqq q q q qqqq qqqqqqqqq q q q qq
$%
($
qqq q qqqqq q q q q qq qqqqqqqqq q q q qq
$%
*$
qqqqq q qqqqq q q q qqqq q qqqqqq q q E q
$%
,$
qqqq q q Greek
$%
.$
q Y u c q i u o c q 0 i k v o
$%
C$
a p o t u e o u e q 0 T T c q F [
$%
E$
, qQ q [ _ X x G | j x g c | Oc a qqqq q q q q q
ALGORITMI DE REZOLVARE A PROBLEMELOR
PSEUDOCODE
Forma cea mai des utiIizata pentru reprezentarea aIgoritmiIor
este pseudocode, un Iimbaj de niveI inaIt, informaI care utiIizeaza structuriIe
foIosite in IimbajeIe de programare. Poate fi
,imbogatit" cu descrieri in IimbajuI naturaI si cu notatii matematice. Sintaxa
este usor de citit, iar programatoruI se poate concentra asupra aIgoritmuIui
fara sa fie atent Ia greseIi de sintaxa. O data scris in pseudocode, programuI
poate fi usor
tradus intr-un Iimbaj de programare, compiIat, Iink-editat si executat.
VocabuIaruI utiIizat este vovabuIaruI domeniuIui caruia
ii apartine probIema, si nu aceI a IimbajuIui de impIementare.
StructuriIe foIosite sint:
SEQUENCE de actiuni executate una dupa aIta
IF-THEN-ELSE in care se face o decizie pentru a aIege
o secventa de actiuni dintre ramuri doua posibiIe
WHILE in care o secventa de actiuni este repetata
cit timp o conditie pusa Ia inceput este indepinita
REPEAT-UNTIL in care o sevcenta de actiuni este repetata
pina cind o conditie pusa Ia sfirsit este indepinita
FOR in care o secventa este repetata de un numar de ori
determinat de o conditie
SWITCH - ENDSWITCH in care se aIege o secventa din mai muIte posibiIe
ExempIe.
SEQUENCE
get A, B;
C = A+ B;
print C;
IF-THEN-ELSE
IF condition THEN
sequence 1
ELSE
sequence 2
ENDIF
if A > B then
print A;
eIse
print B;
endif
WHILE
WHILE condition
sequence
ENDWHILE
WhiIe A < B
A = A+1;
ENDWHILE
REPEAT-UNTIL
REPEAT
sequence
UNTIL condition
Repeat
A = A+1;
UntiI A > B;
FOR
FOR iteration bounds
sequence
ENDFOR
for (i=0; i<10;i=i+1)
A=A*2;
endfor
SWITCH - ENDSWITCH
SWITCH expression
CASE 1 :
sequence 1
CASE 2 :
sequence 2
... ........
CASE n :
sequence n
DEFAULT:

defauIt sequence
ENDSWITCH
Switch (a)
Case 'a':
A=A+B;
Case 'b':
A=A-B;
Case 'c':
A=A*B;
DefauIt:
Endswitch;
FLOWCHART

ProbIema 1: se dau * numere : si '. ;a se afiseze "aloarea MAX reprezentind
maimul dintre ele.
Get A,B;
If (A > B)
MAX = A;
EIse
MAX = B;
Endif;
Print "MaximuI este :", MAX;
ProbIema 2: se dau ) numere : , ' si C. ;a se afiseze "aloarea MAX reprezentind
maimul dintre ele.
Get A,B,C;
If (A > B)
If (A > C)
MAX = A;
eIse
MAX = C;
endif;
EIse
If (B > C)
MAX = B;
eIse
MAX = C;
Endif;
Endif;
Print "MaximuI este :" MAX;
ProbIema 3: se da numarul natural N. ;a se calculeze si sa se afiseze "aloarea
FACTOR reprezentind produsul tuturor numerelor naturale de la 1 la N (notatia
matematica 4N, citit 4 factorial sau factorial de 4).
+emple :
3! = 1x2x3= 6
6! = 1x2x3x4x5x6 = 720
PSEUDOCODE:
Get N; // N = 5
FACTOR = 1;
K = 2;
WHILE (K <= N) // K = 6
FACTOR = FACTOR * K; // FACTOR = 120
K = K + 1;
ENDWHILE;
Print "FactoriaI de ", N, " =", FACTOR;
(NumereIe in rosu reprezinta ultimele vaIori Iuate de variabiIe iar caractereIe
"//" introduc un comentariu pe Iinia curenta)
Limbaj C:
void main ()
{ int K, N, FACTOR;
cout << "Introduceti numarul natural N :";
cin N;
FACTOR ! ";
K ! #;
$%ile (K <! N)
{
FACTOR ! FACTOR & K;
K ! K ' ";
(
cout << "Factorial de " << N << " !" << FACTOR << endl;
(
PASCAL:
// ProbIema 3: se da numaruI naturaI N.
// Sa se caIcuIeze si sa se afiseze vaIoarea FACTOR
// reprezentind produsuI tuturor numereIor naturaIe
// de Ia 1 Ia N (notatia matematica N!, citit N factoriaI
// sau factoriaI de N).
// ExempIe :
// 3! = 1x2x3= 6
// 6! = 1x2x3x4x5x6 = 720
VAR N, FACTOR, K : integer;
begin
write ('Introduceti numaruI naturaI N:' );
readIn (N); // N = 5
FACTOR := 1;
K := 2;
whiIe (K <= N) do
begin
FACTOR := FACTOR * K;
K := K + 1;
end;
writeIn ('FactoriaI de ', N, ' = ', FACTOR);
readIn;
end.
B alta implementare mai condensata a algoritmului de calcul pentru 4N este 6
Get N; // N = 6
FOR (FACTOR = 1, K = 1; K <= N; K = K+1)
FACTOR = FACTOR * K; // FACTOR = 720 K = 7
ENDFOR;
Print N, "! = ", FACTOR, " K = ", K // 6! = 720 K = 7
(NumereIe in rosu reprezinta uItimeIe vaIori Iuate de variabiIe)
(SiruI de caractere in aIbastru va fi afisat de program)
ProbIema 4: se da numarul natural N. ;a se calculeze si sa se afiseze "aloarea
SIGMA reprezentind suma tuturor numerelor naturale de la 1 la N (notatia
matematica 1 /e la 1 la I).
+emplu6
(10) = 1 C 2 C 3 C 4 C ! C 6 C 7 C $ C 9 C 10 = !!
Get N; // N =10
For (SIGMA = 0, K = 1; K <= N; K++)
SIGMA = SIGMA + K; >> SIGMA = 55 K = 11
EndFor;
Print "1 (23 "3 4) = ", SIGMA // 1 (#$) ' ))
(NumereIe in rosu reprezinta uItimeIe vaIori Iuate de variabiIe)
(SiruI de caractere in aIbastru va fi afisat de program)
PASCAL:
//ProbIema 4: se da numaruI naturaI N.
//Sa se caIcuIeze si sa se afiseze vaIoarea
//SIGMA reprezentind suma tuturor numereIor naturaIe
//de Ia 1 Ia N (notatia matematica ? de Ia 1 Ia N).
//ExempIu:
//S(10) = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 = 55
program probIema4;
Var N, K, SIGMA : integer;
begin
write ('Introduceti numaruI naturaI N:');
readIn (N);
SIGMA :=0;
For K := 1 to N do
SIGMA := SIGMA + K;
WriteIn (' SIGMA (', N, ') = ', SIGMA);
readIn;
end.
)) *ro+lema ,: -e da numarul natural N. /a -e calcule0e -i -a -e
)) a1i-e0e valoarea /I23A re4re0entind -uma tuturor numerelor naturale
)) de la " la N (notatia matematica /I23A de la " la N).
)) 56em4lu:
)) /I23A("7) ! " ' # ' 8 ' , ' 9 ' : ' ; ' < ' = ' "7 ! 99
>include <io-tream
u-in? name-4ace -td;
void main ()
{ int N, K, /I23A ! 7;
cout << "Introduceti numarul natural N :";
cin N;
1or (/I23A ! 7, K ! "; K <! N; K'')
/I23A ! /I23A ' K;
cout << "/I23A (" << N << ") ! " << /I23A << endl;
(
(
ProbIema 5: se da numarul real A. ;a se calculeze si sa se afiseze "aloarea sa
absoluta ABS (notatia matematica OAO citit modul de :).
+emple6
b 10.!1b = 10.!1
b910.!1b = 10.!1
Get A; // A = -100.0
IF (A > 0.0)
ABS = A;
EIse
ABS = -A; // ABS = - (-100.0) = 100.0
Print "|", A', "| = ", ABS; // |-100.0| = 100.0
ProbIema 6: se dau numerele reale A si B. ;a se inlocuiasca "aloarea lui A cu
"aloarea lui B si "aloarea lui B cu "aloarea lui A. si apoi sa se afiseze A si B.
Get A, B; // A = 5.0 B = 6.0
AUX = B; // AUX = 6.0
B = A; // B = 5.0
A = AUX; // A = 6.0
Print "NumereIe A si B dupa inversare sint : ", A, ", ", B;
// NumereIe A si B dupa inversare sint : 6.0, 5.0
ProbIema 7: se dau numerele N si K. ;a se determine restul R al impartirii lui N la
K (notatia in limbaAul C este N%K, citit N modulo K). ;e stie ca in reprezentarea
numerelor intregi partea fractionara nu poate fi retinuta (se pierde). 4otiunea de
moduIo a fost introdusa in matematica de matematicianul si omul de stiinta german
KarI Friedrich Gauss in 1801 ( in 19%%, in teza sa de doctorat a demonstrat
teorema fundamentala a algebrei care spune ca orice poIinom are cel putin o
radacina in spatiuI numerelor compIexe).
Get N, K; // 12 5
Q = N / K; // 2
R = N - Q * K; // 12- 2*5 = 2
Print "RestuI impartirii Iui ", N " Ia ", K, " este : ", R;
// RestuI impartirii Iui 12 Ia 5 este : 2
$n limbaAul C se poate folosi direct operatia N%K, deci programul se poate scrie6
Get N, K;
R = N % K;
Print N " moduIo ", K, "este : ", R;
ProbIema 8: se da numarul real A. ;a se determine cel mai mare numar intreg
FLOOR mai mic sau egal cu A (cunoscut sub numele de fIoor (A) )si cel mai mic
numar intreg CEIL mai mare sau egal cu A (cunoscut sub numele de ceiI (A) . ;a se
afiseze FLOOR si CEIL.
ExempIe:
fIoor (10.51) = 10.00;
fIoor (-10.51) = -11.00;
Get A; // 10.51
If (A > 0.0)
FLOOR = A; >> FLOOR a fost definit ca numar intreg 10
CEIL = A + 1.00; // CEIL a fost definit ca numar intreg 11
EIse
FLOOR = A - 1.0; >> -11
CEIL = A; // -10
endif
Print "FLOOR = ", FLOOR, " CEIL = ", CEIL;
// FLOOR = 10 CEIL = 11
: se face distinctie intre sirul "FLOOR =" si "ariabila de tip intreg scalar FLOOR.
:ceeasi remarca pentru sirul "CEIL =" si "ariabila de tip intreg CEIL.
Problema 8 se mai poate modela astfel:
Get A;
FLOOR = fIoor (A); >> FLOOR a fost definit ca numar real
CEIL = ceiI (A); // CEIL a fost definit ca numar real
Print "FLOOR = ", FLOOR, " CEIL = ", CEIL;
.unctiile fIoor() si ceiI() sint puse la dispozitia programatorilor de catre librariile
(icrosoft standard ale limbaAului C.
ProbIema 9: se da numarul real A reprezentat in "irgula mobila dubla precizie . ;a
se rotunAeasca A la doua zecimale si sa depuna rezultatul in AR.
ExempIe:
A = 10.5134 atunci AR = 10.51
A = 10.5176 atunci AR = 10.52
A = 10.5150 atunci AR = 10.52
A = -10.5134 atunci AR = -10.51
A = -10.5174 atunci AR = -10.52
Get A; >> 5efinim A ca numar real in virgula mobila dubla precizie
>> 5efinim AR ca numar real in virgula mobila dubla precizie
If (A >= 0.0) // - 10.5184
AR = fIoor (100.0 * A + 0.5); // 1051.84 + 0.5 = 1052.34 1052.0
EIse
AR = ceiI (100.0 * A - 0.5); // -1051.84 - 0.5 = - 1052.34 -1052
AR = AR / 100.0; // -10.52
Print "NumaruI rotunjit AR= ", AR; // NumaruI rotunjit AR= -10.52
$n cele ce urmeaza "om utiliza functia de mai sus sub numele de RoundC ().
.unctia RoundC este o functie definita de utilizator si nu se regaseste in librariile
standard (icrosoft. .unctiile si rutinele
utilizator pot fi depuse intr-o librarie speciala creata de utilizator.
5e acum incolo, vom defini numerele intregi pe &, de biti cu Iong integer sau pe
scurt Iong, numerele intregi pe )* de biti cu integer, numerele intregi pe 1& biti cu
short integer sau pe scurt short, iar numerele reale cu doubIe care inseamna
virgula mobila dubla precizie, intr-o sectiune separata la inceputul algoritmului de
rezol"are a problemei.
Long P (-*e&), C*e&) -1)
Integer P (-*e)1, C*e)1-1)
Short P (-*e18, C*e18 - 1)

VECTORI
Un "ector este un obiect definit print marime si directie./ectorii pot fi reprezentati
sistematic intr-un sistem de coordonate carteziene. $n eemplul de mai Aos (:,:y)
este un vector fix care are punctul initial in originea aelor (0,0). /ectorul ' este un
vector Iiber (care nu porneste din origine).
4C3i
4e "om ocupa de "ectorii fii ( care pornesc din origine).
$mpreuna cu adunarea si inmultirea cu un scalar ei formeaza un satiu vectorial
deorece aceste operatii satisfac aiomele de asociati"itate, comutati"itate, eista
element unitate, si element in"ers, iar inmultirrea cu scalari este distributi"a fata de
adunare.
ceIe mai cunoscute spatii vectoriaIe sint spatiiIe EucIdiene in 2 si 3 ,dimensiuni
(reprezentarea vectoriIe find (x,y) si (x,y,z). GeneraIizind obtinem spatiaI n
dimensionaI Rn aIe carui eIemente
sint vectori de forma x = (x0,x1, x*, x), .. xn-1), unde adunarea vectoriIor si
inmuItirea cu un scaIar au proprietatiIe mai sus mentionate. SpatiuI vectoriaI Rn are
ca baza vectorii:
e0=(1,0,0,0.0)
e1=(0,1,0,0.0)
e2=(0,0,1,0,...0)
........
en-1=(0,0,0,0...1)
Orice vector in Rn poate fi exprimat cu ajutoruI vectoriIor din baza:
x= 1xiei7 (i se numesc componente ale "ectorului )
ProbIema 10: se da "ectorul 7 (0, 1, *, ),JJ%) apartinind spatiului I10, in
"irgula mobila dubla precizie . ;a se gaseasca si sa se afiseze maimul MAX dintre
toate componentele sale. 4e "om referi la componentele sale prin notatia QiR
doubIe max, x[10]; // 2 5 1 -1 7 8 10 3 2 6
short i;
get x;
max = x [0]; // max = 10
for (i = 1; i < 10; i++) // i = 8
if (x[i] > max)
max = x [i];
Endif;
Endfor;
Print ( "MaximuI este : ", max); // MaximuI este : 10
)) *ro+lema "7: -e da vectorul 6 ! (67, 6", 6#, 68,@@6=) a4artinind -4atiului R"7,
)) in vir?ula mo+ila du+la 4reci0ie . /a -e ?a-ea-ca -i -a -e a1i-e0e ma6imul
)) 3AA dintre toate com4onentele -ale. Ne vom re1eri la com4onentele -ale 4rin notatia
6BiC
>include <io-tream
u-in? name-4ace -td;
void main ()
{ dou+le ma6, 6B"7C; )) # 9 " D" ; < "7 8 # :
-%ort i;
cout << "Introduceti elementele vectorului 6 :";
cin 6 B7C 6 B"C 6 B#C 6 B8C 6 B,C 6 B9C 6 B:C 6 B;C 6
B<C 6 B=C;
ma6 ! 6 B7C; )) ma6 ! "7
1or (i ! "; i < "7; i'')
{
i1 (6BiC ma6)
ma6 ! 6 BiC;
(
cout << "3a6imul e-te : " << ma6 << endl; )) 3a6imul e-te : "7
ProbIema 11: se da "ectorul 7 (0, 1, *, ),JJ%) apartinind spatiului I10, definit
in "irgula mobila dubla precizie . ;a se gaseasca si sa se afiseze media aritmetica
(Pos si (4eg a numerelor poziti"e si negati"e.
doubIe SPos = 0.0, SNeg = 0.0, MPos = 0.0, MNeg = 0.0, x[10];
short i, kp = 0, kn = 0;
get x; >> -1 1 -* * -) ) -, , 0 0
for (i = 0; i < 10; i++) // i = 10
if (x[i] > 0.0)
SPos += x[i]; // SPos = 10
kp++; // kp = 4
EIse
// if (x [i] < 0.0)
SNeg += x[i]; // SNeg = -10
kn++; // kn = 6
Endif;
Endfor;
If (kp > 0)
MPos = SPos / kp; // Mpos = 2.5
Endif
If (kn > 0)
MNeg = SNeg / kn; //MNeg = 1.67
endif
Print ( "Media Nr. Pozitive =", MPos, "Media Nr Negative = ",MNeg);
Tema: ;a se modifice algoritmul de la problema 11 astfel incit numerele care sint egale cu
zero sa fie ignorate

Citirea dateIor de Ia consoIa, functia scanf
int scanf ( const c#ar D format, ... )-
Citeste date de la consola (fisierul standard de intrare stdin), le con"erteste, apoi le depune la
adresele specificate in conformitate cu parametrul format
Scanf ignora caracterele de tip FS#itespace@ (space, neSline, tab). 5aca format specifica mai
putine elemente decit au fost gasite in stdin elementele in eces "or fi ignorate. 5aca gaseste mai
putine elemente decit sepecificate de format
rezultatul nu poate fi pre"azut. 5aca se termina cu success functia returneaza
numarul de elemente citite. .ormat contine elemente de forma6
QTQDRQSidt#RQmodifiersRtypeR unde6
*
An optional starting asterisk indicates that the data is to be retrieved from -tdin but ignored, i.e. it is not stored
in the corresponding argument.
width Specifies the maximum number of characters to be read in the current reading operation
modifier
s
Specifies a size different from int (in the case of d, i and n), un-i?ned int (in the case of o, u and 6) or
1loat (in the case of e, 1 and ?) for the data pointed by the corresponding additional argument:
h : -%ort int (for d, i and n), or un-i?ned -%ort int (for o, u and 6)
l : lon? int (for d, i and n), or un-i?ned lon? int (for o, u and 6), or dou+le (for e, 1 and ?)
L : lon? dou+le (for e, 1 and ?)
type A character specifying the type of data to be read and ho it is expected to be read. See next table.
type Qualifying Input
Type of
argument
c
Single character: !eads the next character. "f a width different from # is specified, the
function reads width characters and stores them in the successive locations of the array
passed as argument. $o null character is appended at the end.
c%ar &
d Decimal integer: $umber optionally preceeded ith a ' or D sign. int &
e,5,1,?,2
Floating point: %ecimal number containing a decimal point, optionally preceeded by a ' or D
sign and optionally foloed by the e or 5 character and a decimal number. &o examples of
valid entries are '()*.#+) and (.#*e,
1loat &
o Octal integer. int &
-
String of characters. &his ill read subse-uent characters until a hitespace is found
(hitespace characters are considered to be blank, neline and tab).
c%ar &
u .nsigned decimal integer.
un-i?ned
int &
6,A /exadecimal integer. int &
Exemplu:
int n;
-can1 ("Ed",Fn);
Scrierea dateIor Ia consoIa, functia printf
int printf ( const c#ar D format, ... )-
Con"erteste date apoi le scrie la consola (fisierul standard de iesire stdout), in in conformitate cu
parametrul format.
Printf scrie si caracterele FS#itespace@ (space, neSline, tab). 5aca format specifica mai putine
elemente decit au fost gasite in lista elementele in eces "or fi ignorate. 5aca gaseste mai putine
elemente decit sepecificate de format
rezultatul nu poate fi pre"azut. 5aca se termina cu success functia returneaza
numarul de elemente scrise. .ormat contine elemente de forma6
TQflagsRQSidt#RQ.precisionRQlengt#Rspecifier unde6
specifie
r
Output Example
c 0haracter a
d or i Signed decimal integer 8=#
e Scientific notation (mantise1exponent) using e character 8.=#:9e'#
5 Scientific notation (mantise1exponent) using 5 character 8.=#:95'#
1 %ecimal floating point 8=#.:9
? .se the shorter of Ee or E1 8=#.:9
2 .se the shorter of E5 or E1 8=#.:9
o Signed octal :"7
- String of characters -am4le
u .nsigned decimal integer ;#89
6 .nsigned hexadecimal integer ;1a
A .nsigned hexadecimal integer (capital letters) ;FA
4 2ointer address G<77:7777
n
$othing printed. &he argument must be a pointer to a signed int, here the number of characters ritten
so far is stored.
E A E folloed by another E character ill rite E to -tdout.
&he tag can also contain flags, width, .precision and modifiers sub'specifiers, hich are optional and follo these specifications:
flags description
D 3eft'4ustify ithin the given field idth5 !ight 4ustification is the default (see width sub'specifier).
'
6orces to preceed the result ith a plus or minus sign (' or D) even for positive numbers. 7y default, only negative numbers
are preceded ith a D sign.
(space
)
"f no sign is going to be ritten, a blank space is inserted before the value.
>
.sed ith o, 6 or A specifiers the value is preceeded ith 7, 76 or 7A respectively for values different than zero.
.sed ith e, 5 and 1, it forces the ritten output to contain a decimal point even if no digits ould follo. 7y default, if no
digits follo, no decimal point is ritten.
.sed ith ? or 2 the result is the same as ith e or 5 but trailing zeros are not removed.
7 3eft'pads the number ith zeroes (7) instead of spaces, here padding is specified (see width sub'specifier).
width description
(number
)
8inimum number of characters to be printed. "f the value to be printed is shorter than this number, the result is padded ith
blank spaces. &he value is not truncated even if the result is larger.
&
&he width is not specified in the format string, but as an additional integer value argument preceding the argument that has
to be formatted.
.
precision
description
.number
6or integer specifiers (d, i, o, u, 6, A): precision specifies the minimum number of digits to be ritten. "f the value to be
ritten is shorter than this number, the result is padded ith leading zeros. &he value is not truncated even if the result is
longer. A precision of 7 means that no character is ritten for the value 7.
6or e, 5 and 1 specifiers: this is the number of digits to be printed after the decimal point.
6or ? and 2 specifiers: &his is the maximum number of significant digits to be printed.
6or -: this is the maximum number of characters to be printed. 7y default all characters are printed until the ending null
character is encountered.
6or c type: it has no effect.
9hen no precision is specified, the default is ". "f the period is specified ithout an explicit value for precision, 7 is
assumed.
.&
&he precision is not specified in the format string, but as an additional integer value argument preceding the argument that
has to be formatted.
lengt
h
description
%
&he argument is interpreted as a -%ort int or un-i?ned -%ort int (only applies to integer specifiers: i, d, o,
u, 6 and A).
l
&he argument is interpreted as a lon? int or un-i?ned lon? int for integer specifiers (i, d, o, u, 6 and A),
and as a ide character or ide character string for specifiers c and -.
H &he argument is interpreted as a lon? dou+le (only applies to floating point specifiers: e, 5, 1, ? and 2).
ExempIu:
int n;
4rint1 ("Ed",n);
Pentru a folosi functiile scan" si rint" trebuie inclus fisierul F#eader@ stdio()
$n limbaAul CCC putem utiliza obiectele cin si cout pentru a primi si trimite date la fisierele
standard de intrare si iesire. +ste necesara includerea fisierului de tip #eader iostream(
include UiostreamV-
Pentru a se e"ita ambiguitatea numelor folosite Som utiliza si declaratia6
using namespace std-
ExempIe:
include UiostreamV-
using namespace std-
cout UU n UU endl
cin VV n-

unde endI indica sfirsitul liniei si trecerea la o linie noua (similar cu Wn).
Urmatoarele "metode@ pot fi utizate pentru formatare6
Sidt# (n)- defineste numarul minim de caractere care trebuiesc scrise
fill (n)- defineste un caracter de umplere daca sirul de iesire trebuie
alungit sa satisfaca o lungime minima
precision (int n)- defineste numarul de cifre semnificati"e pentru numerele
in "irgula mobile
Urmatoarii "manipuIatori@ pot fi utizati pentru a modifica sirul de iesire6
endl insereaza caracterul newline si afiseaza linia (similar cu Wn).
flus# pro"oaca afisarea liniei
dec sc#imba in zecimal formatul de iesire al numerelor
#e sc#imba in #eadecimal formatul de iesire al numerelor
oct sc#imba in octal formatul de iesire al numerelor
Ss ignora caracterele de tip w)itesace in intrare
s#oSpoint pro"oaca afisarea punctului zecimal urmat de zerouri pentru
numerele intregi
StructuriIe de controI aIe IimbajuIui C, C+=
Laborator:
)) *ro+lema 8: -e da numarul natural N. /a -e calcule0e -i -a -e
)) a1i-e0e valoarea FACTOR re4re0entind 4rodu-ul tuturor numerelor
)) naturale de la " la N (notatia matematica NI, citit N 1actorial
)) -au 1actorial de N).
)) 56em4lu :
)) 8I ! "6#68! :
)) :I ! "6#686,696: ! ;#7
>include <-tdio.%
void main ()
{ int K ! #, N, FACTOR ! ";)) K ! 777777777777777777777777777777"7
)) FACTOR ! 7777777777777777777777777777777"
4rint1 ("Introduceti numarul intre? N :");
-can1 ("Ed", FN);
$%ile (K <! N)
{
FACTOR ! FACTOR & K;
K ! K ' ";
(
4rint1 ("Factorial de Ed ! EdJnJn", N, FACTOR);
(
.
ProbIema 12: se da "ectorul 7 (0, 1, *, ),JJ%) apartinind spatiului I10,
definit in "irgula mobila dubla precizie . ;a se ordoneze in mod crescator apoi sa se
afiseze.
doubIe aux, x[10];
short i, k;
// 0 1 * ) , 8 & 9 8 %
get x; // 1 3 3 4 5 6 7 9 12 14
do
k = 0; // k = 0
for (i = 0; i < 9; i++) // i = 9
if (x[i] > x [i+1])
aux = x [i+1]; // aux = 7
x[i+1] = x[i];
x[i] = aux;
k = 1;
Endif;
Endfor;
whiIe (k == 1);
Print ( "SiruI ordonat crescator :", x);
)) *ro+lema "#: -e da vectorul 6 ! (67, 6", 6#, 68,@@6=) a4artinind -4atiului R"7,
)) de1init in vir?ula mo+ila du+la 4reci0ie . /a -e ordone0e in mod cre-cator a4oi -a
-e a1i-e0e.
>include <io-tream
u-in? name-4ace -td;
void main ()
{ dou+le au6, 6B"7C;
-%ort i, K; )) 7 " # 8 , 9 : ; < =
4rint1 ("Introduceti vectorul 6 : ");
cin 6B7C 6B"C 6B#C 6B8C 6B,C 6B9C 6B:C 6B;C 6B<C
6B=C;
do
{
K ! 7;
1or (i ! 7; i < =; i'')
{
i1 (6BiC 6 Bi'"C)
{
au6 ! 6 Bi'"C;
6Bi'"C ! 6BiC;
6BiC ! au6;
K ! ";
(
(
(
$%ile (K !! ");
cout.4reci-ion (8);
cout << "/irul ordonat cre-cator : " << 6B7C << 6B"C << 6B#C << 6B8C << 6B,C <<
6B9C << 6B:C << 6B;C << 6B<C << 6B=C << endl;
(
PASCAL:
>>Problema 1*6 se da "ectorul 7 (0, 1, *, ),JJ%) apartinind spatiului I10, definit in "irgula
>>mobila dubla precizie . ;a se ordoneze in mod crescator apoi sa se afiseze
program ordonare-
"ar 6arrayQ1..80R of double-
au6double-
X,i6integer-
begin
Srite (Y$ntroduceti "ectorul 6Y)-
for i671 to 10 do
begin
Srite (YQY,i,YR7Y)-
readln(QiR)-
end-
X67 1-
S#ile X 7 1 do
begin
X67 0-
for i 67 1 to % do
begin
if (QiR V QiC1R) t#en
begin
au 67 QiR-
QiR 67 QiC1R-
QiC1R67au-
X671-
end-
end-
end-
for i671 to 10 do
Srite (QiR)-
readln ()-
end.
+ercitiu6
;a se modifice algoritmul de mai sus pentru a se ordona sirul descrescator.
;e poate micsora numarul de iteratiiZ
ProbIema 13: ;e dau 8 cifre in baza 10. ;a se construiasca numarul in baza 10 obtinut prin
concatenarea acestor cifre si sa se afiseze. ;a se con"erteasca apoi numarul obtinut in baza 1& si
sa se afiseze.
+emplu 6 din cifrele 1 * ) , 8 "om obtine numarul 1*),8(10)
care con"ertit in baza 1& se scrie )0)%(1&).
PSEUDOCODE:
int x[5], y [5], i, N = 0;
get x;
for (i = 0; i < 5; i++)
N = N * 10 + x [i]; // N = 12345 i = 5
Print ("N = ", N , "(10)";
for (i = 0; i < 5; i++)
y [4 - i] = N % 16; // i = 5 y[4] = 9 y [3] = 3 y[2] = 0 y [1] = 3 y [0] = 0
N = N / 16; // 0
Endfor;
print ("y = ", y[0], y [1], y [2], y [3], y[4]);
P:;C:!6
>> Problema 1)6 ;e dau 8 cifre in baza 10. ;a se construiasca numarul in baza 10 >>obtinut
prin concatenarea acestor cifre si sa se afiseze. ;a se con"erteasca apoi >>numarul obtinut
in baza 1& si sa se afiseze.
>> +emplu 6 din cifrele 1 * ) , 8 "om obtine numarul 1*),8(10)
>> care con"ertit in baza 1& se scrie )0)%(1&).
program problema1)-
/ar 6 array Q1..8R of integer-
y 6 array Q1..8R of integer-
i, 4 6 integer-
begin
4 67 0-
Srite (Y$ntroduceti "ectorul 6Y)-
readln ( Q1R, Q*R, Q)R, Q,R, Q8R)-
for i67 1 to 8 do
4 67 4 D 10 C QiR-
Sriteln (Y4 7Y, 4, Y(10)Y)-
for i 67 0 to , do
begin
y Q8 - iR 67 4 mod 1&-
4 67 4 di" 1&-
end-
Srite (Yy 7 Y, y Q1R, yQ*R, yQ)R, y Q,R, y Q8R)-
readln-
end.
)) *ro+lema "8: /e dau 9 ci1re in +a0a "7. /a -e con-truia-ca
)) numarul in +a0a "7 o+tinut 4rin concatenarea ace-tor ci1re
)) -i -a -e a1i-e0e. /a -e convertea-ca a4oi numarul in +a0a ":
)) -i -a -e a1i-e0e.
)) 56em4lu : din ci1rele " # 8 , 9 vom o+tine numarul "#8,9("7)
)) care -e -crie 878=(":).
>include <io-tream
u-in? name-4ace -td;
void main()
{ int 6B9C, L B9C, i, N ! 7;
cout << "Introduceti 9 ci1re in +a0a "7 : ";
cin 6B7C 6B"C 6B#C 6B8C 6 B,C;
1or (i ! 7; i < 9; i'')
N ! N & "7 ' 6 BiC;
cout << "N ! " << N << "("7)" << endl;
1or (i ! 7; i < 9; i'')
{
L B, D iC ! N E ":;
N ! N ) ":;
(
4rint1 ("L ! E6E6E6E6E6(":)Jn", LB7C, L B"C, L B#C, L B8C, LB,C);
(
TabIouri muItidimensionaIe - Matrici
B matrice de * dimensiuni este un tablou dreptung#iular de elemente (numere) de m linii si n
coloane de forma6
B matrice care are o dimensiune egala cu 1 se numeste vector. B matrice :Q1,nR (1 linie si n
coloane) se numeste vector Iinie, iar o matrice 'Qm,1R ( o coloana si m linii) se numeste vector
coIoana.
+emple6

sau
V = (9 8 6 1 2 7 4 9 2 6 0 5) K = 3 * (I 1)+ j
este o matrice de tipul ,). +lementul :Q),1R sau :
3,1
este , iar : Q*,)R 7 9.
(atricea
este o matrice de tipul sau "ector linie.
B matrice :(m,n) care are m = n se numeste matrice atratica..
Adunarea matriciIor
Daca A s B sunt doua matrc de tpu m x n, atunc C = A + B, unde c
i,j
= a
i,j
+ b
i,j
este
suma or (unde i<=m, j<=n).
Exempu:
InmuItirea cu un scaIar
5indu-se matricea A 1i scalarul (constanta) c, a"em matricea B = cA, unde b
i,j
= cxa
i,j
care este
produsul dintre matricea A si scalarul c. 5e eemplu,
InmuItirea matriciIor
.ie A o matrice de tip m n si B o matrice de tip n p. :tunci, produsul lor este C = AB o matrice
de tip m p, cu
c
i,j
= a
i,1
b
1,j
+ a
i,2
b
2,j
+ ... + a
i,n
b
1,n
.
+emplu,
Reprezentarea MatriciIor in memoria caIcuIatoruIui.
C utilizeaza con"entia FIoS-maAor@ care memoreaza elementele primei linii, apoi
elementele liniei a doua etc.
5aca declaram in C o matrice
int AB#CB8C ! { {", #, 8(, {,, 9, :( (;
ea "a fi reprezentata atfel 6 1 * ) , 8 &
5indu-se matricea :Qm,nR, pozitia (offset) X a elementului :Qi,AR in reprezentarea pe linii poate fi
calculata dupa formula6
pozitie = Iinia x nrcoIoane + coIoana sau k = i x n + j
ProbIema 14: ;e dau * "ectori linie 7 (0, 1, JJ.%) si y 7 (y0, y1JJ.y%) definiti pe
I10. ;a se calculeze "ectorul z 7 (z0, z1,JJ..z%) reprezentind suma "ectorilor si y.
doubIe x[10], y [10], z [10];
short i ;

get x, y ;
for (i = 0; i < 9; i++)
z [i] = x [i] + y [i];
Endfor;
Print ( "VectoruI suma este :", z);
))*ro+lema ",: /e dau # vectori linie 6 ! (67, 6", @@.6=)
))-i L ! (L7, L"@@.L=) de1initi 4e
))R"7. /a -e calcule0e vectorul 0 ! (07, 0",@@..0=)
))re4re0entind -uma vectorilor 6 -i L.
>include <io-tream
u-in? name-4ace -td;
void main ()
{dou+le 6B"7C, L B"7C, 0 B"7C;
-%ort i;
4rint1 ("Introduceti vectorul 6 :");
cin 6B7C 6B"C 6B#C 6B8C 6B,C 6B9C 6B:C 6B;C 6B<C 6B=C;
4rint1 ("Introduceti vectorul L :");
cin LB7C LB"C LB#C LB8C LB,C LB9C LB:C LB;C LB<C LB=C;
1or (i ! 7; i < 10; i'')
{
0 BiC ! 6 BiC ' L BiC;
(
cout << "Mectorul -uma e-te : " << 0B7C << " " << 0B"C << " " << 0B#C << " " << 0B8C <<
" " << 0B,C << " " << 0B9C << " " << 0B:C << " " << 0B;C << " " << 0B<C << " " << 0B=C
<< endl;
(
ProbIema 15: ;e dau * matrici H Q*RQ)R si [ Q*RQ)R definite pe I*I). ;a se calculeze
matricea L Q*RQ)R reprezentind suma matricilor H si [.
doubIe X[2][3] = {{1.0,2.0,3.0},{4.0,5.0,6.0}},
Y [2][3] = {{1.0,2.0,3.0},{4.0,5.0,6.0}},
Z [2][3];
short i, j ;

for (i = 0; i < 2; i++)
for (j = 0; j < 3; j++)
Z [i][j] = X [i][j] + Y [i][j];
Endfor;
Endfor;
Print ( "Matricea suma este :", Z);
)) *ro+lema "9: /e dau # matrici A B#CB8C -i N B#CB8C de1inite 4e R#6R8.
)) /a -e calcule0e matricea O B#CB8C re4re0entind -uma matricilor A -i N.
>include <io-tream
u-in? name-4ace -td;
void main ()
{ dou+le A B#CB8C ! {{".7,#.7,8.7(,{,.7,9.7,:.7((,
N B#CB8C ! {{".7,#.7,8.7(,{,.7,9.7,:.7((,
O B#CB8C;
-%ort i, P ;
cout << "3atricea -uma e-te : Jn" << -%o$4oint;
1or (i ! 7; i < #; i'')
{
1or (P ! 7; P < 8; P'')
{
O BiCBPC ! A BiCBPC ' N BiCBPC;
cout.4reci-ion (8);
cout.$idt% (9);
cout << O BiCBPC;
(
cout << endl;
(
))cout << "3atricea -uma e-te : Jn" << -%o$4oint << O B7CB7C << O B7CB"C << O B7C
B#C << endl;
))cout << O B"CB7C << O B"CB"C << O B"CB#C << endl;
(
ProbIema 16: ;e dau * matrici H Q*RQ)R si [ Q)RQ*R definite pe I*I) si I)I*. ;a se
calculeze matricea L Q*RQ*R reprezentind produsul matricilor H si [. +emplu6
" # 8 " # "6" ' #68 ' 869 "6# ' #6, ' 86: ## #<
, 9 : 8 , ,6" ' 968 ' :69 ,6# ' 96, ' :6: ,= :,
9 :
doubIe X[2][3] = {{1.0,2.0,3.0},{4.0,5.0,6.0}},
Y [3][2] = {{1.0,2.0},{3.0,4.0}, {5.0,6.0}},
Z [2][2];
short i, j , k;

for (i = 0; i < 2; i++) // i = 2
for (j = 0; j < 2; j++) // j = 1
Z [i][j] = 0.0; // Z [1][1] = 0;
for (k = 0; k < 3; k++) // k = 2;
Z [i][j] += X [i][k] * Y [k][j]; // Z [0][0] = 22 Z[0][1] = 28
Endfor; // Z [1][0] = 49 Z [1][1] = 64
Endfor;
Endfor;
Print ( "Matricea produs este :", Z);
)) *ro+lema ":: /e dau # matrici A B#CB8C -i N B8CB#C de1inite 4e R#6R8 -i R86R#.
)) /a -e calcule0e matricea O B#CB#C re4re0entind 4rodu-ul matricilor A -i N.
)) " # 8 " # "6" ' #68 ' 869 "6# ' #6, ' 86: ## #<
)) , 9 : 8 , ,6" ' 968 ' :69 ,6# ' 96, ' :6: ,= :,
)) 9 :
>include <io-tream
u-in? name-4ace -td;
void main ()
{dou+le A B#CB8C ! {{".7,#.7,8.7(,{,.7,9.7,:.7((,
N B8CB#C ! {{".7,#.7(,{8.7,,.7(, {9.7,:.7((,
O B#CB#C;
-%ort i, P , K;

cout << "3atricea 4rodu- e-te : Jn" << -%o$4oint;
1or (i ! 7; i < #; i'')
{
1or (P ! 7; P < #; P'')
{
O BiCBPC ! 7.7;
1or (K ! 7; K < 8; K'')
{
O BiCBPC '! A BiCBKC & N BKCBPC;
(
cout.4reci-ion (8);
cout.$idt% (9);
cout << O BiCBPC;
(
cout << endl;
(
)) cout << " 3atricea 4rodu- e-te : Jn" << O B7CB7C << " " << O B7CB"C << "Jn" << O B"C
B7C << " " << O B"CB"C << endl;
(
PascaI:
>> Problema 1&6 ;e dau * matrici H Q*RQ)R
>> si [ Q)RQ*R definite pe I*I) si I)I*.
>> ;a se calculeze matricea L Q*RQ*R reprezentind
>> produsul matricilor H si [. +emplu6
>> 1 * ) 1 * 11 C *) C )8 1* C *, C )& ** *8
>> , 8 & ) , ,1 C 8) C &8 ,* C 8, C && ,% &,
>> 8 &
program produs-
"ar 6 array Q1..*,1..)R of double-
y 6 array Q1..),1..*R of double-
z 6 array Q1..*,1..*R of double-
i,A,X 6 integer-
begin
Sriteln (Y$ntroduceti matricea 6Y)-
for i67 1 to * do
for A67 1 to ) do
begin
Srite (YQY,i,Y,Y,A,YR7Y)-
readln (Qi,AR)-
end-
Sriteln (Y$ntroduceti matricea y 6Y)-
for i67 1 to ) do
for A67 1 to * do
begin
Srite (YyQY,i,Y,Y,A,YR7Y)-
readln (yQi,AR)-
end-
for i 67 1 to * do
for A 67 1 to * do
begin
z Qi,AR 67 0.-
for X 67 1 to ) do
zQi,AR 67 zQi,AR C Qi,XR D y QX,AR-
end-
Sriteln (Y(atricea produs L este 6Y)-
for i67 1 to * do
for A67 1 to * do
begin
Sriteln (zQi,AR)-
end-
read ()-
end.
ProbIema 17: ;e da o matrice H Q)RQ)R de numere naturale definita pe 4)4). ;a se
calculeze ;uma ; a numerelor prime de pe diagonala principala.
PSEUDO CODE:
int X[3][3] = {{5, 8, 9},{2,7,6}, {14, 8, 9}}, S = 0, D;
short i, k;

for (i = 0; i < 3; i++)
k = 0;
for (D = 2; D <= X[i][i] / 2; D++)
if ((X [i][i] % D) = 0)
k = 1;
endif;
endfor;
if (k == 0)
S += X[i][i];
Endif;
Endfor;
Print ( "Suma numereIor prime de pe diagonaIa principaIa este :", S);
PASCAL:
Var X: array [1..3, 1..3] of integer;
n, i, j, k, S, D : integer;
begin
writeIn ('N='); readIn (n);
for i := 1 to n do
begin
for j := 1 to n do
begin
writeIn ('X [', i, ',',j,'] = ');
readIn (X [i,j]);
end;
end;
S := 0;
for i := 1 to n do
for j := 1 to n do
begin
if i = j then
begin
k := 0;
for D := 2 to X[i][j] div 2 do
begin
if X [i][j] mod D = 0 then
k := k + 1;
end;
if (k = 2) then
S := S + X[i][j];
end;
end;
WriteIn ( 'Suma numereIor prime de pe diagonaIa principaIa : =' , S);
End.
)) *ro+lema ";: /e da o matrice A B8CB8C de numere naturale de1inita 4e N86N8.
)) /a -e calcule0e /uma / a numerelor 4rime de 4e dia?onala 4rinci4ala.
>include <io-tream
u-in? name-4ace -td;
void main ()
{
int AB8CB8C ! {{9, <, =(,{#,;,:(, {",, <, #((, / ! 7, Q;
-%ort i, K;

1or (i ! 7; i < 8; i'')
{
K ! 7;
1or (Q ! #; Q <! ABiCBiC ) #; Q'')
{
i1 ((A BiCBiC E Q) !! 7)
K ! ";
(
i1 (K !! 7)
/ '! ABiCBiC;
(
cout << "/uma numerelor 4rime de 4e dia?onala 4rinci4ala e-te : " << / << endl;
(
ProbIema 18: ;e da o matrice patratica H Q)RQ)R de numere naturale definita pe 4)4). ;a
se gaseasca elementul maim de pe diagonala principala si sa se calculeze ;uma ; a
numerelor impare din toata matricea.
PSEUDO CODE:
int X[3][3] = {{5, 8, 9},{2,7,6}, {14, 8, 9}}, S = 0, Max;
short i, j;

Max = X [0][0];
for (i = 0; i < 3; i++)
for (j = 0; j < 3; j++)
if ( (X [i][j] % 2) == 1)
S = S + X [i][j];
if (i == j && X [i][j] > Max)
Max = X[i][j];
Endif;
endfor;
endfor;
Print ( "Suma numereIor impare este :", S);
Print ( "MaximuI de pe diagonaIa principaIa este :", Max);
PASCAL:
Var X: array [1..3, 1..3] of integer;
n, i, j, S, Max : integer;
begin
writeIn ('N='); readIn (n);
for i := 1 to n do
begin
for j := 1 to n do
begin
writeIn ('X [', i, ',',j,'] = ');
readIn (X [i,j]);
end;
end;
S := 0;
Max = X[1][1];
for i := 1 to n do
for j := 1 to n do
begin
if i = j and X [i][j] > Max then
Max := X[i][j];
if X [i][j] Div 2 == 1 then
S := S + X [i][j];
end;
WriteIn ( 'Suma numereIor impare : =' , S);
WriteIn ( 'EIementuI Maxim de pe diagonaIa PrincipaIa este : =' , Max);
End.
ProbIema 19: ;e da o matrice patratica H Q)RQ)R de numere naturale definita pe 4)4).
Calculati suma elementelor de deasupra diagonalei principale, cate lemente pare sunt pe
diagonala principala si elementul maim de sub diagonala principala
PSEUDO CODE:
int X[3][3] = {{5, 8, 9},{2,7,6}, {14, 8, 9}}, S = 0, Max;
short i, j,k = 0;

Max = X [1][0];
for (i = 0; i < 3; i++)
for (j = 0; j < 3; j++)
if ( j > i )
S = S + X [i][j];
Endif;
if (i == j && (X [i][j] % 2 == 0))
k = k + 1;
Endif;
if ( i > j && X [i][j] > Max)
Max = X[i][j];
Endif;
endfor;
endfor;
Print ( "Suma eIementeIor de deasupra diagonaIei principaIe este :", S);
Print ( "NumaruI eIementeIor pare de pe diagonaIa principaIa este :", k);
Print ("EIementuI maxim de sub diagonaIa principaIa este :",Max);
PASCAL:
VAR : array X[3][3] of integer;
S , Max : integer;
i, j,k : integer;

Begin
for i := 1 to 3 do
begin
for j := 1 to 3 do
begin
write ('X [', i, ',',j,'] = ');
readIn (X [i,j]);
end;
end;
S := 0;
Max := X [1][0];
for i := 1 to 3 do
begin
for j := 1 to 3 do
begin
if j > i then
S := S + X [i][j];
if (i = j) and (X [i][j] mod 2 = 0) then
k := k + 1;
if ( i > j) and (X [i][j] > Max) then
Max := X[i][j];
end;
end;
writeIn ( "Suma eIementeIor de deasupra diagonaIei principaIe este :", S);
writeIn ( "NumaruI eIementeIor de pe diagonaIa principaIa este :", k);
writeIn ("EIementuI maxim de sub diagonaIa principaIa este :",Max);
ProbIema 20: ;e da o matrice patratica H Q)RQ)R de numere naturale definita pe 4)4).
Calculati suma elementelor care au ultima cifra * aflate pe diagonala principala si cate
elemente di"izibile cu ) sunt deasupra diagonalei principale
PSEUDO CODE:
int X[3][3] = {{5, 8, 9},{2,7,6}, {14, 8, 9}}, S = 0;
short i, j, k = 0;

for (i = 0; i < 3; i++)
for (j = 0; j < 3; j++)
if (i < j && (X [i][j] % 3) == 0 )
k = k + 1;
Endif;
if ( i == j && (X [i][j] % 2) == 0)
S = S + X [i][j];
Endif;
endfor;
endfor;
Print ( "Suma eIementeIor de pe diagonaIa principaIa este :", S);
Print ( "NumaruI eIementeIor de deasupra diagonaIi principaIe este :", k);
ProbIema 21 : ;e da o matrice patratica H Q)RQ)R de numere naturale definite
pe 4)4). Calculati elemntul maim care are ultima cifra egala cu penultima.
ProbIema 21 : ;e da o matrice patratica H Q)RQ)R de numere naturale definite
pe 4)4). Calculati elemntul maim care are ultima cifra egala cu penultima
i.t % W3YW3Y = aa1447 1!!7 304c7 a4067 4097 !!0c7 a2077 30$7 444cc7 ma% = 91E
+4ort i7 ]7 317 32E
6or (i = 0E i F 3E iCC ) DD i = 3
6or (] = 0E ] F 3E ]CC ) DD ] = 2
31 = %WiYW]Y ? 10E DD 31 = 4
32 = (%WiYW]Y ? 100) D 10E DD32 = 4
i6 ( 31 == 32 @@ %WiYW]Y G ma%)
ma% = % WiYW]YE DD ma% = 444
e./i6E
e.6orE
e./6orE
i6 (ma% == 91)
"ri.t (tI8 e%i+ta .8mere a 3aror 8ltima 3i6ra e+te egala 38 "e.8ltimau)E
el+e
"ri.t (tI8mar8l ma%im /i.tre .8merele a 3aror 8ltima 3i6ra e+te egala 38 "e.8ltima = u7 ma%)E
PSEUDOCODE:
Int x[3][3]={{123,122,453},{144,355,678},{156,299,355}},max=-1;
Short i,j, c1, c2;
for (i=0;i<3;i++)
for (j=0,j<3;j++)
c1=x[i][j]%10;
c2=x[i][j]%100/10;
if ((c1=c2)&&(x[i][j]>max))
max = x[i][j],
endfor;
endfor;
if (max = -1)
Print ("nu exista numere care au uItima cifra egaIa cu penuItima");
EIse
Print ("EIementuI maxim care are uItima cifra egaIa cu penuItima este :",max);
C:
))*ro+lema #" : /e da o matrice 4atratica A B8CB8C de numere naturale de1inite
))4e N86N8. Calculati elemntul ma6im care are ultima ci1ra e?ala cu 4enultima.
>include <io-tream
u-in? name-4ace -td;
void main ()
{ int 6B8CB8C ! {{"#8, "##, ,98(, {",,, ",99, :;<(, {"9:, #==, 899((, ma6 ! D",
c", c#;
-%ort i, P;
1or (i ! 7; i < 8; i'')
{
1or (P ! 7; P < 8; P'')
{
c" ! 6BiCBPC E "7;
c# ! 6BiCBPC E "77 ) "7;
i1 ((c" !! c#) FF (6BiCBPC ma6))
ma6 ! 6BiCBPC;
(
(
i1 (ma6 !! D")
cout <<"Nu e6i-ta numere care au ultima ci1ra e?ala cu 4enultima" <<endl;
el-e
cout <<"5lementul ma6im care are ultima ci1ra e?ala cu 4enultima
e-te :"<<ma6<< endl;
(
//ProbIema 21 : Se da o matrice patratica X [3][3] de numere naturaIe definite
//pe N3xN3. CaIcuIati eIemntuI maxim care are uItima cifra egaIa cu penuItima.
Var x: array [1..3,1..3] of integer;
max,c1,c2,i,j:integer;
begin
for i:=1 to 3 do
begin
for j:=1 to 3 do
begin
writeIn ( 'x[',i,',',j,']=');
read (x[i,j]);
end;
end;
max:= -1;
for i:=1 to 3 do
begin
for j:=1 to 3 do
begin
c1:=x[i,j] mod 10;
c2:=x[i,j] mod 100 div 10;
if (c1=c2) and (x[i,j] > max) then
max := x[i,j];
end;
end;
if (max = -1) then
writeIn ('Nu exista numere care au uItima cifra egaIa cu penuItima');
eIse
writeIn ('EIementuI maxim care are uItima cifra egaIa cu penuItima este :',max);
end.
ProbIema 22 : Se da o matrice patratica X [3][3] de numere naturaIe definite
pe N3xN3. CaIcuIati in acceeasi zona de memorie transpusa ei.
Transpusa matricii se afIa prin inversarea IiniiIor cu coIoane.
ExempIu:
H11 H1* H1) H11 H*1 H)1
H*1 H** H*) (atricea transpusa 6 H1* H** H)*
H)1 H)* H)) H1) H*) H))

Pseudocode:
$nt HQ)RQ)R 7 \\1,*,)],\,,8,&],\9,8,%]],au-
s#ort i,A -
for (i70-iU)-iCC)
for (A7i-AU)-ACC)
au7HQiRQAR-
HQiRQAR7QARQiR-
HQARQiR7au-
+ndfor-
+ndfor-
Print (M(atricea transpusa este6@,H)-
C:
>>;e da o matrice HQ)RQ)R de nr. nat. ;a se calculeze
>> transpusa matricii in aceeasi zona de memorie.
^include UiostreamV
using namespace std-
"oid main ()
\ int Q)RQ)R 7 \\1,*,)], \,,8,&], \9,8,%]], au-
s#ort i, A-
for (i70 -iU)- iCC)
\
for (A7i- AU)- ACC)
\
au7QiRQAR-
QiRQAR7QARQiR-
QARQiR7au-
]
]
cout UU _(atricea transpusa este6_ UU endl-
cout UU Q0RQ0R UU _ _ UU Q0RQ1R UU _ _ UU Q0RQ*R UU endl-
cout UU Q1RQ0R UU _ _ UU Q1RQ1R UU _ _ UU Q1RQ*R UU endl-
cout UU Q*RQ0R UU _ _UU Q*RQ1R UU _ _ UU Q*RQ* RUU endl-
]
PASCAL:
>>;e da o matrice HQ)RQ)R de nr. nat. ;a se calculeze transpusa matricii in aceeasi zona de
memorie.
"ar 6array Q1..),1..)R of integer-
i,A,au6integer-
begin
`riteln (Yintroduceti matricea Y)-
for i671 to ) do
begin
for A671 to ) do
begin
Srite (YQY,i,Y,Y,A,YR7Y)- >> Q0,0R7
readln (Qi,AR)-
end-
end-
for i671 to ) do
begin
for A67i to ) do
begin
au67HQi,AR-
Qi,AR67QA,iR-
QA,iR67au-
end-
end-
Sriteln (Y(aricea transpusa este6Y)-
for i671 to ) do
begin
for A671 to ) do
begin
Srite (HQi,AR)-
if AU) t#en
Srite (Y,Y)-
end-
Sriteln-
end-
end.
iruri i serii numerice
Un sir de numere reale este o este o functie definite pe f6 4-VI care face ca oricarui
numar natural n sa-i corespund un element xn. Un sir se noteaza prin (*n).
(ultimea termenilor sai se noteaza prin {*0, *1, ..., *n, ...}
Un 1ir (xn) se nume1te ir constant dac2 xn7 x0 pentru orice n natural
+6 (xn) 7 * \*, *, *, *, *, *, *, *,JJ.]
Un 1ir (xn) se nume1te ir marginit dac2 xn apartine unui inter"al pentru orice n natural
+6 (xn) 7 1 > n \1,1>*, 1>), JJ.]
Un 1ir (xn) se nume1te ir crescator dac2 xn U7 xnC1 pentru orice n natural
+6 (xn) 7 na* \1,,, %, 1&,JJ.]
Un 1ir (xn) se nume1te ir descrescator dac2 xn V7 xnC1 pentru orice n natural
+6 (xn) 7 1 > na* \1,1>,, 1>%, JJ.]
Un 1ir (xn) se nume1te ir monoton daca este crescator sau descrescator
Un 1ir (xn) are o limita ! daca in orice "ecinatate a lui ! se afla un element al
sirului. ! poate fi un numar finit sau infinit.
Un 1ir (xn) se nume1te ir convergent daca are o Iimita finita x0 apartinind lui I
+6 (xn) 7 1>n are limita 0 deci este con"ergent
Un 1ir (xn) se nume1te ir divergent daca nu are Iimita sau Iimta este infinit.
&%: (xn) 7 (-1)an 7 \-1, 1,-1,1JJ] nu are limita deci este di"ergent
(xn) 7 n are limita pIus infinit deci este di"ergent
ProbIema 23a:
;e da sirul (*n) = (1 + 1/n)^n. ;a se "erifice daca este con"ergent.
ProbIema 23b:
;e da sirul (xn) 7 1 C 1>* C 1>) C 1>, C J. 1>n ;a se "erifice daca este
con"ergent sau di"ergent
;irul de la problema *)b poate fi "azut ca un sir de sume partiale ale unui
termen general 1>n. ;e noteaza 1 (1/n) pentru n>= 0. ;irul acestor
sume partiale se numeste serie.
B serie este con"ergenta daca sirul sumelor partiale este con"ergent
ProbIema 23c:
;e da seria 1 (1/(n*(1+n)) nV7 1 ;a se "erifice daca seria este con"ergenta

ProbIema 23d:
;e da seria 1 (q^n) n V7 0 unde b este un numar real. ;a se "erifice daca seria este
con"ergenta
ProbIema 23e:
;e da seria 1 ((-1)^n / sqrt (n+1)) unde nV71. ;a se "erifice daca seria este
con"ergenta
ProbIema 23f : Sa se caIcuIeze eIemeteIe siruIui Iui Fibonacci.
;irul lui .ibonacci este un sir de numere in care fiecare numar se obtine din suma a *
elemente precedente din sir.
(*1) = 1, (*2) = 1, (*n+2) = (*n) + (*n+1) n >= 1
:stfel, primele 10 elemente ale sirului lui .ibonacci sunt6 1, 1, *, ), 8, 8, 1), *1, ),, 88,
...
C:
^include UiostreamV
using namespace std-
"oid main ()
\ double Q101R-
s#ort i-
Q0R70- Q1R71-
for (i7*-iU7100-iCC)
\
>>QiR7 poS (1.C 1.>(double)i,(double)i) >>con"ergent la e7*.9..........
>>QiR7Qi-1RC1.>(double)i >>di"ergent
>>QiR7Qi-1RC1.>((double)iD(1.C(double)i)) >> con"ergent la 1
>>QiR7Qi-1RC poS (b,(double)i) >> con"ergent daca b este subunitar, altfel di"ergent
>>QiR7Qi-1RC(poS(-1.,(double)i) > sbrt ((double)iC1.))
QiR7Qi-1RCQi-*R-
cout.precision (10)-
cout UUiUU_7_UUQiRUUendl-
]
]
ProbIema 24: Se da siruI "Uniunea Europeana". Sa scrie un program care sa caIcuIeze
Iungimea Iui.
char s [100] = "Uniunea Europeana";
short i = 0;
whiIe (s [i] != '\0')
i++;
cout <<"Lungimea siruIui este:" << i << endI;
B alta implemetare utilizind pointers6
char *s = "Uniunea Europeana";
short i = 0;
whiIe (*s++)
i++;
cout <<"Lungimea siruIui este:" << i << endI;
$n aplicatii se "a folosi functia strlen (s)6
#incIude <string.h>
char s [100] = "Uniunea Europeana";
short i = strIen (x);;
ProbIema 25: Se dau siruriIe s1= "Uniunea " si s2 = "Europeana"". Sa scrie un
program care sa concateneze siruIui s1 siruI s2.
c#ar s1 [256] = "Uniunea ", *s2 = "Europeana", *s;
s = s1;
whiIe (*s)
s++;
whiIe (*s2)
*s++ = *s2++;
>>Iezol"area ecuatiei de gradul *
>>aDa*CbDCc70
>>delta7ba*-,DaDc
>>17(-bCsbrt (delta))>(*Da)
>>*7(-b-sbrt (delta))>(*Da)
^include UiostreamV
^include Umat#.#V
using namespace std-
"oid main ()
\ double a,b,c,1,*,delta-
cout UU_introduceti coeficentii a,b,c_UUendl-
cout UU_a7_- cin VVa-
cout UU_b7_- cinVVb-
cout UU_c7_- cin VVc-
if (a 77 0)
\
if (bN70)
\
cout UU_ecuatie de gradul intai_UUendl-
17-c>b-
cout UU_;olutia ecuatiei este6_UU1UUendl-
]
else
\
cout UU_unul din coeficentii a sau b trebuie sa fie diferita de 0_UUendl-
]
]
else
\
delta 7 poS(b,*.)-,DaDc-
if (delta U 0)
cout UU_ecuatia are solutii complee_UUendl-
else
\
17(-bCsbrt (delta))>(*Da)-
*7(-b-sbrt (delta))>(*Da)-
cout UU_solutiile sunt6_UU1UU_,_UU*UUendl-
]
]
]
ProbIema 26: Se dau siruriIe z1 = "Uniunea Europeana" si z2 = "Uniunea Europeano".
Sa scrie un program care sa compare ceIe 2 siruri. RzuItatuI va fi:
1 daca s1 > s2
-1 daca s1 < s2
0 daca s1 = s2.
c#ar Dz1 7 FUniunea +uropeana@, Dz* 7 FUniunea +uropeano@-
c#ar Ds1 7 z1, Ds* 7 z*-
s#ort X 7 0-
S#ile (Ds1 cc Ds*)
if (Ds1 V Ds*)
X 7 1-
breaX-
else
if (Ds1 U Ds*)
X 7 -1-
breaX-
endif-
endif-
s1CC-
s*CC-
endS#ile-
if (X 77 0) >> s1 and s* ebual so farZ
if (Ds1 N7 0) >> s1 is longer Z
X 7 1-
else
if (Ds* N7 0) >> s* is longer Z
X 7 -1-
endif-
endif-
endif-
sSitc# (X)
case 16
print (z1, F este mai mare decit@, z*)-
breaX-
case -16
print (z1, F este mai mic decit@, z*)-
breaX-
case 06
default6
print (z1, F este egal cu @, z*)-
breaX-
endsSitc#-
)) *ro+lema #9: /e dau -irurile -" ! RSniunea 5uro4eanaT -i -# ! RSniunea 5uro4eanoT.
)) /a -crie un 4ro?ram care -a com4are cele # -iruri. R0ultatul va 1i:
)) " daca -" -#
)) D" daca -" < -#
)) 7 daca -" ! -#.
>include <io-tream
>include <-trin?.%
u-in? name-4ace -td;
void main ()
{ c%ar &0" ! "Sniunea 5uro4eana", &0# ! "Sniunea 5uro4eano";
c%ar &-" ! 0", &-# ! 0#;
-%ort K ! 7;
$%ile (&-" FF &-#)
{
i1 (&-" &-#)
{
K ! ";
+reaK;
(
el-e
{
i1 (&-" < &-#)
{
K ! D";
+reaK;
(
(
-"'';
-#'';
(
i1 (K !! 7) )) -" and -# eUual -o 1arV
{
i1 (&-" I! WJ7X) )) -" i- lon?er V
K ! ";
el-e
{
i1 (&-# I! WJ7X) )) -# i- lon?er V
K ! D";
(
(
-$itc% (K)
{
ca-e ":
cout << 0" << " e-te mai mare decit " << 0#;
+reaK;
ca-e D":
cout << 0" << " e-te mai mic decit " << 0#;
+reaK;
ca-e 7:
de1ault:
cout << 0" << " e-te e?al cu " << 0#;
+reaK;
(
cout << endl;
(
$n libraria standard a limbaAului C eista functia
int strcmp (s1, s2) care returneaza "alorile de mai sus.
ProbIema 27: Se dau siruriIe z1 = "Uniunea Europeana" si z2 = "Europeana".
Sa se crie un program care sa returneze un pointer catre prima aparitie a
siruIui z2 in z1 daca siruI z2 este mai scurt decit siruI s1 sau a siruIui z1 in z2
daca siruI z1 este mai scurt decit z2.
c#ar Dz1 7 FUniunea +uropeana@, Dz* 7 F+uropeana@-
c#ar Ds1 7 z1, Ds* 7 z*, Ds 7 4U!!-
s#ort l1 7 strlen (s1), l* 7 strlen (s*)-
if (l1 77 l*)
if (strcmp (s1, s*) 77 0)
s 7 s1-
endif-
else
if (l1 V l*)
S#ile (strlen (s1) V7 l*)
if (strncmp (s1, s*, l*) 77 0)
s 7 s1-
breaX-
else
s1CC-
endif-
endS#ile-
else
S#ile (strlen (s*) V7 l1)
if (strncmp (s*, s1, l1) 77 0)
s 7 s*-
breaX-
else
s*CC-
endif-
endS#ile-
endif-
if (s N7 4U!!)
print (FPrima aparitie este @, s)-
else
print (FPrima aparitie nu eista@)-
C6
)) *ro+lema #9: /e dau -irurile 0" ! RSniunea 5uro4eanaT -i 0# ! R5uro4eanaT.
)) /a -e crie un 4ro?ram care -a returne0e un 4ointer catre 4rima a4aritie a
)) -irului 0# in 0" -au a lui 0" in 0#.
>include <io-tream
>include <-trin?.%
u-in? name-4ace -td;
void main ()
{ c%ar &0" ! "Sniunea 5uro4eana", &0# ! "5uro4eano";
c%ar &-" ! 0", &-# ! 0#, &- ! NSHH;
-%ort l" ! -trlen (-"), l# ! -trlen (-#);
i1 (l" !! l#)
{
i1 (-trcm4 (-", -#) !! 7)
- ! -";
(
el-e
{
i1 (l" l#)
{
$%ile (-trlen (-") ! l#)
{
i1 (-trcm4 (-", -#) !! 7)
{
- ! -";
+reaK;
(
el-e
-"'';
(
(
el-e
{
$%ile (-trlen (-#) ! l")
{
i1 (-trcm4 (-#, -") !! 7)
{
- ! -#;
+reaK;
(
el-e
-#'';
(
(
(
i1 (- I! NSHH)
cout << "*rima a4aritie e-te " << - << endl;
el-e
cout << "*rima a4aritie nu e6i-ta"<< endl;
(
$n libraria standard a limbaAului C eista functia
char* strstr (s1, s2) care returneaza un pointer catre prima aparitie a
sirului s* in s1.
ProbIema 28: Se da un sir z1 = "Uniunea Europeana". Sa se inverseze siruI.
>include <io-tream
>include <-trin?.%
u-in? name-4ace -td;
void main ()
{ c%ar 0" B"77C ! "Sniunea 5uro4eana";
c%ar &-" ! 0", au6;
-%ort i, l;
l ! (-%ort) -trlen (-");
1or (i ! 7; i < l )#; i'')
{
au6 ! -" BiC;
-" BiC ! -" Bl D i D "C;
-" Bl D i D "C ! au6;
(
cout << 0" << endl;
(
ProbIema 29: Se da un sir z1 = "Uniune Europena".
Sa se insereze carateruI 'a' dupa fiecare 'e'
54ar ' W20YE
*4ort i7 ]7 . = 1!E
Mor (- = 0E - F .EiCC)
5o8t FFu(Wt FF -FF tY=uE
5i. GG ' WiYE
&./6orE
Mor (- =0E - F .E iCC)
-6 (' WiY == se0)
Mor (] = .E ] G -C1E ]99)
( W]Y = ' W]91YE
&./6orE
(WCCiY = sa0E
ICCE
&./i6E
&./6orE
Mor (- = 0E - F .EiCC)
5o8t FF ' WiY FF t uE
&./6orE
5o8t FF e./lE
ProbIema 29a: Se da un sir z1 = "Uniune Europena".
Sa se insereze caracteruI 'a' dupa fiecare 'e'
Char z [100] = "Uniune Europena", *s = z, *t;
Short I, j, k;
WhiIe (*s++)
K++;
s = z;
whiIe (*s++)
{
If (*s == 'e')
{
T = z + k - 1;
WhiIe (t > s)
{
* (t+1) = *t;
t--;
}
*(s + 1) = 'a';
K++;
}
}
Cout << z << endI;
5CCE
DD#roblema 29: *e /a 8. +ir '1 = t1.i8.e &8ro"e.au. *a +e i.+ere'e 3arater8l sa0 /8"a 6ie3are se0
=i.3l8/e Fio+treamG
8+i.g .ame+"a3e +t/E
_oi/ mai. ()
a34ar ' W20YE
+4ort i7 ]7 . = 1!E
6or (i = 0E i F .EiCC)
a
3o8t FF<(W< FF iFF <Y=<E
3i. GG ' WiYE
i6 ('WiY==A0A)
'WiY=A AE
c
6or (i = 0E i F .E iCC)
a
i6 (' WiY == AeA)
a
6or (] = .E ] G iC1E ]99)
a
' W]Y = ' W]91YE
c
'WCCiY = AaAE
.CCE
c

c
6or (i = 0E i F .EiCC)
a
3o8t FF ' WiY FF < <E
c
3o8t FF e./lE
c
K33ea+i "roblema 8tili'i./ +ir8ri /e 3ara3tere.
=i.3l8/e Fio+treamG
8+i.g .ame+"a3e +t/ E
_oi/ mai. ()
a34ar 'W100Y=<1.i8.e &8ro"e.a<7B'1 = 'E
+4ort i7.E
`4ile (B'1)
a
i6 (B'1 == AeA)
a
. = (+4ort)+trle. (CC'1)E
6or (i = . C 1 E i G 0 E i99)
a
'1WiY='1Wi91YE
c
B'1=AaAE
c
'1CCE
c
3o8t FF ' FFe./lE
DD#roblema 29 b: *e /a 8. +ir '1 = t1.i8.ea &8ro"ea.au. *a +e +tearga 3ara3ter8l 8rmator /8"a
6ie3are 3ara3ter AeA.
=i.3l8/e Fio+treamG
8+i.g .ame+"a3e +t/ E
_oi/ mai. ()
a34ar 'W20YE
+4ort i 7 ] 7 .=17E
6or (i = 0E i F .E iCC)
a
3o8t FF<'W<FFiFF<Y=<E
3i. GG 'WiYE
i6 ('WiY==A0A)
'WiY=A AE
c
6or (i = 0 E i F . E iCC)
a
i6 ('WiY == AeA)
a
6or (] = iC1 E] F .E]CC)
a
'W]Y='W]C1YE
c
.99E
c
c
6or (i = 0E i F 1!E iCC)
a
3o8t FF'WiYFF< <E
c
3o8t FFe./lE
c
ProbIema 30: Se da siruI de caractere "badcfehg". Sa se permute fiecare pereche de
caractere adiacente in aceeasi zona.
DD*e /a +ir8l /e 3ara3tere <ba/36e4g<. *a +e "erm8te 6ie3are "ere34e /e 3ara3tere a/ia3e.ta i. a3eea+i
'o.a
=i.3l8/e Fio+treamG
8+i.g .ame+"a3e +t/E
_oi/ mai. ()
a 34ar +irW100Y=<ba/36e4g<7B+=+ir7 a8%E
`4ile (B+)
a
a8% = B+E
B+ = B(+C1)E
B(+C1) = a8%E
+C=2E
c
3o8t FF+irFFe./lE
c
DD#roblema 31. *e /a 8. .8mar /=$ i. _irg8la mobila +im"la "re3i'ie.
DDD*a +e e%traga: +em.8l +7 e%"o.e.t8l e7 ma.ti+a m +i +a +e a6i+e'e.
DD(*a +e tra.6orme i.tii ma.8al $ i. _irg8la mobila +im"la "re3i'ie)
DD$(10)=1000(2)
DD*=0E
DD1000=17000B2e3 .ormali'at
DD&=130(10)=1000 0010 (2) = $2 (16) =$B16C2=130
DDM=00000000000000000000000
DD0 10000010 00000000000000000000000
DD41000000
=i.3l8/e Fio+treamG
8+i.g .ame+"a3e +t/E
_oi/ mai. ()
a6loat /=91!.E
6loat .E
8.+ig.e/ i.t Bl=(8.+ig.e/ i.tB)(@/)7+7 e7 m7Bt=(8.+ig.e/ i.tB)(@.)7"=1!7kE
DD+=Bl @ 0%$0000000E
+ = BlGG31E
DDe=Bl @ 0%7M$00000E
e = (BlFF1) GG 24E
DDm = Bl @ 0%007MMMMME
m = (BlFF9) GG 9E
3o8t FF+FF< <FFeFF< <FF 4e% FFmFF< <FFe./lE
Bt=+ FF 31 b e FF 23 b mE
3o8t FF.FFe./lE
DD *e /a .r 1! i. /e3imal 7 +a +e 3o.+tr8ia+%3a re"re'e.tarea l8i i. _irg8la mobila.
i6 ("G0)
+=0E
el+e
+=1E
k="E
e=0E
`4ile (k G 1)
a
kGG=1E
eCCE
c
m=("FF(329e))GG(329e)E
Bt=+ FF 31 b e FF 23 b mE
3o8t FFtFFe./lE
c
//Se da un sir de cifre s = 1250.
//Sa se calculeze numarul intreg corespunzator atoi!"
// numarul in #irgula mo$ila atof!
// Sa se compare rezulatele cu cele o$tinute prin atoi si atof
>include <io-tream
u-in? name-4ace -td;
void main ()
{ c%ar -irB"77C!""#97", &t;
un-i?ned int c ! 7,K!7;
1loat d,n;
un-i?ned int -, e ! 7, 5, m,l, &? ! (un-i?ned int&)(Fn);
t ! -ir;
$%ile (&t)
{
c ! c&"7'(int)(&tDY7Y);
&t'';
(
cout <<c<<endl;
c!atoi(-ir);
cout<<c<<endl;
)) Tran-1orm to 1loatin? 4oint
)) calculate -
i1 (c 7)
-!7;
el-e
-!";
)) calculate e and 5
l ! c;
$%ile (l")
{
l!";
e'';
(
5 ! e ' "#;;))"7#,("7)!"7777777777(#) "7#8("7)!""""""""""(#)
)) calculate m
l!7;
$%ile (K'' < e)
l!(l<<")'";
m ! c F l;
)) a--em+le t%e 1loatin? 4oint num+er
&?!(-<<8") Z (5<<#8) Z (m << (#8 D e));
d!(1loat)ato1(-ir);
cout <<d<<endl;
cout <<-<<" "<<5<<" "<< n <<endl;
(
ProbIema Trim: Se da siruI de caractere x [100] = " Negru Voda 93 ". Sa se
gaseasca siruI y care incepe cu primuI caracter diferit de spatiu, sa se eIimine spatiie de Ia
sfirsit si ceIe ne-necesare din mijIoc si sa se afiseze. (trimIb, trimtb, trimmb)
=i.3l8/e Fio+treamG
8+i.g .ame+"a3e +t/E
_oi/ mai.()
a 34ar % W100Y = < Iegr8 To/a 93 <7 B+ = %7 Bt7 yW100YE
// Trim the Ieading spaces (trimIb)
`4ile (B+ ;= AX0A)
a
i6 (B+ ;= A A)
a
breakE
c
+CCE
c
// Trim the traiIing spaces (trimtb)
t = +E
`4ile (BtCC ;=AX0A )E
t 9= 2E
`4ile (Bt99 == A A)E
B(t C 2) = AX0AE
// Trim the midIe spaces (trimmb)
t = yE
`4ile (B+ ;= AX0A)
a
i6 (B+ ;= A A)
a
BtCC = B+CCE
c
el+e
a
i6 (B(+91) == A A)
a
+CCE
c
el+e
a
BtCC = B+CCE
c
c
c
3o8t FF <+ir8l y e+te: < FF y FF <=< FF e./lE
c
//Se da o suma s si o dobanda d .
//Sa se construiasca un vector de 100 de eIemente cu suma disponibiIa in fiecare an.
//Nu se mai fac aIte depozite.
#incIude <iostream>
using namespace std;
void main ()
{doubIe x[100], s = 1200. , d = 0.1, inf=0.03,dep=1200.;
short i;
x[0]=100;
for (i=1;i<100;i++)
{
s = s + dep;
s = s + (s*d);
s = s - inf*s;
x[i]=s;
cout <<i<<"="<<x[i]<<endI;
}
}
I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I
1)*e /a o matri3e "atrati3a. 5al38lati eleme.tal ma%im "ar /e e" /iago.ala "ri.3i"ala +i +8ma eleme.telor
im"are.
2) *e /a o matri3e "atrati3a /e 3%3 /e .8mere .at8rale. 5al38lati +8ma eleme.telor /e /ea+8"ra /iago.alei
"ri.3i"ale7 3ate eleme.te "are +8.t "e /iago.ala "ri.3i"ala +i elem.t8l ma%im /e +8b /iago.ala "ri.3i"ala
i.t % W3YW3Y = aa17273c7 a47!76c7 a77$79cc7 ma% = %W1YW0Y7 + = 0E
+4ort i7 ]7 k = 0E
6or (i = 0E i F 3E iCC)
6or (] = 0E ] F 3E ]CC)
i6 (i F ])
+ = + C % WiYW]YE
e./i6E
i6 (i == ] @@ % WiYW]Y ? 2 == 0)
kCCE
e./i6E
i6 (i G ] @@ %WiYW]Y G ma%)
ma% = % WiYW]YE
e./i6E
e./6orE
e./6orE
"ri.t (t+8ma eleme.telor /e /ea+8"ra /iago.alei "ri.3i"ale = u7 +)E
"ri.t (t.r eleme.telor "are /e "e /iago.ala "ri.3i"ala = u7 k)E
"ri.t (telem.t8l ma%im /e +8b /iago.ala "ri.3i"ala = u7ma%)E
3)*e /a o matri3e "atrati3a.5al38lati +8ma eleme.telor 3are a8 8ltima 3i6ra 2 a6late "e /iago.ala "ri.3i"ala
+i 3ate eleme.te /i_i'ibile 38 3 +8.t /ea+8"ra /iago.alei "ri.3i"ale
i.t %W3YW3Y = aa17273c7a47!76c7 a77$79cc7 + = 0E
+4ort i7 ]7 k = 0E
6or (i = 0E i F 3E iCC)
6or (] = 0 E ] F 3E ]CC)
i6 (i == ] @@ %WiYW]Y ?10 == 2)
+ C= %WiYW]YE
e./i6E
i6 (i F ] @@ (% WiYW]Y ? 3 == 0))
k CCE
e./i6E
e./6orE
e./6orE
"ri.t (t+8ma eleme.telor 3are a8 8ltima 3i6ra 2 a6late "e /iago.ala "ri.3i"ala e+te:u7 +)E
"ri.t (t .8mar8l eleme.telor /i_i'ibile 38 3 +8.t /ea+8"ra /iago.alei "ri.3i"ale e+te:u7 k)E
DD*e /a o matri3e "atrati3a.5al38lati +8ma eleme.telor 3are a8 8ltima 3i6ra 2 a6late "e /iago.ala
DD"ri.3i"ala +i 3ate eleme.te /i_i'ibile 38 3 +8.t /ea+8"ra /iago.alei "ri.3i"ale
=i.3l8/e Fio+treamG
8+i.g .ame+"a3e +t/E
_oi/ mai. ()
a i.t %W3YW3Y = aa17473c7a471276c7 a77679cc7 + = 0E
+4ort i7 ]7 k = 0E
6or (i = 0E i F 3E iCC)
a
6or (] = 0 E ] F 3E ]CC)
a
i6 (i == ] @@ %WiYW]Y ?10 == 2)
a
+ C= %WiYW]YE
c
i6 (i F ] @@ (% WiYW]Y ? 3 == 0))
a
k CCE
c
c
c
3o8t FF <+8ma eleme.telor 3are a8 8ltima 3i6ra 2 a6late "e /iago.ala "ri.3i"ala e+te:< FF + FF e./lE
3o8t FF <.8mar8l eleme.telor /i_i'ibile 38 3 +8.t /ea+8"ra /iago.alei "ri.3i"ale e+te:< FF k FF
e./lE
c
DD *e /a o matri3e "atrati3a.5al38lati +8ma
DD eleme.telor 3are a8 8ltima 3i6ra 2
DD a6late "e /iago.ala "ri.3i"ala +i 3ate
DD eleme.te /i_i'ibile 38 3 +8.t /ea+8"ra /iago.alei "ri.3i"ale
"rogram "roblema3E
_ar %:arrayW1..371..3Y o6 i.tegerE
i7]7k7+ :i.tegerE
begi.
k:=0E
`ritel.(A-.tro/83eti matri3ea %:A)E
6or i := 1 to 3 /o
6or ] := 1 to 3 /o
begi.
`rite(A%WA7i7A7A7]7AY=A)E
rea/l.(%Wi7]Y)E
e./E
6or i := 1 to 3 /o
begi.
6or ] := 1 to 3 /o
begi.
i6 (i = ]) a./ (%Wi7]Y mo/ 10 = 2) t4e.
+ := + C %Wi7]YE
i6 (i F ]) a./ (%Wi7]Y mo/ 3 = 0) t4e.
k := kC1E
e./E
e./E
`ritel. (A+8ma eleme.telor 3are a8 8ltima 3i6ra 2 a6late "e /iago.ala "ri.3i"ala e+te:A7 +)E
`ritel.(A.8mar8l eleme.telor /i_i'ibile 38 3 +8.t /ea+8"ra /iago.alei "ri.3i"ale e+te:A7k)E
e./.
4)*e /a o matri3e . Bm.Mormati 8. _e3tor 3are a8 "e.8ltima 3i6ra /i_i'ibila 38 3.
!)*e /a o matri3e .Bm.5al38lati elemet8l ma%im "ar /e "e "rima li.ie.
-.t %W2YW3Y = aa17273c7a3747!cc7 ma%E
*4ort iE
Ma% = % W0YW0YE
Mor (i = 0E i F 3E iCC)
-6 (%W0YWiY G ma%)
Ma% = %W0YWiYE
&./i6E
&./6orE
#ri.t (teleme.t8l ma%im /e "e "rima li.ie e+te:u7 ma%)E
DD"roblema!
DD*e /a o matri3e .Bm.
DD5al38lati elemet8l ma%im "ar /e "e "rima li.ie.
_ar %: array W1..271..3Y o6 i.tegerE
i7]7ma% :i.tegerE
begi.
`ritel. (A-.tro/83eti matri3ea %:A)E
6or i := 1 to 2 /o
6or ] := 1 to 3 /o
begi.
`rite (A%WA7i7A7A7]7AY=A)E
rea/l. (%Wi7]Y)E
e./E
ma% := % W171YE
6or i := 1 to 3 /o
begi.
i6 %W17iY G ma% t4e.
ma% := %W17iYE
e./E
`ritel. (Aeleme.t8l ma%im /e "e "rima li.ie e+te:A7 ma%)E
rea/l.E
e./.
6)*e /a o matri3e "atrati3a (.) /e ) .8mere .at8rale.5al38lati elemt8l mi.im im"ar /e
/ea+8"ra /iago.alei +e38./are.
i.t % W3YW3Y = aa17273c7a47!76c7a77$79cc7 mi.E
+4ort i7 ]7 k = 0E
6or (i=0E iF3E iCC)
6or (] = 0E ] F 3E ]CC)
i6 ((i F ]) @@ (%WiYW]Y ? 2 == 1))
i6 (k == 0 bb %WiYW]Y F mi.)
mi. = %WiYW]YE
k = 1E
e./i6E
e./i6E
e./6orE
e./6orE
i6 (k == 0)
"ri.t (t.8 e%i+ta mi. im"aru)E
el+e
"ri.t (tmi.im8l e+te:u7 mi.)E
7)*e /a o matri3e .Bm.5al38lati "t. 6i3are 3oloa.a 3ate eleme.te a8 "e.8ltima 3i6ra 2.
$)*e /a o matri3e "atrati3a.Mormati 8. _e3tor 38 eleme.tele "are a6late /ea+8"ra /iago.alei "ri.3i"ale.
#roblema $.
*e /a o matri3e "atrati3a /e .8mere .at8rale.
Mormati 8. _e3tor 38 eleme.tele "are a6late /ea+8"ra /iago.alei "ri.3i"ale.
i.t % W3YW3Y = aa17273c7a47!76c7a77$79cc7 y W9YE
+4ort i7 ]7 k = 0E
6or (i = 0E i F 3E iCC)
6or (] = 0E ] F 3E ]CC)
i6 (i F ] @@ (% WiYW]Y ? 2 == 0))
y WkCCY = %WiYW]YE
e./i6E
e./6orE
e./6orE
"ri.t6 (tTe3tor8l eleme.telor "are /e /ea+8"ra /iago.alei "ri.3i"ale e+te :u7 y)E
=i.3l8/e Fio+treamG
8+i.g .ame+"a3e +t/E
_oi/ mai. ()
a i.t %W3YW3Y7yW9YE
+4ort i7]7k = 0E

3o8t FF <-.tro/83eti matri3e % < FF e./lE
6or (i=0 E iF3 E iCC)
a
6or (]=0 E ]F3 E]CC)
a
3o8t FF <%W<FFiFF<7<FF]FF<Y=<E
3i. GG %WiYW]YE
c
c
6or (i=0 E iF3 E iCC)
a
6or (] = 0 E ]F3 E ]CC)
a
i6 ((i F ]) @@ (% WiYW]Y ? 10 == 2))
a
yWkCCY = %WiYW]YE
c
c
c
3o8t FF <Te3tor8l eleme.telor "are /e /ea+8"ra /iago.alei "ri.3i"ale e+te :<FF e./lE
6or (i=0EiFkEiCC)
3o8t FF yWiY FF e./lE
c
DD*e /a o matri3e "atrati3a /e .8mere .at8rale.
DDMormati 8. _e3tor 38 eleme.tele "are a6late /ea+8"ra
DD/iago.alei "ri.3i"ale.
"rogram "roblema2!E
_ar %:array W1..371..3Y o6 i.tegerE
y:array W1..9Y o6 i.tegerE
i7 ]7 k :i.tegerE
begi.
`ritel.(A-.tro/83eti matri3ea %A)E
6or i:=1 to 3 /o
6or ]:=1 to 3 /o
begi.
`rite (A%WA7i7A7A7]7AY=A)E
rea/l. (%Wi7]Y)E
e./E
k:=0E
6or i:=1 to 3 /o
6or ]:=1 to 3 /o
i6 (i F ]) a./ (% WiYW]Y mo/ 2 = 0) t4e.
begi.
k := k C 1E
yWkY := %Wi7]Y
e./E
`ritel. (ATe3tor eleme.telor "are /e /ea+8"ra /iago.alei "ri.3i"ale e+te:A)E
6or i:=1 to k /o
`ritel.(yWiY)E
e./.
9)*e /a o matri3e "atrati3a.5al38lati +8ma eleme.telor "rime /e "e /iago.ala "ri.3i"ala.
10)*e /a o matri3e .Bm.5al38lati "t. 6ie3are 3oloa.a elem.t8l ma%im 3are are 8ltima 3i6ra egala 38
"e.8ltima.
11)*e /a o matri3e .Bm.Mormati 8. _e3tor 38 eleme.tele /i_i'ibile 38 %(3itit)7a6late +8b /iago.ala
+e38./ara.
12)*e /a o matri3e .Bm.5al38lati +8ma eleme.telor "rime /e "e "rima li.ie.
13)*e /a o matri3e "atrati3a.Mormati 8. _e3tor 38 elemetele "rime /e "e /iago.ala +e38./ara.
14)*e /a o matri3e .Bm.5al38lati "t. 6ie3are li.ie +8ma eleme.telor .e"rime.
1!)*e /a o matri3e .Bm.5al38lati "t. 6ie3are 3oloa.a +8ma eleme.telor "ali./rom.
16)*e /a o matri3e .Bm.5al38lati "t. 6ie3are 3oloa.a elemt8l ma%im 3are e+te /i_i'ibil 38 3
17)*e /a o matri3e .Bm.5al38lati "t. 6ie3are li.ie *8ma eleme.telor G=% +i F= y (%7y 3itite)

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