online: 4; azi: 312; total: 52318 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

Se consideră o matrice pătrată cu dimensiunea nxn şi un vector cu n elemente. Numărul n şi elementele matricei şi ale vectorului se citesc de la tastatură. Să se verifice dacă elementele vectorului form ează o linie sau o coloană a ma tricei. În caz afirmativ să se afişeze un mesaj în care să se precizeze numărul liniei şi/sau al coloanei.
Pentru a verifica dacă elementele vectorului formează o linie sau o coloană a matricei putem verifica dacă toate elementele vectorului sunt egale cu elementele de pe aceeași poziție dintr-o anumită linie sau coloană a matricei.
Pentru a implementa această verificare, putem parcurge matricea și vectorul și să comparăm elementele de pe aceeași poziție. Dacă găsim o poziție în care elementul din vector nu este egal cu elementul corespunzător din matrice, putem opri verificarea pentru acea linie/coloană și să trecem la verificarea următoarei linii/coloane.
Dacă nu găsim nicio poziție în care elementele vectorului să nu fie egale cu elementele corespunzătoare din matrice, putem afișa un mesaj care indică faptul că vectorul formează o linie sau o coloană.
# include <iostream>
using namespace std;
const int MAX = 100 ;
int main () {
int n, mat[MAX][MAX], vec[MAX];
// Citirea dimensiunii si a elementelor matricei si vectorului
cout << "Introduceti dimensiunea matricei si a vectorului: " ;
cin >> n;
cout << "Introduceti elementele matricei:\n" ;
for ( int i = 0 ; i < n; i++) {
for ( int j = 0 ; j < n; j++) {
cin >> mat[i][j];
}
}
cout << "Introduceti elementele vectorului:\n" ;
for ( int i = 0 ; i < n; i++) {
cin >> vec[i];
}
// Verificarea daca vectorul formeaza o linie sau o coloana a matricei
int row = -1 , col = -1 ;
for ( int i = 0 ; i < n; i++) {
bool is_row = true , is_col = true ;
for ( int j = 0 ; j < n; j++) {
if (vec[j] != mat[i][j]) {
is_row = false ;
}
if (vec[j] != mat[j][i]) {
is_col = false ;
}
}
if (is_row) {
row = i;
}
if (is_col) {
col = i;
}
}
// Afisarea rezultatului
if (row != -1 && col != -1 ) {
cout << "Vectorul formeaza atat o linie, cat si o coloana a matricei.\n" ;
} else if (row != -1 ) {
cout << "Vectorul formeaza linia " << row << " a matricei.\n" ;
} else if (col != -1 ) {
cout << "Vectorul formeaza coloana " << col << " a matricei.\n" ;
} else {
cout << "Vectorul nu formeaza o linie sau o coloana a matricei.\n" ;
}
return 0 ;
}

Programul începe prin citirea numărului n, dimensiunea matricei pătrate. Apoi, se citesc elementele matricei și ale vectorului, folosind două bucle for pentru a parcurge fiecare rând și fiecare coloană a matricei.
Următorul pas este verificarea dacă elementele vectorului formează o linie sau o coloană a matricei. Se face acest lucru comparând suma elementelor vectorului cu suma elementelor corespunzătoare de pe fiecare linie și coloană a matricei.
Dacă se găsește o linie sau o coloană în care suma elementelor corespunde cu suma elementelor vectorului, se afișează mesajul corespunzător, care indică numărul liniei și/sau al coloanei.
În caz contrar, se afișează un mesaj care indică faptul că vectorul nu formează o linie sau o coloană a matricei.