TALLER: MATRICES
Resuelva las siguientes funciones y haga su llamado y entregue los resultados en el main, a partrir del algoritmo.
Como primera actividad estudie con detalle el algoritmo y copielo en Dev C++ para su compilación y ejecución.
Un algoritmo con Matrices de cualquier tamaño que calcule y entregue (restringido a 10x10 máximo):
- Una función que determine el mayor de la colección
- Una función que determine el menor de la colección.
- Una función que calcule el promedio de la colección
- Una función que dados los índices de una posición en la matriz entregue su contenido
Un algoritmo para Matrices cuadradas que aplique las siguientes funciones:
- Una función que calcule la suma de la diagonal principal
- Una función que calcule la suma de la diagonal secundaria
- Una funcion que calcule la suma del triángulo superior
- Una funcion que calcule la suma del triángulo inferior
- Una funicón que determine si es matriz identidad.
Un algoritmo para compara matrices:
- Una función que defina si 2 matrices son iguales.
Sitio de consulta. Fundamentos de Matrices:
http://personal5.iddeo.es/ztt/Tem/t6_matrices.htm
Funciones base para la implementación del taller:
//función que regresa el mayor de la colección
int f_mayor (int F, int C, int M[10][10])
{
int i,j,MAYOR;
MAYOR=M[1][1];
for (i=1;i<=F;i++)
for (j=1;j<=C;j++)
if (MAYOR < M[i][j])
MAYOR = M[i][j];
return (MAYOR);
}
// función que a partir de los índices devuelve el contenido del campo
int f_campo (int F, int C, int M[10][10], int X, int Y)
{
int CAM, i, j;
for (i=1;i<=F;i++)
for (j=1;j<=C;j++)
if ((i==X)&&(j==Y))
CAM = M[i][j];
return (CAM);
}
// función que a compara 2 matrices y regresa 1 si son iguales y 0 sino
//se asume que las 2 matrices tienen las mismas filas y columnas
int f_matricesiguales (int F, int C, int M[10][10],int N[10][10])
{
int RTA, i, j;
RTA=1;
for (i=1;i<=F;i++)
for (j=1;j<=C;j++)
if ((M[i][j]) != (N[i][j]))
RTA = 0;
return (RTA);
}
Para operaciones con matrices, se presenta el algoritmo de multiplicación de matrices y como ejercicios se debe diseñar uno para suma de matrices
# include <conio.h>
# include <stdio.h>
//función multiplicación de matrices A*B=C
//se asume que las matrices A y B cumplen el tamaño donde
//número de columnas de A es igual al número de filas de B
void f_multiplicamatrices (int f1, int c1, int A[10][10], int f2, int c2, int B[10][10], int C[10][10])
{
int s,i,j,k;
for(i=1;i<=f1;i++)
{
for(int j=1;j<=c2;j++)
{
s = 0;
for(int k=1;k<=f2;k++)
{
s=s+A[i][k]*B[k][j];
C[i][j] = s;
}
}
}
}
int main ()
{
int f1,c1,f2,c2,f3,c3,i,j,m[10][10],n[10][10],c[10][10];
//lectura de la colección m en una estructura bidimensional
//esta matriz aplica para las funciones que requiere una sola matriz
printf ("tt Introduzca número de filas Matriz A... ");
scanf ("%d",&f1);
printf ("tt Introduzca número de columnas Matriz A... ");
scanf ("%d",&c1);
for (i=1; i<=f1; i++)
for (j=1; j<=c1; j++)
{
printf ("t Intoduzca el elemento %d,%d ... ",i,j);
scanf ("%d",&m[i][j]);
}
//lectura de la colección n en una estructura bidimensional
printf ("tt Introduzca número de filas Matriz B... ");
scanf ("%d",&f2);
printf ("tt Introduzca número de columnas Matriz B... ");
scanf ("%d",&c2);
for (i=1; i<=f2; i++)
for (j=1; j<=c2; j++)
{
printf ("t Intoduzca el elemento %d,%d ... ",i,j);
scanf ("%d",&n[i][j]);
}
//llamado de la función void que multimplica matrices y escritura del resultado
f_multiplicamatrices (f1,c1,m,f2,c2,n,c);
f3=f1;
c3=c2;
for (i=1; i<=f1; i++)
for (j=1; j<=c1; j++)
printf ("t M[%d,%d]... %d n",i,j,c[i][j]);
getch ();
return (0);
}
Pruebe la multiplicación con el siguietne ejemplo:
http://www.recursosdelweb.com/como-hacer-una-multiplicacion-de-matrices-en-c-cpp/