Upload
vlad-stefan
View
300
Download
4
Embed Size (px)
Citation preview
7/26/2019 matrici -teorie + probleme
http://slidepdf.com/reader/full/matrici-teorie-probleme 1/8
Matrice. Declara ții. Citire. AfișareUn tablou cu două dimensiuni se numeşte matrice.
Declarare
int a[50][100],n,m,i,j;
Am declarat:
– o matrice cu maxim 50 de linii şi 100 de coloane, numerotarea se face de la 0– n numarul efecti! de linii;
– mnumarul efecti! de coloane;
– i contor "entru linie
– j contor "entru coloane
#bs$ %utem numerota liniile şi colonele de la 1, &n acest ca' adău(ăm 1 la numărul
maxim de linii
şi 1 la numărul maxim coloane
Citire:
for)i*1;i+*n;i-
for)j*1;j+*m;j-
cin..a[i][j];
Afsare:
for)i*1;i+*n;i-
/
for)j*1;j+*j;j-
cout++a[i][j]++ ;
cout++2n;3
Aplicatii cu matrici1. Sa se citeasca si sa se tipareasca elementele unui tablou bidimensional A (matrice) cu m linii i nș coloane
#include <iostream>using namespace std;
int main (){int a[101][101], n, m, i, j; a=matricea, m,n= nr actual de linii/coloane, i, j=linia, respectiv coloana
//
cout<<”Dati numarul de linii: “; cin>>m;
cout<<”Dati numarul de coloane: “; cin>>n; citim nr. de coloane
cout<<”Introduceti elementele matricei: “<<endl;or (i!1; i<!m; i"")or (j!1; j<!n; j""){cout<<”a[#<<i<<#][#<<j<<#]!”;cin>>a[i][j]; citim elementele matricei$
7/26/2019 matrici -teorie + probleme
http://slidepdf.com/reader/full/matrici-teorie-probleme 2/8
cout<<”%i&am matricea: “<<endl;or (i!1; i<!m; i""){for (j=1; j<=n; j)
cout<<a[i][j]<<” “; si afisam fiecare linie! respecti" coloana! dar cu un mic spatiu intre elementecout<<endl; //dupa fiecare linie terminata! trebuie sa trecem la alt rand
$return 0;$
'. Se citesc elementele unei matrici a cu cel mult 1 de linii si 1 de coloane$Sa se calcule%e suma elementelor matricii a$
#include <iostream>using namespace std;
int main (){int a[101][101], n, m, i, j, &!0; a=matricea! n! m= nr actual de linii/coloane! i! j=linia! respecti" coloanacout<<”Dati numarul de linii: “; cin>>m; citim nr de liniicout<<”Dati numarul de coloane: “; cin>>n; citim nr$ de coloane
cout<<”Introduceti elementele matricei: “<<endl;or (i!1; i<!m; i"")or (j!1; j<!n; j""){cout<<”a[#<<i<<#][#<<j<<#]!”;cin>>a[i][j]; citim elementele matriceis=sa&i'&j';
$cout<<#&!#<<&;return 0;$
3. Se citesc elementele unei matrici a cu cel mult 100 de linii si 100 de coloane.Sa se afiseze toate elementele de pe o linie al carui numar este dat de la tastura.
#include <iostream>using namespace std;
int main (){int a[101][101], n, m, i, j,, &!0; a=matricea! n! m= nr actual de linii/coloane! i! j=linia! respecti" coloanacout<<”Dati numarul de linii: “; cin>>m; citim nr de liniicout<<”Dati numarul de coloane: “; cin>>n; citim nr$ de coloane
cout<<”Introduceti elementele matricei: “<<endl;or (i!1; i<!m; i"")or (j!1; j<!n; j""){cout<<”a[#<<i<<#][#<<j<<#]!”;cin>>a[i][j]; citim elementele matriceis=sa&i'&j';$
cout<<”Dati numarul liniei: “; cin>>; citim nr$ liniei de pe care afisam elementeleor (i!1; i<!m; i"")or (j!1; j<!n; j"")
i (i!!)cout<<a[][j]<< ;return 0;$
$Se citesc elementele unei matrici a cu cel mult 1 de linii si 1 de coloane$Sa se afise%e toate elementele de pe o coloana al carui numar este dat de la tastura$
$ Se citesc elementele unei matrici a cu cel mult 1 de linii si 1 de coloane$*erificati daca e+ista doua linii ale matricii care au aceeasi suma a elementelor$
7/26/2019 matrici -teorie + probleme
http://slidepdf.com/reader/full/matrici-teorie-probleme 3/8
7/26/2019 matrici -teorie + probleme
http://slidepdf.com/reader/full/matrici-teorie-probleme 4/8
Matrice patratica
4ntro matrice "ătratică numarul de linii* numarul de coloane )n*m-$
4ntro matrice "ătratică a!em:
• ia(onala "rinci"ala elementele a[i][i], cu i*1,n sau a[i][i], cu i*0,n1• ia(onala secundara elementele a[i][ni1], i*1,n sau a[i][ni1], i*0,n1
Zonele determinate de diagonale:
6$
Pe diagonala principală i=j
Sub diagonala principala: i>j
Deasupra diagonalei principale: i<j
66$
Pe diagonala secundară j=n-i+1
Sub diagonala secundara: j>n-i+1
Deasupra diagonalei secundare:j<n-i+1
7#89 s"eciale in matrice "atratice
1. Diagonala principala si secundara
Diagonala principal
7/26/2019 matrici -teorie + probleme
http://slidepdf.com/reader/full/matrici-teorie-probleme 5/8
Diagonala principală este formată din elementele care îndeplinesc relaia
i = j ! numărul liniei este egal cu numărul coloanei pe care se a"ă#
Diagonala secundară
Diagonala secundară con$ine elementele a1n% a& n-1 % a' n-&%(%an1 caracteri)ate de
rela$ia
i+j = n+1.
Zona de deasupra diagonalei principale
*lementele de deasupra diagonalei principale sunt a1&% a1'% a1%(%a1n% a&'% a&% a&,%
(%a&n% (#% an-1 n-1% an-1 n#
ela$ia dintre coordonate comună tuturor elementelor din această )onă este i < j #
Zona de sub diagonala principal
*lementele a&1% a'1% a'&%(%a1% a&% a'% (##%an1% an&% an n-1 se a"ă sub diagonala
principală .i au între coordonate rela$ia i > j #
/n practică prelucrarea elementelor se poate face e0clusi pe diagonale respecti pe
)onele identi2cate mai sus3e0:ordonarea diagonalelor respecti eri2carea simetriei sau
a triung4iularită$ii5 sau se poate opta pentruo parcurgere a tuturor elementelor matricei
.i prelucrarea diferen$iată a elementelor în func$ie de rela$ia dintre coordonate3e0:
completarea elementelor cu anumite alori% calculul simultan al mai multor re)ultate
ob$inute pentru 2ecare )onă în parte5#
Modalităţi de prelucrare a elementelor în matrice pătratică de dimensiune n
Diagonala principala:
for )i*1;i+*n;i-
+"relucrea'ă a[i][i].
Diagonala secundara:
for )i*1;i+*n;i-
+"relucrea'ă a[i][ni1].
7/26/2019 matrici -teorie + probleme
http://slidepdf.com/reader/full/matrici-teorie-probleme 6/8
Deasupra diagonalei principale:
for )i*1;i+*n1;i-
for)j*i1;j+*n;j-
+"relucrea'ă a[i][j].
Sub diagonala principala:
for )i*;i+*n;i-
for)j*1;j+*i1;j-+"relucrea'ă a[i][j].
Prelucrarea intro singura parcurgere a tuturor !onelor:
for )i*1;i+*n;i-
for)j*1;j+*n;j-
if )i**j-+"relucrea'ă a[i,j] – dia($ "rinc$.
else
if )ij**n1-
+"relucrea'ă a[i,j] – dia($ sec$.else
if )i.j-
+"relucrea'ă a[i,j] – deasu"ra dia($ "rinc$.
else
+"relucrea'ă a[i,j] – sub dia($ "rinc$.
if )ij+n1-
+"relucrea'ă a[i,j] – deasu"ra dia($ sec$.
if )ij.n1-
+"relucrea'ă a[i,j] – sub dia($ sec$.
Aplicatii – Matrici patratice
1. Variabila a memorează un tablou bidimensional, cu 4 linii şi 4 coloane, numerotate de la 1
la 4, cu elemente numere naturale. Scrieţi secvenţa de program C++ care afişează pe ecran produsulnumerelor de pe diagonala principală a tabloului, respectiv o secventa de program care afiseazasuma elementelor de pe diagonala secundara a tabloului.
2. Variabila t memorează o matrice cu 8 linii şi 8 coloane, umerotatede la 1 la 8, cu elemente numere întregi, iar variabilele i şi j sunt întregi.Secvenţa de program alăturată determină memorarea în variabila întreagă z asumei tuturor elementelor situate: …………………………………
. Variabila t memorează o matrice cu 8 linii şi 8 coloane,numerotate de la 1 la 8, cu elemente numere întregi, iar celelalte variabile
z!"#for$i!%# i&!'# i(()for$*!%# *&i# *(()
z!z(t+i+*#
z!"#for$i!%#i&!'#i(()for$*!%#*&!'-i(%#*(()
z!z(t+i+*#
7/26/2019 matrici -teorie + probleme
http://slidepdf.com/reader/full/matrici-teorie-probleme 7/8
sunt întregi. Secvenţa de program alăturată determină memorarea n variabila întreagă z a sumeituturor elementelor situate: ………………………………
. Scrieţi un program C++ care citeşte de la tastatură un numar natural n $2&!n&!2) siconstruieste in memorie o matrice cu n linii si n coloane ale carei elemente vor primi valori dupacum urmeaza:
- elementele situate pe diagonala principala vor primi valoarea "#- elementele de pe prima coloana, cu e/ceptia celui aflat pe diagonala principala vor primi
valoarea n#- elementele de pe a doua coloana, cu e/ceptia celui aflat pe diagonala principala vor primi
valoarea n-%#
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ elementele de pe ultima coloana, cu e/ceptia celui aflat pe diagonala principala vor primi
valoarea %.0rogramul va afisa matricea astfel construita pe ecran, cate o linie a matricii pe cate o linie aecranului.
Exemplu: n! se afiseaza matricea:
1. Se citeste o matrice patratica de dimensiune n. Sa se calculeze si sa se afiseze sumaelementelor de pe diagonala principala si produsul elementelor de pe diagonala secundara.
. 3ititi cu atentie programul de mai *os, urmariti cu atentie e/ecutarea acestuia pentru n!.4bservati cum se construieste matricea si stabiliti un enunt corespunzator rezolvarii.
int a[<][<],i,j,a1,a,a=,n; int main)-/
a1*1; a*1; cout++>nr linii >; cin..n; "or)i*1;i+*n;i-
i" )i?**1- "or)j*1;j+*n;j-
/a=*a1a#
a[i][j]*a=; a1*a; a*a=;3
else
"or)j*n;j.*1;j- /a=*a1a;
a[i][j]*a=; a1*a; a*a=; 3@@asare matrice5
7/26/2019 matrici -teorie + probleme
http://slidepdf.com/reader/full/matrici-teorie-probleme 8/8
6. Scrieti un program 373(( care citeste de la tastatura un numar natural n $"&n&!2) si apoiconstruieste in memorie o matrice cu n linii si n coloane astfel incat elementele situate pediagonala secundara sa fie egale cu 2, cele situate deasupra diagonalei secundare sa fieegale cu %, iar cele situate sub diagonala secundara sa fie egale cu .0rogramul va afisa matricea pe ecran, cate o linie a matricei pe o linie a ecranului,cu cate un spatiu intre elementele fiecarei linii.Exemplu: daca n este 4 atunci programul va construi si va afisa matricea de mai *os:
1 1 1 2
1 1 2 3
1 2 3 3
2 3 3 3
'.
*.