You are on page 1of 11

SubprogrameDefinite de Utilizator

m Subprogrameimplementatein manierd iterativd

2.1.1Testecu aleseremultipld si duald

1. Ce seva afigain urmaexecutiriiprogramuluiurmdtor:

va t r x , y,z:byte; #inc lude < ios t r e a m . h >


prooedure P (a,.b :byte;var c :byte) ; L' r t - x , y , z i
va r a ux: byte; v oid P( int a,int b, int &c)
beEin { int aux;
au x : = ai a: =b -a,' aux=a; a=P-a ;
c: = c - aux; b:,=a ux; c=c-aux ; b=aux;
end; )"
begin rh.-r
x: : 1 0 ; y::100 ; z::2 00 ; ltffU main ( )
pl x , y , z); { x:10; y=100; z=200;
wr i t e ( xrt ', y,' ',2,' '); P(x' y, zl ;
P ( x ' Y ,z); COUt(<x<<,, ', 11y1K', ',11211"
wr i t e ( xrt ' , y, ' ' ,z); P( x , y , z ) ;
end. c out < < x < < "
)

a) 90 1 0 1 9 0 176 90 100 c ) 1 0 1 0 0 1 90 10 100 190


b ) 10 1 0 1 9 0 10 10 180 d ) r-0 1 0 0 1 90 10 100 180

2. Ce seva afi$ain urmaexecutiriiprogramuluiurm[tor:

v a r a :byte; #inc lude < ios t r e a m . h >


pr o o e d ure P(x:byte; var y : by t e) ; int a = 11;
begin v oid P( int x, i n t &y)
y: =y * x ; *.=y+!i {
wr i t e ( xr' t) y = y x x ; x = x +yi
',yr'
end; c o u t(< x < < "
begin I tnr t
a: =1 1 ; +cirt main O i
P (a r a); P( a, a) ;
wri t e ln (a) ; c out < < ai
end. )

a) 11 1 2 1 1 1 c) zlz zqz z .!z


b) 132 t2 r t2t d) 1 1 , L 2 t 1 ,2r

9l
-
3. In urma apeluluiP(n,x) se doregteafigareacifrei maximea unui num6rnatural
prin intermediulapeluluiwrite(x),respectivcout<<x.Identificali antetulcorectal
subprogramuluiP.
a)
f u n c t i on P (n : inte ge r) :b y t e; int P (int n)

b) b)
procedure P (var a,b: integer) ; v oid P( int &x,int &y)

pr o c e dure P (n , x: inte ge r) ; void P (int n, int x )

d)
procedlrre P (x : j-nteger;rrar n :byte) ; v oid P( int x, int &n)

4. Subprogramul P efectueazd gtergereadinh-un vector,transmisca parametru,a


tuturor elementeloregale cu o valoarecunoscuti. Subprogramulprimeqte,prin
intermediulaltor doi parametriintregi, lungimeatablouluigi valoareaelementelor
ce vor fi gterse.Identificafi antetul corect al subprogramuluiP. Pentruvarianta
Pascal,seconsideriurm[toareadefinilie detip: type sir:arrayp..100] of integer.
a)
fun c t i on P (a:sir;
n , x: inte ge r ; ) : s ir ; int P( int a[1 0 0 ] , int n, x)

b) b)
p ro e e d ure P(va r a :sir; v oi- d P( int a, int &x, int &y)
nrx: int eger ) i

c) v oid P( int a[100],int &n, int x)


procedure P (var a: s j.rivar n !byte;
x:in teg er); d)
v oid P( int a[100], int x, int n)

pr o c e dure P (a:sir; n,x:int eger ) ;

5. Ce valori vor fi afigatein urmaexecute


rii urmltorului program?
var x :lnt eger; #ilc f ude ( iost r e a m . h >
r,E n t.x ;
proc e dure p1 (y: in teg er) ; 'void
p1 (int y)
var x : lnE eger ; { int x,'
begin 7=y; x=2;
x::y; x: = 2; write (x,, , ); y:=x; c o u t< < x < < t ' ; y= x ;
end; ]
p ro c e dure p2 (var y: in teg er ) , . void p2 (int &y)
begin { x :y ; x = 3 ;
x:: y ; x: : 3; wri-te (xr' ') ; y : = x ; c o u t< < x < < ' ' ; y= xi
end; )
92
E
"p! :J-

beSirg
tru-
JIIIL.CL ma]-n ( )
x: =l:i i x:1 ;
p1 ( x ) ; w rite (x, | ') ; P1 (x ) ; c o u t< < x< < ' ' ;
p2 (x ) ; w riteln (x) ; p 2 (x ) ; c o ut< < x< < endl ;
end. )

a) 2 2 3 3 c )2 1 3 3
b)z 2 3 2 d)z r. 3 2

6. Ce valori vor fi afiqatein urmaexecutirii urm[torului program?


v ar x : integer ,' #inc lude < ios t r e a m . h >
int x ;
p r o c e d ure p1 (x: inte ge r) ; v oid p1 ( int x )
v ar y : int eger; { int Y= 10;
beEin x=x+y;
y: =10 ; x: = x + y; write (x , ' ') i co9lSSiSS-l- ';
end; I
procedure p2 (var x: integer) ; void p2 (int cx)
v ar y : int eger; { int y,
beEin y = x ; x + = 3; x+=Y ;
y: =x, ' x : = x + 3; c out < ( x ( ( t t;
x: : x + y; w r ite (x,' '); ]
end;
.t
l4T
begin irci.rd"-main o
x::24; 1 x = 20;
p1 ( 2 0) ; write (x, ' ') ; p1 ( 20) ; c ou t ( ( x ( ( r ';
p2 ( x ) , ' w ri-te (x, ' ') ; p2 ( x ) ; c out ( <x <<e n d l ;
end. )

a ) 20 20 43 20 c) 30 20 .43 20
b) :o 20 43 43 d) zo 20 4 6 46

7. Ce valori vor fi afiqatein urmaexecuteriiurmdtoruluiprogram?


v ar x , y: integer,' #inc lude < iost r e a m . h >
int x r y ;
proc e d ure p (va r a ,b: in teg er ) ;
v ar x : int eger; v oid p( int &a,int &b)
begin { int x ;
x:=a*b; a:=a +x; b:=a+x; x = a* b; 4+ : ; , . b : 6 *X ;
wr i t e ( arr 'rb r' 'rxrt ') ; c out < < a< < t t <<b << t ' ( ( x ( ( t t;
end; ] at
begin
tn+
'+sid main o
x:= 5 ; y:= 10; { x=5; y=lQ;
P ( x , y) ; w rite (x, ' ' ,y) i P (x , Y ) ; c o ut< < x< < ' ' ((y;
end. )

a) ss los 50 105 10s c) 5s 105 s0. s5 ss


b) ss ss so ss 5s d) ss 1os so s5 1os
93
I
"l+
8. Ce val0ri vor fi afigateln urma e:iecutirii urm[torului program?

var n:inte ge r; #inc lude <i o s t r e a m . h >


function cif (war x : integer) :byte; int n= 2 1 9 8 7 ;
var c:b yte ; int c if ( i n t & x )
begin {
c:= x 'no d l-0; x:=x div 10; int ci
cif : = (c+x 0o d 1 0)n od 10; c = x * 10; x/= 10;
end; re tu rn (c+ xB 10)810;
begin I;-?'
nz= 2 19 87 ; v#Lbmain o
writ eln (cif (n ) +c if ( n) ) { c o u t < < ci f (n) + ci f (n) ;
end. ]'

a) t2; b) r o ; c) 32, d) so.


9. Indica{icaredintreurmltoareleantetede funcfii suntcorectesintactic:

a) a)
f,unction F1 (z byte) ; int F1 (Lnt z,l')

f,unctio n F2 (xry) :r eal; i n t F 2 (i nt x,y)


_- F

c) ...e)
function F3 (y:byte) : t ex t i FEIA*.-F3(1nt v)
\)-
d) d)
f unct io n 1 2F (c:cha r ) : r eal; fl o a t 1 2F(ahar c)
e) ^!

f unct io n F4 (y:b yte ; z : by t e) : r eaf i float F4 (int x, i.nt y)

10. Identificafi care dintre tuncfiile ;"r"#; un numer real,


reprezentend "rrnuio*.
gi
mediaaritmetici dintrecitul restulla implrlirea a doudnumere
intregi,transmisecaparametri:
a) e)
function M (x, y: inte ger ) : by t e; in't M(int x,y)
begin {
M := (x d iv y + xm ody \ / 2; return (x/y + xby) /2;
end; )
b) b)
function M (x, y: integer) : real; f loat M(int x,int y)
var med ie:re al; i
begin float medie;
medie:=xd ivy+xmod y; m edie=x / y . +x t y ;
M ,: maAia/ 1. return med.iel2;
end; ]
c)
function M (x, y: inte ger ) : r eal; f loat M(int x,int y)
begin t
M: = xd ivy+xno dy; return xly + x%y;
M z= M/2 ; )
end;

94
-
Y
d) it d)
f , u nit ion M(x, y: inte ge r) : r eali f loat M ( in t x,int y)
begin
{
x := x div y,. x ,= x /y ;
y : =xnody; y -x ty ;
M : = (x + y)/2; re tu rn (x+ y112.
end,'
1 ,.

11. considerim definiti funcfia prim, carereturneazitrue in vafiantapascal,


respectivI in variantaQ++,daci valoareaintreagl ffansmisdca parametrueste
un
numdrprim 9i/a/se / 0, in caz conf:ar.Considerimun tablouunidimensionala
ce
conline n elementede valori intregi. Identificafi care dintre urmltoarelefuncfii
returneazlindicele drna al primului elementnum[r prim. Daci acestanu confine
nici un elementprim, sereturneaz[valoarea-1.
Pentru varianta Pascal, se consideri urm[toarea definitie de tip:
type
sir=array[0..100]of integer,deciprimul elemente!!9q[9].

a) a)
f u n c tion p (a : sir; n :byte) : int eger ; i n t p 1 .(i n t a [101] , i nt n)
v a r i: int eger;
{
begin i n t i ,x = - 1;
p : = -L; fo r (i = 0 ; i < n; i + + )
f o r i-: = 0 to n -L do i tr (p ri m (al i l )) x= i .;
i f prim(atil) the n p: = i; return x;
end;
)
b) b)
f , u n ct ion p (a : sir;n :b yte ) : int eger i i n t p 2 (i n t a[101], i nt n)
v a r x: intege r;
{
begin i n t x :-1 ;
x : = -1; do x++;
repeat while . ilpri.n.(a Ix] ) a& (x<n) ) ;
rnc (x) if (x==n) return "':"'
until (prj-m (a Ix] ) ) or (x=n) ; else return x;. -1;
i f x= n then p ::--
i-
et.se p ::x;
end,'

c) c)
f u n c t ion p (a : sir;n:b yte ) : int eger ; i n t p 3 (i n t a[101], i nt n)
v a r x, i: integ ert
{
begin i n t 1 ,x = -1;
x : = -1; rh i l e (x < n -1) {
rhile x<n-1 do begin ,x + + ;
i n c (x) ; i f (p ri m .(al xl ) ) return x,"
i f , prj. m ( a [x] ) =tru e th en x : : n;
) ---
end; return .x-n-1-;
p: = x;
)'
end,'

95
I
d) d)
f un c t i oo p (a: sir;n :byte) : int eger ; int p4(int a[101], int n)
var i : int eger; {
begin i n t i rx = 0 ;
fo r (i = 0 ; i < n; i + + ;
fo r i: = 0 t o n -1 d o i tr (p ri n ( i ) ) x:i ;
if prim(i) th en return x;
begin )
-i .
^.
Y ' -L I

e xj-t ;
end
end,'

12. Considerdndurmitorul program,ce valori vor fi afiqatein urma executirii


acestuia?

t y p e sir= arra y[1..1 0] of int eger ; # i n c l u d e < i o s tream. h)


va r a :siri i,n:in teg er; i n t i ,n = 6 , a [10] ;

pr o c e d ure x(var a:sir; v o i d x (i n t a[10], i nt& n)


var n: inte ge r ) ; iint i=0, j;
var i r j: int eger; w h i l e (i < n ) {
begin i f (a ti l < 0) i
fo r(j = i;j < n-1rj + + )
while i<:n do a Ij I = a tj + 11 ;
if, a [i ] <0 tlren begin .l ,

f or j::i to n -L do )
aI j]:= atj+11 ; els e i+ + ;
d ec (n) ; ]
end ]
e l s e inc (i) ; t4t-
end; *aid maln o
{
begin a t0 l = -3 '
a l ]-l = 2 ,
a [2 ] = -1 '
a[ 2 ] : = 2; a[3]:=-1; f,o r (i = n /2 ; i < n; i + + 1
f o r i: : 1 to n div 2 d o a l i l = a l n -i -11;
aln -i+1 1::a lil; x (a , n ) ,'
x (a r n ) ; fo r (i = 0 ; i < n; i + + ;
fo r i : :1 to n do write (a[i ] , ' ' 1. c o u t< < a Ii ] < < ' 'i
end. )

a ) -3 -1 -1 -3 ilz 2
b) -z -2 d)s 3 3 3

13. Considerlm un tablou unidimensionala, ce confine n elementede valori


intregi. Identificafi care dintre urmltoarele func1ii returneazi indicele din a al
primului elementde valoare0. Dac[ acestanu continenici un elementnul, se
returneazd valoarea-1. PentruvariantaPascal,se consideriurmltoareadefinilie de
tip: type sir:atay[0..100] of integer,deciprimul elementestea[0].
96
-
p
at ,,
a)
f urt dtion p (a : sir,. n: by t e) : int eger ; i n t p (i n t a[101], i nt n)
v ar r: tnte ge r;
i
begin
int i, x=0,.
p: = -1;
f,or ( i=0 ; i<n,. j_++)
for i: = 0 to n-1 d o
i f (a ti l = = 0) x= i -
. if a[ i]=0 th en p :=i , . rGtura x;
end; )
b) '.
b)
function p (a : sir;n :byte) : integer; int p (i n t a[101], i nt n)
v ar x: inte ge r;
{
begin
i n t x = -1;
X::-1 i
do x++;
repeat
rh i l e ( (a[x] != 0) & &(x< n) );
inc (x)
returrr x;
until (a[x]=0) or (x=n) ;
]
p : = x; end,'
c)
^t
i n t p (i n t a[101], i nt n)
function p (a : sir; n :byte) : integer;
{
v a r x, i: in teg er; o k:b oolean; i n t i ,x =-1;
begin
rh i l e (xcn-1)
x : : -1; o k:=true ;
rhi].e (x<n-1)
{
and ok do begin x++ r'
inc (x) ;
i f, (a t xl = = 0)
if, (a[1]=91 11t"rt o k : = f als ei return x;
end;
)
i f ok t he n p:=-1 e ls e p: = x , . return x-n;
end;
)
d)
d)
function p (a : sj_r; n :byte) : integer; ia t p ( in t a[101], i nt n)
var x: integer,.
i
begin
i n t x = -1 ;
x : = -1;
rh i l e ( (a Ix+ 1 ] ! = 0) e& (x< n) )
r hile( (a[x+1 ]<>0)a nd (x < n- 1) x++;
) do
inc (x) ; retutrr x+L,.
p : :x+ 1;
)
end;

t4. Ce seva afi$ain urmaexecutiriiurmitorului program:


var a:string,. var b:char; * inc lude (iostream.h>
#inc lude <s t r i n g . h >
procedure x (var s:string; char *a, b;
va r c:cha r ) ;
begin void x(char *S, ctrar ec)
i
rhile c=s [length (s) ] do lhile ( c ==s I s t : : l e n ( s ) - 1 ]
)
d eLete (s,len gth (s) , 1) ; s I s t r len ( s ) - f 1 =6 t
i f , lengt h(s)>0 tlren if ( s t r len ( s ) >0 )
: = up ca se (s Ilen gt h ( s ) ) c = s I s t r le n ( s ) - 1 ] ,
]
e 1 ge c:= t . t; C= C) = r ar & & C <: r Z , ? C + r A r _ f 'a r : C ;
end; €tlge c= r .tr .
i
97
-
t
**' ,tf
begin ir i,itfef main O {
il^^-].iitr. 'a: tit;
a: = ' co p iiir; b:=rl' ; ^ -
d-veYLLLtp

x(a,b) ; x (a rb ) ;
writ eln (a, b) ; c o u t< <a< < b< < endl ;
end. )

a) cope b) c o p i i i . c ) c opii i i d) copiiiP

15. Caredintreurmltoarelefuncfii returneaziceamai mareputerealui 2 careeste


mai micl sauegalecu o valoarenatural[(<15),transmislca parttmetru'!
a) a)
f unct ion F (n:b yte ) : int eger ; i n t F (int n)
var x: rnEe ge r; {
begin i n t x : -1;
x: = -1 ; do
repeat x++;
i. nc (x) ; w h i l e (1 < < x < = n );
until 1 shl x>n,' re tu rn 1 < < (x-1);
F := 1 sh l (x-1); )
end;

b) b)
function F (n:b yte ) : int eger ; int F (intr.n)
var x: lnte ge ri t
begin int x=1 ;
x: = 1; rhi1e (x<n) xx:2;
while (x<n) do x: = x * 2; return x;
F ::x; )
end;
c)
c) int F( i n t n)
function E (n:byte) : integer; {
var x:in teg er; int x = 1 ;
begin do
x: : 1; x l= 2;
repeat y hile ( x <n ) ;
xl.= x* 2 i return x-1;
until x>=n; )
F := x- 1 ;
end; d)
d) in t F ( int n)
f,unction F (n:byte) : integer; {
var j- , x: j-n teg er; iat i,x;
begin x = 1;
x: : 1; f or ( i =1 ; i <=n i i ++)
f or i:=1 to n do begin {
x::x*2; x*--2i
if x<=n then begin if ( x <=n ) returalx;
f: =xi e xit; )
end;end,' return x-1;
F : = x-1; )
end,'

98
-
:t"

16 . Ce seva afiqain urma executirii urmitorului progrcm:


0

-p
var a: rea.l_;
function
begin
F (var x: real) : real;
* inc lude
float
<stdio.h>
F(float &x)
{ x = j :_ 2 _ -Q ? x: -(x));
I
x := abs (x * 10 ); rl
F := int (x/L0 ) + frac ( x ) ; re tu rn i n t(x/1O) + x- int ( *l;
end; ]r t
begin
'JKFmain
tr
a : : 1 5.25,. { f loat a= 1 5 . 2 5 ;
w r i t e(F (a): Q3!,")i pr int f ( "% 0 . 2 f " , F ( a ) ) ;
w r i t e(F (a): 0:2 ,' ,) i pr int f ( "2 0 . 2 f " , F ( a ) ) ;
w r i t eln (a z0 :2); pr int f ( "%0 . 2 f " , a ) ;
end. ]
a) 1s . s o 15.s0 15 2 s.00 c) 1s.so 1s 2 . 0 01 s 2 s o
.0
b) rs . s o 1 s.so 1 s2 .so d) rs.50 1s 2 .o o 1 s 2 .s o
17. C6teelementedivizibile cu l0 se vor afi$a in urma executdrii programului
urmdtor:
va r x,y:byt e; # i n c l u d e <i ostream.h)
firnction F (var y:byte;x:byte) :byter. j .n t F (i n t &y, i nt x)
begin i
y : =y div 10 + y,.
Y :Y/L } + x ;
F : = x+ y ; return x + y;
end; )
beEin
fmain ( )
x : =101; y :=1-0 ; { i n tx = 1 0 1 , y= 10;
w r i t e (F (x, y; , ' ') ; c o u t< < F (x,y)(("
| | ,)i ";
w r i t e(x, ,yr, c o u t < < x ((tt " (( y(< " " ;
w r i t eln (F (x, y) ) ; c o u t< < F ( xry);
end. )

a)1 b)2 d )4
$3
18. in urma apeluluiwrite(P(n,.r)), respectivcout<<p(n, .r), se doregteafi$area
num[rului de aparilii al cifrei x in scriereazecimale a numerului intreg z.
Identificafi antetulcorectal subprogramuluip.

a)
procedure p (n, x: integer)
void P (int n, int x)

b)
function P (x, c: integer) : integ.er int P (int x, int c)

c)
fu n c t ion P (n : rea l_;x:byte) : by t e int P( int n[10], int x)

d) d)
fu n c t i on P (x: in teg er,.n : c har ) : by t e v oid P( int x, fleat n)

99
-
-'8
urm[tor;
19.Con$derdmsubprogramul
''
"1'
.s
functilo n P (va r x: int eger ) : by t e; int P (int &x)
var s :byte,' { int s : 0 ;
beqin whi] ' e ( x ! : 0 )
t
while x>0 do begin ' 1 s+=xZ2;
mod 2 ; x::x div 2i 1 x/:2;
"' :s* x -.
end; )
return s,'
end,' ]

Considerdmcd variabila intreagi n, declarutdglobal,are valoarea32. Ce se va afi5a


in urma apelului write(P(n)+P(n)+1), respectiv cout<<P(n)+ P(n)+L?

a) z; b) :; c) a; d ) r.

20. Considerim secven{ade declardri urmdtoare:

var x:arra y[1 . . 1 0] of by t e; int x[100];

procedu re P1 (n : in t eger ) ; woid P 1 ( i n t n)


var x:in teg er; i char x;
begin
i
end;
uv oid P 2 ( f l o a t n,float x)
procedure P2 (n,x: reaf ) ; {
begin
l
end;
void main o
begin i

end. ]

Caredintreurmitoareleafirma,tiiesteadevdrate:

a) Elementulx[1] poatefi referit oriundein program,deci in oricaresubprogram


PI sau P2;
b) Programulsursdion{ine erori de sintaxe;
{) Elementulx[1] poate fi referit doar in programulprincipal (variantaPascal),
respectivnumaiin funcfiamain (vaianta C++):
d) Elementulx[1] poatefi referit doarin subproglamele
PI ti P2. i

100
-
"'*
m Sabprogromeimplementatetn manierd iterativd

Sectiunea2.7.7
L d). 6. b) il. b) 16. c)
2. b) 7. d) 12. c) 17. c)
3. b),d) 8. a) 13. c) 18. b)
4. c) e. e)' 14. a) 19. a)
5. c) 10. b) 15. a) 24. c)

Sectiunea2.7.3
fi:nctiorr det (x: integer) : integer; int det (int x)
va t z,y:in teg er; {
begin i, nl z , y i
Ya:xi zi=xi Y= x i z =x ;
while not prim,(y) do r hile ( !prim(y) )
inc (y) ; y ++;
wtli].e (z>1)and not prim(z)do r hile ( z >1 & & ! p r i m ( z ) )
d ec (z) ;
if (z<>1)a nd (x - z ( y - x ) t lr en Lf ( ( z ! =1 ) & & {x - z <y - x ) )
i^+ . -- zi
return
else else
llat -
gv L
.:tr.
.
J , return y;
end; )

fi:nctiqr cub (x : integer) :boolean; int cub (int x)


var i-: integrer; t
begin int i;

wh ile i* i-* i<x do inc ( i) ; while ( i *i *i <x ) i +t , '


cu b.=i* i* i:x. r et ur n ( j *i *i ==; ) , '
end; )
firnction poz (a : sir; n, k: integer) : i n t p oz(i nt a[],i nt n,i nt k )
by t e; i
var mx, 1, nr, i: int eger ; i n t pzrmx, j , nr, l i
begin rnx=0;
m x: =0; fo r (i = 0;i < n-k+ 1ri + + ) {
for i:=l- to n-k+1 do begin n r= 0;
nr: =0 ; for 1i :1' j < = i + k-1; j + + )
for j::i to i+ k - 1 do i f (cub(atj l )) nr+ + ;
if cub (a tj I ) t hen inc ( nr ) ; if, (nr>mx) {
if nr>mx then begin I t l ^ -l l l
.
, ^--.i
P L -L ,
.

mx:=n r; poz : = i; l
end; )
end; return pz;
end; )

220
-!

You might also like