MATRICES
una matriz en terminos de lenguaje de
programacion , es un conjunto de variables que se encuentran contiguas , una
tras otra , dentro de la memoria del ordenador.
en progamación las matrices son muy utiles , puesto que determinar la direccion en memoria de una variable dentro de una matriz es muy facil. solo hace falta saber la direccion en memoria del primer elemento de la matriz , puesto que los demas elemntos se encuentran contiguos.
en progamación las matrices son muy utiles , puesto que determinar la direccion en memoria de una variable dentro de una matriz es muy facil. solo hace falta saber la direccion en memoria del primer elemento de la matriz , puesto que los demas elemntos se encuentran contiguos.
Las matrices en C++
se almacenan al igual que los vectores en posiciones consecutivas de memoria.
Usualmente uno se
hace la idea que una matriz es como un tablero, pero internamente el manejo es
como su definición lo indica, un vector de vectores, es decir, los vectores
están uno detrás del otro juntos.
La forma de acceder
a los elementos de la matriz es utilizando su nombre e indicando los 2
subíndices que van en los corchetes.
Si coloco int
matriz[2][3] = 10; estoy asignando al cuarto elemento de la tercera fila el
valor 10.
No olvidar que tanto
filas como columnas se enumeran a partir de 0. Bueno y para recorrer una matriz
podemos usar igualmente un bucle.
Matrices
Dinamicas
Dejando afuera
el uso de matrices en C++, en donde uno puede declarar los valores
luego de una lectura. Podemos decir que solo hemos usado matrices estáticas, ya
que no permitían el cambio de dimensiones una vez que el programa fuese
compilado.
Con la
asignación dinámica de memoria un puede definir en tipo de ejecución la
cantidad de memoria, con las ventajas y desventajas que esta posee.
Solo para
demostrar rapidamente el potencial y el por que usarlo, vean lo siguiente:
Anteriormente si
uno deseaba leer una cadena de caracteres, declaraba un array, supongamos que
deseamos leer un nombre, pero, no todos se llaman igual es por esto que
debiamos darle suficiente espacio al arreglo.
Ejemplo
#include <stdio.h>
#include <stdlib.h>
int
main()
{
int
*puntero=NULL;
puntero =
(int
*)malloc(100*sizeof(int));
//Asignacion
dinamica de memoria
if
(puntero ==
NULL) //evaluacion de condicion.
{
printf("NO
hay suficiente espacio en memoria");
//Mensaje
return
-1;
//Cierra el programa con un error.
}else
printf("Se
asigno memoria ");
free(puntero);//liberacion de memoria
return
0;
}
//El
programa solo asigna memoria, imprime un mensaje en dependecia de la condicion
y libera
Matrices Dinamicas de Dos
Dimensiones
En esta parte
aprenderemos como usar la asignacion dinamica en matrices bidimensionales. Este
proceso se divide en dos partes:
·
Asignar memoria
a una matriz de punteros, cuyos elementos referenciaran cada una de las filas
de la matriz de dos dimensiones que se desea crear.
·
Asignar memoria
para cada una de las filas. El numero de elementos de cada fila puede ser
variable.
Una vista rapida
seria:
#define FILAS 5
#define COLS 6
...
int
**matriz;
matriz =
(int
**)malloc
(FILAS*sizeof(int
*));
for
(i=0;i<FILAS;i++)
matriz[i]
= (int
*)
malloc (COLS*sizeof(int));
Suma
de Matrices en C (ARRAYS)
Suma de
Matrices (Arrays bidimensionales) en C. Sencillo programa que muestra el uso
más simple de los arrays bidimensionales, asi como el de funciones de bucle del
tipo for:
#include <stdio.h>
const int dim=100;
int i,j,fil,col;
float MatA[dim][dim],MatB[dim][dim]; /*Tamaño maximo de 100x100*/
int main(void)
{
printf("Programa que suma matrices:\n\n");
printf("Introduzca el tamano de las matrices:\n\n Filas:"); scanf("%i", &fil);
printf(" Columnas: "); scanf("%i", &col);
/*Se piden los datos*/
printf("\n\nIntroduca los datos de la Matriz A:\n");
for(i=1;i<=fil;i++)
{
for(j=1;j<=col;j++)
{
printf("\nIntroduzca la coordenada (%i,%i): ",i,j); scanf("%f", &MatA[i][j]);
}
}
printf("\n\n\nIntroduca los datos de la Matriz B:\n");
for(i=1;i<=fil;i++)
{
for(j=1;j<=col;j++)
{
printf("\nIntroduzca la coordenada (%i,%i): ",i,j); scanf("%f", &MatB[i][j]);
}
}
for(i=1;i<=fil;i++)
{
for(j=1;j<=col;j++) MatA[i][j]=MatA[i][j]+MatB[i][j]; /*Se guarda el resultado de la suma en la matriz A*/
}
printf("\n\nLa matriz resultado es:\n\n");
for(i=1;i<=fil;i++)
{
for(j=1;j<=col;j++) printf("%10f",MatA[i][j]);
printf("\n");
}
return 0;
}
#include <stdio.h>
const int dim=100;
int i,j,fil,col;
float MatA[dim][dim],MatB[dim][dim]; /*Tamaño maximo de 100x100*/
int main(void)
{
printf("Programa que suma matrices:\n\n");
printf("Introduzca el tamano de las matrices:\n\n Filas:"); scanf("%i", &fil);
printf(" Columnas: "); scanf("%i", &col);
/*Se piden los datos*/
printf("\n\nIntroduca los datos de la Matriz A:\n");
for(i=1;i<=fil;i++)
{
for(j=1;j<=col;j++)
{
printf("\nIntroduzca la coordenada (%i,%i): ",i,j); scanf("%f", &MatA[i][j]);
}
}
printf("\n\n\nIntroduca los datos de la Matriz B:\n");
for(i=1;i<=fil;i++)
{
for(j=1;j<=col;j++)
{
printf("\nIntroduzca la coordenada (%i,%i): ",i,j); scanf("%f", &MatB[i][j]);
}
}
for(i=1;i<=fil;i++)
{
for(j=1;j<=col;j++) MatA[i][j]=MatA[i][j]+MatB[i][j]; /*Se guarda el resultado de la suma en la matriz A*/
}
printf("\n\nLa matriz resultado es:\n\n");
for(i=1;i<=fil;i++)
{
for(j=1;j<=col;j++) printf("%10f",MatA[i][j]);
printf("\n");
}
return 0;
}
No hay comentarios:
Publicar un comentario