Ejercicio taller

 avatar
unknown
c_cpp
a month ago
2.0 kB
6
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