InformaticăliceuClasa 9mediu
Matrice în C++ - Operații și Algoritmi
Declarare, parcurgere, operații pe matrice: diagonale, spirală, rotire și algoritmi comuni.
3 luni în urmă
0 vizualizări
25 minute
Matrice în C++
Declarare și Inițializare
1#include <iostream> 2using namespace std; 3 4int main() { 5 // Declarare statică 6 int mat[100][100]; 7 int n, m; // linii, coloane 8 9 // Declarare cu inițializare 10 int a[3][3] = { 11 {1, 2, 3}, 12 {4, 5, 6}, 13 {7, 8, 9} 14 }; 15 16 // Declarare dinamică (vector de vectori) 17 vector<vector<int>> v(n, vector<int>(m, 0)); 18 19 return 0; 20}
Citire și Afișare
1void citire(int mat[][100], int& n, int& m) { 2 cin >> n >> m; 3 for (int i = 0; i < n; i++) { 4 for (int j = 0; j < m; j++) { 5 cin >> mat[i][j]; 6 } 7 } 8} 9 10void afisare(int mat[][100], int n, int m) { 11 for (int i = 0; i < n; i++) { 12 for (int j = 0; j < m; j++) { 13 cout << mat[i][j] << " "; 14 } 15 cout << endl; 16 } 17}
Diagonale (Matrice Pătratică)
1// Diagonala principală: i == j 2// Diagonala secundară: i + j == n - 1 3 4void diagonale(int mat[][100], int n) { 5 cout << "Diagonala principală: "; 6 for (int i = 0; i < n; i++) { 7 cout << mat[i][i] << " "; 8 } 9 cout << endl; 10 11 cout << "Diagonala secundară: "; 12 for (int i = 0; i < n; i++) { 13 cout << mat[i][n - 1 - i] << " "; 14 } 15 cout << endl; 16 17 // Deasupra diagonalei principale: i < j 18 // Sub diagonala principală: i > j 19}
Transpusa
1void transpusa(int mat[][100], int n) { 2 for (int i = 0; i < n; i++) { 3 for (int j = i + 1; j < n; j++) { 4 swap(mat[i][j], mat[j][i]); 5 } 6 } 7}
Rotire 90° în Sens Orar
1void rotire90(int mat[][100], int n) { 2 // Pas 1: Transpusa 3 for (int i = 0; i < n; i++) { 4 for (int j = i + 1; j < n; j++) { 5 swap(mat[i][j], mat[j][i]); 6 } 7 } 8 9 // Pas 2: Inversare coloane 10 for (int i = 0; i < n; i++) { 11 for (int j = 0; j < n / 2; j++) { 12 swap(mat[i][j], mat[i][n - 1 - j]); 13 } 14 } 15}
Parcurgere în Spirală
1void parcurgereSpirala(int mat[][100], int n, int m) { 2 int top = 0, bottom = n - 1; 3 int left = 0, right = m - 1; 4 5 while (top <= bottom && left <= right) { 6 // Dreapta 7 for (int j = left; j <= right; j++) 8 cout << mat[top][j] << " "; 9 top++; 10 11 // Jos 12 for (int i = top; i <= bottom; i++) 13 cout << mat[i][right] << " "; 14 right--; 15 16 // Stânga 17 if (top <= bottom) { 18 for (int j = right; j >= left; j--) 19 cout << mat[bottom][j] << " "; 20 bottom--; 21 } 22 23 // Sus 24 if (left <= right) { 25 for (int i = bottom; i >= top; i--) 26 cout << mat[i][left] << " "; 27 left++; 28 } 29 } 30}
Înmulțire Matrice
1void inmultire(int A[][100], int B[][100], int C[][100], 2 int n, int m, int p) { 3 // A[n][m] * B[m][p] = C[n][p] 4 for (int i = 0; i < n; i++) { 5 for (int j = 0; j < p; j++) { 6 C[i][j] = 0; 7 for (int k = 0; k < m; k++) { 8 C[i][j] += A[i][k] * B[k][j]; 9 } 10 } 11 } 12}
Tutorialul te-a ajutat?
Dacă ai nevoie de ajutor personalizat, găsește un profesor calificat pentru meditații
