Haga un programa que calcule la suma del triángulo inferior más el triángulo superior de
una matriz cuadrada de n X n, dejando el resultado en el triángulo inferior de otra matriz cuadrada de
dimensión n X n. La matriz resultante tendrá 0 en la diagonal y en el triángulo superior. Por ejemplo, si la matriz que proporciona el usuario es:
Entonces la matriz resuelta es:
#include<iostream> #include<cstdlib> #include<windows.h> using namespace std; void leer(int [][100], int &, int &); void escribir(int [][100], int [][100], int [], int &, int &); void diagonal_principal(int [][100], int [], int &); void sum(int [][100], int [][100], int [], int &, int &); int main() { int matriz1[100][100], matriz2[100][100], vector[100], filas, columnas; do{ do{ cout<<endl<<"\t indique la cantidad de filas que tendra la matriz: "; cin>>filas; if((filas<1)||(filas>100)) { cout<<endl<<"\t el numero de filas no puede ser menor que 1 o mayor a 100"<<endl; Sleep(1500); system("cls"); } }while((filas<1)||(filas>100)); //valida la cantidad de filas que tendra la matriz do{ cout<<endl<<"\t indique la cantidad de columnas que tendra la matriz: "; cin>>columnas; if((columnas<1)||(columnas>100)) { cout<<endl<<"\t el numero de columnas no puede ser menor que 1 o mayor a 100"<<endl; Sleep(1500); system("cls"); } }while((columnas<1)||(columnas>100)); //valida la cantidad de columnas que tendra la matriz if(filas!=columnas) { cout<<endl<<"\t las filas y las columnas deben ser iguales"<<endl; Sleep(700); system("cls"); } }while(filas!=columnas); //valida que la matriz sea cuadrada system("cls"); leer(matriz1, filas, columnas); //llama a la funcion leer() diagonal_principal(matriz1, vector, filas); //llama a la funcion diagonal_principal() sum(matriz1, matriz2, vector, filas, columnas); //llama a la funcion sum() escribir(matriz1, matriz2, vector, filas, columnas); //llama a la funcion escribir() cin.get(); cin.get(); return 0; } void leer(int matriz1[100][100], int &filas, int &columnas) { int i, j; cout<<endl; for(i=0; i<filas; i++) { for(j=0; j<columnas; j++) { cout<<"\t "<<"["<<i<<"]"<<"["<<j<<"]"<<" indique dato: "; cin>>matriz1[i][j]; } cout<<endl; } system("cls"); } //fin funcion leer() void diagonal_principal(int matriz1[100][100], int vector[100], int &filas) { int i; for(i=0; i<filas; i++) { vector[i]=matriz1[i][i]; //almacena la diagonal principal en un vector } } //fin funcion diagonal_principal() void sum(int matriz1[100][100], int matriz2[100][100], int vector[100], int &filas, int &columnas) { int i, j, k=0; for(i=0; i<filas; i++) { for(j=0; j<columnas; j++) { matriz2[i][j]=matriz1[i][j]; //copia el contenido de la matriz1 en la matriz2 if(matriz2[j][j]==vector[j]) //compara la diagonal principal { matriz2[j][j]=0; //excluye la diagonal principal } matriz2[i][j]+=matriz2[j][i]; //suma las filas con las columnas matriz2[j][i]=0; //excluye los valores de la triangular superior } } } //fin funcion sum() void escribir(int matriz1[100][100], int matriz2[100][100], int vector[100], int &filas, int &columnas) { int i, j; cout<<endl<<"\t Matriz original"<<endl<<endl; for(i=0; i<filas; i++) { cout<<"\t "; for(j=0; j<columnas; j++) { if((matriz1[i][j]<10)&&(matriz1[i][j]<100)) { cout<<"00"; } else { if((matriz1[i][j]>9)&&(matriz1[i][j]<100)) { cout<<"0"; } } cout<<matriz1[i][j]<<" "; } cout<<endl; } cout<<endl<<"\t Diagonal principal"<<endl<<endl; cout<<"\t | "; for(i=0; i<filas; i++) { cout<<vector[i]<<" | "; } cout<<endl<<endl<<"\t Matriz resuelta"<<endl<<endl; for(i=0; i<filas; i++) { cout<<"\t "; for(j=0; j<columnas; j++) { if((matriz2[i][j]<10)&&(matriz2[i][j]<100)) { cout<<"00"; } else { if((matriz2[i][j]>9)&&(matriz2[i][j]<100)) { cout<<"0"; } } cout<<matriz2[i][j]<<" "; } cout<<endl; } } //fin funcion escribir()
Descargar Código
0 comentarios:
Publicar un comentario