Ejercicio taller
unknown
c_cpp
9 months ago
2.0 kB
8
Indexable
/*Desarrollar una función que determine si una matriz es simétrica o no.
En caso de no ser simetrica, que cree su matriz traspuesta.
Una matriz es simetrica:
- La matriz debe ser cuadrada.
- Aij = Aji
|2 5 9| |2 5 9|
|5 8 -1| -> |5 8 -1|
|9 -1 10| |9 -1 10|
La matriz traspuesta es aquella en la que la columna i era la fila i de la matriz
original.
|1 2 3| |1 4 7|
|4 5 6| --> |2 5 8|
|7 8 9| |3 6 9|
*/
#include<iostream>
using namespace std;
void PedirDatos (int [100][100], int&, int&);
void Simetria(int [100][100], int, int);
void MostrarMatriz(int [100][100], int, int);
void Traspuesta(int [100][100], int, int);
int main(){
int Matriz[100][100], NF, NC;
PedirDatos (Matriz, NF, NC);
MostrarMatriz(Matriz, NF, NC);
Simetria(Matriz, NF, NC);
return 0;
}
void PedirDatos (int m[100][100], int& F, int& C){
cout<<"Digite el numero de filas: ";
cin>>F;
cout<<"Digite el numero de columnas: ";
cin>>C;
cout<<endl;
//Pedimos todos los elementos de la matriz
for(int i=0; i<F; i++){
for(int j=0; j<C; j++){
cout<<"Digite m["<<i<<"]["<<j<<"]: ";
cin>>m[i][j];
}
}
cout<<endl;
}
void Simetria(int m[100][100],int F,int C){
int cont = 0;
//Si es cuadrada
if(F==C){
//y ademas si Aij = Aji
for(int i=0; i<F; i++){
for(int j=0; j<C; j++){
if(m[i][j]==m[j][i]){
cont++;
}
}
}
}
//El conteo debe ser igual al numero de elementos de la matriz
if(cont == F * C){
cout<<"\nLa matriz es Simetrica"<<endl;
}
else{
cout<<"\nLa matriz NO es simetrica"<<endl;
Traspuesta(m, F, C);
}
}
void MostrarMatriz(int m[100][100],int F,int C){
cout<<"\nMatriz Ingresada\n";
for(int i=0; i<F; i++){
for(int j=0; j<C; j++){
cout<<"["<<m[i][j]<<"] ";
}
cout<<endl;
}
}
void Traspuesta(int m[100][100], int F, int C){
cout<<"\nMatriz Transpuesta\n";
for(int i=0; i<C; i++){
for(int j=0; j<F; j++){
cout<<"["<<m[j][i]<<"] ";
}
cout<<endl;
}
}
Editor is loading...
Leave a Comment