online: 6; azi: 1125; total: 53131 Manual clasa a ix a - Implementarea structurilor de date - Structuri de date

Probleme Rezolvate



Manual clasa a IX a

Implementarea structurilor de date

Structuri de date

Să se verifice dacă o matrice pătrată cu dimensiunea n>n este :
a) simetrică faţă de axa orizontală ,
b) simetrică față de axa verticală ,
c) simetrică față de diagonala principală ,
d) simetrică față de diagonala secundară .
a) si metrică faţă de axa orizontală
Pentru a verifica dacă o matrice este simetrică față de axa orizontală, trebuie să comparăm elementele matricei aflate deasupra axei orizontale cu cele aflate sub axa orizontală. Pentru a face acest lucru, putem itera prin matrice folosind două indici, unul pentru linie și unul pentru coloană, și verificăm dacă elementul de pe poziția (i, j) este egal cu elementul de pe poziția (n-i-1, j), unde n este dimensiunea matricei.
# include < iostream >
using namespace std ;
int main ()
{
int n;
cout << " Introduceti dimensiunea matricei: " ;
cin >> n;
// Initializam matricea cu elemente citite de la tastatura
int matrice[n][n];
cout << " Introduceti elementele matricei: \n" ;
for ( int i = 0 ; i < n; i++) {
for ( int j = 0 ; j < n; j++) {
cin >> matrice[i][j];
}
}
// Verificam daca matricea este simetrica fata de axa orizontala
bool esteSimetrica = true ;
for ( int i = 0 ; i < n/ 2 ; i++) {
for ( int j = 0 ; j < n; j++) {
if (matrice[i][j] != matrice[n-i -1 ][j]) {
esteSimetrica = false ;
break ;
}
}
if (! esteSimetrica ) {
break ;
}
}
if ( esteSimetrica ) {
cout << "Matricea este simetrica fata de axa orizontala.\n" ;
} else {
cout << "Matricea nu este simetrica fata de axa orizontala.\n" ;
}
return 0 ;
}
În acest exemplu, utilizatorul introduce dimensiunea matricei și elementele matricei. Matricea este verificată pentru simetrie față de axa orizontală și este afișat un mesaj corespunzător.
b) s imetrică față de axa verticală
Pentru a verifica dacă o matrice este simetrică față de axa verticală, trebuie să verificăm dacă elementele din coloana i sunt egale cu elementele din coloana n-i-1 pentru orice valoare i între 0 și n-1.
# include < iostream >
using namespace std ;
int main () {
int n;
cout << " Introduceti dimensiunea matricei: " ;
cin >> n;
int mat[n][n];
cout << " Introduceti elementele matricei: " << endl ;
for ( int i= 0 ; i<n; i++) {
for ( int j= 0 ; j<n; j++) {
cin >> mat[i][j];
}
}
bool simetrica_verticala = true ;
for ( int i= 0 ; i<n; i++) {
for ( int j= 0 ; j<n/ 2 ; j++) {
if (mat[i][j] != mat[i][n-j -1 ]) {
simetrica_verticala = false ;
break ;
}
}
if (! simetrica_verticala ) break ;
}
if ( simetrica_verticala ) {
cout << "Matricea este simetrica fata de axa verticala" << endl ;
} else {
cout << "Matricea nu este simetrica fata de axa verticala" << endl ;
}
return 0 ;
}
În acest cod, se citește matricea de la tastatură și se verifică dacă este simetrică față de axa verticală prin parcurgerea fiecărei coloane și compararea elementelor corespunzătoare din coloana și coloana opusă. Dacă se găsește o diferență, se setează variabila simetrica_verticala ca false și se iese din bucla de verificare.
c) simetric ă față de diagonala principală
Pentru a verifica dacă o matrice pătrată este simetrică față de diagonala principală, trebuie să comparăm elementele matricei situate de o parte și de alta a diagonalei principale. Adică, dacă matricea este de forma:
| a11 a12 a13 |
| a21 a22 a23 |
| a31 a32 a33 |
atunci trebuie să comparăm a12 cu a21, a13 cu a31 și a23 cu a32, și așa mai departe.
# include < iostream >
using namespace std ;
int main () {
int n;
cout << " Introduceti dimensiunea matricei: " ;
cin >> n;
int matrice[n][n];
cout << " Introduceti elementele matricei:\n" ;
for ( int i = 0 ; i < n; i++) {
for ( int j = 0 ; j < n; j++) {
cin >> matrice[i][j];
}
}
bool simetrica = true ;
for ( int i = 0 ; i < n; i++) {
for ( int j = 0 ; j < i; j++) {
if (matrice[i][j] != matrice[j][i]) {
simetrica = false ;
break ;
}
}
}
if (simetrica) {
cout << "Matricea este simetrica fata de diagonala principala." ;
} else {
cout << "Matricea nu este simetrica fata de diagonala principala." ;
}
return 0 ;
}
În acest program, utilizatorul introduce dimensiunea matricei și elementele acesteia, iar apoi se verifică simetria față de diagonala principală a matricei prin compararea elementelor situate de o parte și de alta a diagonalei principale. Rezultatul verificării este afișat pe ecran.
d) simetrică față de diagonala secundară
Pentru a verifica dacă o matrice pătrată cu dimensiunea n>n este simetrică față de diagonala secundară, putem parcurge matricea și verifica dacă elementul a[i][j] este egal cu elementul a[n-j-1][n-i-1], pentru toate i și j astfel încât i < n-j-1.
# include < iostream >
using namespace std ;
int main ()
{
int n;
cout << " Introduceti dimensiunea matricei: " ;
cin >> n;
int a[n][n];
// citirea matricei de la tastatura
cout << " Introduceti elementele matricei: " << endl ;
for ( int i = 0 ; i < n; i++)
{
for ( int j = 0 ; j < n; j++)
{
cin >> a[i][j];
}
}
// verificarea simetriei fata de diagonala secundara
bool simetrica = true ;
for ( int i = 0 ; i < n; i++)
{
for ( int j = 0 ; j < n; j++)
{
if (i < n-j -1 && a[i][j] != a[n-j -1 ][n-i -1 ])
{
simetrica = false ;
break ;
}
}
if (!simetrica)
break ;
}
if (simetrica)
cout << "Matricea este simetrica fata de diagonala secundara." << endl ;
else
cout << "Matricea nu este simetrica fata de diagonala secundara." << endl ;
return 0 ;
}

Exemplu de utilizare:
Introduceti dimensiunea matricei: 3
Introduceti elementele matricei:
1 2 3
4 5 6
7 8 9
Matricea nu este simetrica fata de diagonala secundara.
Introduceti dimensiunea matricei: 3
Int roduceti elementele matricei:
1 2 3
4 5 4
3 2 1
Matricea este simetrica fata de diagonala secundara.