Informe Matriz

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 8

Universidad de las Fuerzas Armadas ESPE

Fundamentos de Programacin
Nombre: Henry Aguaiza, Jos Cruz
Jos Pillajo, Jorge reyes

Fecha:
25 de Enero del 2015

NRC: 1003
TEMA: Arreglos bidimensionales
OBJETIVOS
General
o Comprender el funcionamiento de un arreglo bidimensional.

Especifico
o Elaborar un programa que permita multiplicar una matriz por un escalar.
o Elaborar un programa que permita realizar la triangulacin de una matriz.
o Elaborar un programa que permita resolver el determinante de la misma.

MARCO TERICO
MATRICES
Una matriz es un vector de vectores o un tambin llamado array bidimensional. La
manera de declarar una matriz es C++ es similar a un vector:

Declaracin de una matriz


int matriz[filas][columnas];
Dnde: filas, columnas...>= 1;

int es el tipo de dato, matriz es el nombre del todo el conjunto de datos y debo de
especificar el nmero de filas y columnas.
-

Las matrices tambin pueden ser de distintos tipos de datos como char, float,
double, etc.
Las matrices en C++ se almacenan al igual que los vectores en posiciones
consecutivas de memoria.

Inicializacin de una matriz


La inicializacin de una matriz se realiza colocando las constantes de cada dila entre
llaves, a su vez las filas estn encerradas entre otro par de llaves ms externas. Es decir,
como las filas de una matriz son arreglos, las constantes dentro del primer par de llaves
se asignan a la primera fila de la matriz, las del segundo par a la segunda fila, y as
sucesivamente.

Las reglas que controlan el nmero de constantes cuando no coincide con el tamao de
la matriz, son las mismas que para un arreglo, as:
-

Si hay demasiadas constantes se produce un error, y las que restan no servirn


para inicializar la siguiente fila.

Durante la declaracin de un array multidimensional tambin podemos inicializar sus


componentes indicando la lista de los valores entre llaves.
En el interior de la lista, los componentes de cada lnea del array son encerrados
nuevamente entre llaves.
Para hacer ms cara la visibilidad de los elementos del array, podemos indicarlos en varias
lneas.
int A[3][4] ={{ 0,1,2,3}, { 1,2,3,4}, { 2,3,4,5}};
Sin embargo, es mucho ms conveniente anidar dos ciclos para inicializar un array de
dos dimensiones:
for (i = 0; i< 3; i++)
for (j = 0; j< 4; j++)
A[i][j] = i+j;
Para acceder a un elemento del array multidimensional:
Nombre[i][j];
Dnde: 0 <= i < filas ; 0 <= j < columnas;

Lectura de matrices
Para la lectura de una matriz es til saber las siguiente estructuira de programacin.
for (int IndiceFila = 0; IndiceFila < NumFilas; IndiceFila ++){
for (int IndiceCol = 0; IndiceCol < NumCol; IndiceCol++)
Procesar elemento[IndiceFila] [IndiceCol]
}
Ejemplo:
for(i=0;i<fila;i++){
for(j=0;j<columna;j++){
printf("\n[%d %d]\n",i,j);
scanf("%d",&A[i][j]);
}
}

Escritura de matrices
Para escribir datos en un matriz se lo hace digito por digito de izquierda a derecha que es
lo ms comn, o sino de arriba as abajo, depende del programador.
A continuacin se muestra la manera en cmo se debe realizar la declaracin para ingresar
datos en nuestra matriz. Vamos a ir avanzando de izquierda a derecha e incrementando
de a poco la columna.

for (int IndiceFila = 0; IndiceFila < NumFilas; IndiceFila ++){


for (int IndiceCol = 0; IndiceCol < NumCol; IndiceCol++)
Escribir el valor en la posicin [IndiceFila] [IndiceCol]
}
/*Imprimir en forma matricial*/
printf(" Elementos de la matriz:\n");
for (i=0;i<fila;i++){
for (j=0;j<columna;j++){
printf("%d ",A[i][j]);
}
printf("\n");
}

PROGRAMA O CDIGO DEL PROGRAMA


#include <stdio.h>
#include <stdlib.h>
#define fila 50
#define columna 50
/*declaracion de funciones que se van a utilizar*/
void leerMatriz(int &n, int &m, float matriz[][50]);
void imprimirMatriz(int n, int m, float matriz[][50]);
void triangulacion(int n, int m, float matris[][50], int &signoDet, float &det);
void multiplicacion(int n, int m, float matris[][50], float escalar);
float determinante(int n, int m, int signoDet, float det, float matris[][50]);
void programa();
int main()
{

programa();
return 0;
}
void programa(){
int opcion,n,m, signodet;
float A[fila][columna], B[fila][columna],escalar, det;
printf("
UNIVERSIDAD DE LAS FUERZAS ARMADAS ESPE\n");
printf("
TALLER ARREGLOS BIDIMENSIONALES\n");
printf(" INTEGRANTES:\n\t\t\t-AGUAIZA HENRY\n\t\t\t-CRUZ JOSE\n\t\t\tPILLAJO JOSE\n\t\t\t-REYES JORGE");
printf("\n\n1.-Multiplicacion de una matriz por un escalar nxn \n");
printf("2.-Triangulacion de una matriz nxn \n");
printf("3.-Determinante de una matriz nxn");
printf("\n QUE EJERCICIO DESEA REALIZAR: ");
scanf("%d",&opcion);
switch(opcion){
case 1:
system("cls");
leerMatriz(n,m,A);
printf("\n\n");
imprimirMatriz(n,m,A);
printf("\n\nIngrese el escalar por el que se multiplicara la matriz\n");
scanf("%f",&escalar);
multiplicacion(n,m,A,escalar);/*llamas a la funcion multipicacion que conentra
otra funcion para poder efectuarse correcatmente*/
printf("\n\n");
imprimirMatriz(n,m,A);
break;
case 2:
system("cls");
leerMatriz(n,m,A);
printf("\n\n");
imprimirMatriz(n,m,A);
printf("\n la matriz triangulada es:\n");e
triangulacion(n,m,A,signodet,det);/*funcion triangulacr una matriz"*/
printf("\n\n");
imprimirMatriz(n,m,A);
break;
case 3:
system("cls");
leerMatriz(n,m,A);
printf("\n\n");
imprimirMatriz(n,m,A);
triangulacion(n,m,A,signodet,det);

printf("\nEl determinante es: %.2f", determinante(n,m,signodet,det,A));/*se llama a


la funcion determinante*/
break;
}
}
void multiplicacion(int n, int m, float matris[][50], float escalar){
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
matris[i][j]*=escalar;
}
}
}
void triangulacion(int n, int m, float matris[][50], int &signoDet, float &det){
signoDet=1;
det=1;
float multi1[100], aux[100];
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
if(j==i-1){
for(int k=i; k<n; k++){
if(matris[k][j]!=0 && matris[i-1][j]==0){
for(int h=j;h<m;h++){
aux[h]=matris[k][h];
matris[k][h]=matris[i-1][h];
matris[i-1][h]=aux[h];
}
multi1[k]=matris[k][j]/matris[i-1][j];
signoDet= ((-1)*signoDet);
}else if(matris[k][j]==0 && matris[i-1][j]==0){
multi1[k]=0;
}else{
multi1[k]=matris[k][j]/matris[i-1][j];
}
}
for(int q=i; q<n; q++){
for(int w=j; w<m; w++){
matris[q][w]=matris[q][w]-multi1[q]*matris[i-1][w];
}
}
}
}
}
}

float determinante(int n, int m, int signoDet, float det, float matris[][50]){


for(int i=0; i<n; i++){
det=det*matris[i][i];
}

if(m==n){
det=det*signoDet;
}else{
det=0;
}
return det;
}
void leerMatriz(int &n, int &m, float matriz[][50]){
do{
printf("\nIngrese las dimensiones de la matriz\nNumero de filas:\n");
scanf("%d",&n);
printf("\nIngrese las dimensiones de la matriz\nNumero de columnas:\n");
scanf("%d",&m);
}while(n< 1 || n>50 || m< 1 || m>50);
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
printf("\nIngrese el elemento fila %d, columna %d\n",i,j);
scanf("%f",&matriz[i][j]);
}
}
}
void imprimirMatriz(int n, int m, float matriz[][50]){
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
printf("\t%.2f",matriz[i][j]);
}
printf("\n");
}
}

CORRIDA DEL PROGRAMA

CONCLUSIONES
Se logr realizar cada uno de los ejercicios.
Se debe tener en cuenta los tipos de datos que se use en cada matriz.
Se ah entendido de manera correcta el uso de una arreglo bi dimensional.

También podría gustarte