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