Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Algoritmi Matrici
Algoritmi Matrici
a) A
I
12
= [~
4
3 2
1 4 3 4
1
c) A
= [~
12
~]
secventa de program
E N *),
;]
3. consrcerem patratica i
I
urmatoarea
cu n linii si n coloane
(n
fermata
fnlr JI. I
Varianta
C++
for (i=l; i<=n; i++)' for(j=l;j<n;j++) a[l] [n]=a[i] [n]+a[i] [j); for(i=l;i<=n;i++} for (j=l;j <n;j++) a[n] [i]=a[n] [i]+a[j] [ill cout«a [n] [n] ;
Pascal
C++
a va fl:
I VI 11\ III (
de mai sus:
n.(
za za
valorilor de pe ultima linie a matricei initiale; valorilor de pe ultima coloana a matricel initiale; valorilor din matricea initlala; valorllor de pe diagona'ia principala a rnatricil lnitiale secventa de program in care a este 0 matrice din numere 1ntregi, iar
a)
2
A
3
4.
= [;
4.
4 2
4
2 3
;]
b)
:=:
11
(;l 11 Ideram
urmatoarea
c) A
I" IIIollie cu n linii si n coloane (n E N *), fermata I, I k, .. sunt variabile de tip intreg: Varianta
to n do
= [~
2 2
~]
secventa Pascal
then ok:",O;
d) A
= [~
[~ ~] ~]
2 2
3
11
3 3
2 2 2
3
3
Pascal
Varianta
, for{i=l;i<=n;i++) k=n-l; tor(i=2;i<=n;i++)
{
C++ •
a[.\]['-]=i;
4. Consideram
urmatoarea
de program
to n do a[1,i]:=i;
fermata
I'"uh~
jl-l to n-k do [l,j]l=a[i-l,n-j+l]; jl.n-k+l to n do .Ci,j]IBa[i-l,j-n+k];
.I,d,
nup
for(j=l;j<~n-k;j++) ali] [j] =a[i-l] [n-j+l]; for{j=n-k+l;j<=n;j++} a [i] [5] =8 [1-1] [j-n+kJ;
Varianta
ok=l; for{i~l;i<=nii++) for(jal;j<~n;j++) if{ai[i][i]>-aU] cout«ok;
[;ll)
rularea secventel
a va fi:
socventel
valoarea
1 dacO
I nutll ~
fiecare coloana elementele sunt . strict mai mari decat elementul dlaqonalei pr.incipale atlat pe coloana respective: 11) rtementul maxim din rnatrice nu se gaseste pe diagonala principala; r.) in fiecarelinie, elementele sunt strict mai marl oecat elementul diagonalei prlnclpale aflat pe linia respective: d) In fiecare linie, elementele sunt strict mai rnari decat elementul diagonalei .ocundare aflat pe lioia respectiva.
1n
.1.)
a) Ultima linie a matricll Q!lt sortata cre~cat~r; b) Toate linlile matricii sunl scrtcte crescator,~.
c) Ultima. linie a ma~ri~i ~:~~C~o~t9t~ :;;~::s~:~~;esditor; d) Penulhma co loana secvent,e do program asupra melrlcl 7. Care este efectul urmatoarei Varianta C++ Varianta Pascal for (,1=0, i<n; i++) for i;5 1 to n do for{j=O) j<o;:I++) for j='" 1 to ndo A[ilI:lI",(l==j); Ali,:ll:=(i=j); 'f
Ccnsiderarn
,j
urrnatoarea
matrice
fermata
ttl I.
a) CreaZ8 matricea unitate; b) Creaza matricea nula; e) Transpune 0 matrice; cundara sunt initializate cu \ naa se d) Toate elementele situate pe -diago valoarea 1;
',lillllli\i
.illlUta,
l~:1 :,1 :0
cun=4
:3 14 15 16J
Varianta Pascal 1) .1.n*n*(n+1)*(n+l) div 2 . -, wdte(sl; II) .I-n*n*(n+l) div 2; w ita(s); nn*(n+1)*{2*n+l) div 6; writers); d) .I-o*n*(n+l)*(n+l) div 4' , writers);
a)
b)
:
.l
c)
d)
Varianta C++ s=n*n*(n+1)*(n+1)/2; cout«.s; s=n*n* (n+l) /2,; cout«s; s=n*(n+l)*(2*n+l}/6; cout«s; s=n*n*(o+l)*{n+l) 14; cout«s;
0
efectuarea urmatoarelor operatii, a devme Varianta Pascal for k:=l to n div2 do begin aux:=.alk,kl; alk,kl:=aln-k+l,n-k+1]; . .a [n-k+1] [n-k+l1: =au:x., end~ for k:;;;! to n div 2 do beg.1D j:=n-k+1; aux:sa[k,j1; a[k,jl:=aln-k+l,. n-j+l]; a[n_k+1,n-j+l]:=aux:; end;
urmatoarea matriee:
Varianta C++ for(k=Oik<n/2ik++) { aux=alk]tkli a[kl [kl=aln-k-ll tn-k-llJ a[n-k-ll [n-k-l] =au:x.; } for (k=0~k<n/2;k++) { j=n-k-1i au:x.=alkl[j]; . a[kl Ijl=aln-k-1} [n-J-l11 a In-k-ll [n-j-l1=au:x.;}
fJ
Ccnslderarn
urmatoarea
matrice
Varianta Pascal
I
or j:~1 to n-1 do
!f(a[i,j]>a[1,j+1])
0)1:1-0 ;
.it-I
to
do
then
wdte(ok)
Varianta C++ , ok::l; for{i=l;i<=n;i++) for(j=l;j<n;j++) H(a[l] [j]>a[i] [j+l]) ok=O; cout«ok;
Ollp5 rularea secventel de mal sus se va aflsa valoarea 1 daca :;;i numai dldi:
3 : ]. 11 12 16·
7
"
I
. matncea
[5 1
9
6 10
cu
n-.
b)
2
13
III nte numere
14 15
[:
:)
a
programul
l: :)
2
c)
1
Cd)
=
[;
2
1
:)
l~ ~l
0 2 0
13 2
3
9
1
4
.1
Varianta
alarray[l
15 5 8 2
II.U f 1\
din) i rill il.1 to n do tom: :11-1 to n d.o I ad(a[i,j]l; :l1-1 to n do WI.i .(a[l,n-i+l],' .1n;
IU
I
l;
#include<lostream.h> main() { int 11.[10]10) ,n,l,j; [ cin»n; for(i=O;i<n;l++) for(j",O;j<n;j++) cin»a[i] tjJ; for{i=O;i<n;i++) cout«a[i] [n-i-l]«n cQut«endl;
11. fie
matricea
18 2 ,1 7
4
5
2 9 1
cu
pragramul
u;
)1234 It) l
11 16
Varianta
CH
II
d(n),
II t
"I'
ru.;
1,-1 to n do :11-1 to n do ,u1(a[i,j]); ,-1 to n do' jl-1 to n do a[i,j J <>11. ,i] then [j t:=false; then write ('Da') else write{'Nu'); .1n;
lU
I
#include<iostream.h> main () ( int a [lOJ [1IH,n,i,j,t=l; cin»n; for(i=O;i<n;i++) for(j=O;j<n;j++) cin»a[1J [j]; for(i=O;i<n;i++) for (j = 0; j <0; j + +) if (a[i] i[j]I"'a[j] [i]) teO; if (t) cout«"Da"; else cout«"N'U"; cout«endl;
}
var a:array[I •.10,1 •.10] of integer; n,i,j,b,d:integer; begin read(n) ; for i:=l to n do for j:=1 to n do read(a[i,j]}; for i:=1 to n do begin b:eO; d:=O; for j :=1 to n d.o b:=b+a[i,j]; for j:=l to n do d:=d.+a[j] [i]; if b=d then write(i,' .); write1n; end, end.
cout«endl;
}
a) 1 2
b) 1 2 3 4 5
C) 2 3
d) 0 1 2
12. Fiecare din programele urrnatoare numeratate cu 1., 2., 3., 0011 IIlll a matrice. Asociati nurnarul programului cu matricea construita, b) == [~ : ~ :] 10 11 12
14 15
c)
a = [~
9
13
~ -: :] 1234
16 Varianta
1234 C++
'W
,,!'t.
Varianta
Pascal 1.
1.
• U, _n4,
(aU]
[:l]:.k;
k++;}
2.
2.
I
l!'OZ' i
-1
oj:
to4do -l. to 4 do
::::i;
a[i,j]
.1..-1.
3.
for(i=Oii<4;i++) for(j"'0;j<4;j++) a[il [jJ=j+l;
II II
M
programul Varianta
urrnator: Pascal
of integer;
."X'ray[l.
.10,1 •• 10]
kid,
t
_nd.
_n4,
1:-1 to n do O~ j:=1 to n do begin a[1,j] :=ki inc(k) lend; o i:=1 to n do begin ,••.[1,b]; a[i,b] :=a[b,i]; a[b,i]:=t; end; or :1:=1 to n do begin lor j:~1 to n do w;ri te (a [i, j ],' .); write1n;
Varianta C++ #include<iostream.h> maine) ( iot arlO] [10l ,n,i,j,b,k=l,ti cin»n; for(i=0;1<n;i++) for (j=O; j <n; j++) { a[i] [jl=k; k++;} 01n»b; for(i=O;i<nli++) { t=a[i] 'Ib] i ali] [b]=a[b] [i]; arb] U]=tl} for(i=Oli<nli++) ( for(j=O;j<n;j++) oout«a(iJ [jJ«" "i cout«end1;}
I ntru
n=4 si b=2
programul
aftseaza
matricea:
)a
. b) a
:;;~ I
13 14 12 16 3
:51
0) a
d) a
il ~
13
: 7 8
10 11 15
1441
12 16
228
3
7
10 11 12
a ~ [:
'I
8 '
CU
nll4
flnll I?I
colo
n,
V~
Varianta
Varianta
C++
var a:array[1 ••10,1 ••10] of integer; n,i,j,k:integer; begin read(n); for i:=l to n do for j:=l to n do read{a[i,j]); for i:=1 ton do if i mod 2=0 then for k:=n downto 1 do write(a[i,k],' .) else for j:=l to n do write(a[i,j],' '); writeIn; end.
#inc:IuCle<iostream.h> main () , { int a[10] (10] ,n,1,j,k, c:in»n; for (1=0; i <n; i++) for (j=O; j <n; j++) c:in> [i 1 [j] ; >a for(i=O;i<n;i++) if (i%2==0) for(k=n-l;.k> .. ,k·-) O cout«a[il,[k]«" '" else for (j=O; j <n;j++) dout«a[i]{j]«" ", cout«endl;
}
a) b) ~ d)
4 1 1 1
3 2 2 2
2 3 3 3
1 4 4 4
9 10 11 12 8 7 6 5 13 14 15 16 12 11 10 9 5 6 7 8 16 15 14 13 5 6 7 8 9 10 11 12 13 14 15 16 16 15 14 13 5 6 7 8 12 .11 '10 9