matices programacion basica
DESCRIPTION
ESTE DOCUMENTO APORTA información sobre matrices, enfocadas en programación básicaTRANSCRIPT
1. Definición de matriz (2 dimensiones)
Un arreglo bidimensional ilustra claramente las diferencias entre una bista de datos lógica y una física. Un arreglo bidimensional es una estructura de datos lógica utili para programar y solucionar problemas. La cantidad de hileras o columnas se denomina la longitud de la dimensión, al mismo tiempo cada una de estas columnas contienen arreglos en ella, se llama fácilmente a un elemento de la matriz por medio de 2 índices.Ejemplo Int a[3][5]Esto define un arreglo de tres elementos. Cada uno de los elementos es por sí mismo un arreglo que contiene cinco enteros.Para llamar en este caso al elemento sombreado se llama al elemento 2 de la columna 4 se puede especificar de esta forma a[2][4].el primer dato representa las filas y el segunda indica la columna en que se ubica.(1)
Fig.1
2. Tipos de matriz
Una matriz fila está constituida por una sola fila.
Matriz columna
La matriz columna tiene una sola columna
Matriz rectangular
La matriz rectangular tiene distinto número de filas que de columnas, siendo su dimensión mxn .
Matriz traspuesta
Luis David Almanza Padilla Página 1
Dada una matriz A, se llama matriz traspuesta de A a la matriz que se obtiene cambiando ordenadamente las filas por las columnas.
Matriz nula
En una matriz nula todos los elementos son ceros.
Matriz cuadrada
La matriz cuadrada tiene el mismo número de filas que de columnas.
Los elementos de la forma a i i constituyen la diagonal principal.
La diagonal secundaria la forman los elementos con i+j = n+1, siendo n el orden de la matriz.
Tipos de matrices cuadradas
Matriz triangular superior
En una matriz triangular superior los elementos situados por debajo de la diagonal principal son ceros.
Matriz triangular inferior
En una matriz triangular inferior los elementos situados por encima de la diagonal principal son ceros.
Luis David Almanza Padilla Página 2
Matriz diagonal
En una matriz diagonal todos los elementos que no están situados en la diagonal principal son nulos.
Matriz escalar
Una matriz escalar es una matriz diagonal en la que los elementos de la diagonal principal son iguales.
Matriz identidad o unidad
Una matriz identidad es una matriz diagonal en la que los elementos de la diagonal principal son iguales a 1.
Matriz regular
Una matriz regular es una matriz cuadrada que tiene inversa.
Matriz singular
Una matriz singular no tiene matriz inversa.
Matriz idempotente
Una matriz, A, es idempotente si:
A2 = A.
Luis David Almanza Padilla Página 3
Matriz involutiva
Una matriz, A, es involutiva si:
A2 = I.
Matriz simétrica
Una matriz simétrica es una matriz cuadrada que verifica:
A = A t.
Matriz antisimétrica o hemisimétrica
Una matriz antisimétrica o hemisimétrica es una matriz cuadrada que verifica (2):
A = −A t.
Luis David Almanza Padilla Página 4
3. Como se define una matriz en c
C# admite matrices de una dimensión, matrices multidimensionales (matrices rectangulares) y matrices de matrices (matrices escalonadas). El siguiente ejemplo muestra cómo declarar diferentes tipos de matrices:Matrices unidimensionales:int[] numbers;ejemplo:int[] numbers = new int[5];
Matrices multidimensionales:
string[,] names;ejemplo:string[,] names = new string[5,4];
Matrices de matrices (escalonadas):
byte[][] scores;ejemplo:byte[][] scores = new byte[5][];for (int x = 0; x < scores.Length; x++) { scores[x] = new byte[4];}También se pueden utilizar matrices más grandes. Por ejemplo, se puede utilizar una matriz rectangular de tres dimensiones:int[,,] buttons = new int[4,5,3];Incluso, se pueden combinar matrices rectangulares y escalonadas. Por ejemplo, el siguiente código declara una matriz unidimensional que contiene matrices tridimensionales de matrices bidimensionales de tipo int:int[][,,][,] numbers;(3)
Luis David Almanza Padilla Página 5
4. matriz para llenar una matriz numérica de 3x3 elementos
#include<stdio.h>
#include<conio.h>
main()
{
int matriz[3][3]={{0}},i,j;
for(i=1;i<=3;i++)
{
for(j=1;j<=3;j++)
{
printf("introduzca el valor %d %d de la matriz \n", i,j);
scanf("%d", &matriz[i][j]);
}
}
Getch();
Return 0;
}
Luis David Almanza Padilla Página 6
Luis David Almanza Padilla Página 7
5. programa para imprimir la matriz del punto 4
#include<stdio.h>
#include<conio.h>
main()
{
int matriz[3][3]={{0}},i,j;
for(i=1;i<=3;i++)
{
for(j=1;j<=3;j++)
{
printf("introduzca el valor %d %d de la matriz \n", i,j);
scanf("%d", &matriz[i][j]);
}
}
printf("\n\t");
printf("estos son los valores de la matriz\n");
for(i=1;i<=3;i++)
{
printf("\n");
for(j=1;j<=3;j++)
{
printf( "%6d ", matriz [i][j]);
}
}
getch();
return 0;
}
Luis David Almanza Padilla Página 8
Luis David Almanza Padilla Página 9
6. programa que sume 2 matrices de 2x2 realiza la corrida completa, índice y contenido de matrices originales y resultantes.#include<stdio.h>#include<conio.h>main(){ int matriz[3][3]={{0}},matriz1[3][3]={{0}},matrizsuma[3][3]={{0}},i,j; for(i=1;i<=2;i++) { for(j=1;j<=2;j++) { printf("\nintroduzca el valor %d %d de la matriz: ", i,j); scanf("%d", &matriz[i][j]); } } for(i=1;i<=2;i++)
Luis David Almanza Padilla Página 10
{ for(j=1;j<=2;j++) { printf("\ndame el valor %d %d de la matriz", i,j); scanf("%d", &matriz1[i][j]); } } for(i=1;i<=2;i++) { for(j=1;j<=2;j++) { matrizsuma[i][j]=matriz[i][j]+matriz1[i][j]; } } printf("\n\t"); printf("matriz matriz 1 matriz suma "); for(i=1;i<=2;i++) { printf("\n"); for(j=1;j<=2;j++) { printf( " %6d", matriz [i][j]); } for(j=1;j<=2;j++) { printf("%6d", matrizsuma[i][j]); } for(j=1;j<=2;j++) { printf("%6d",matriz1[i][j]); } } getch(); return 0;}
Luis David Almanza Padilla Página 11
Luis David Almanza Padilla Página 12
7. Programa que genere la matriz identidad de una dimensión n. realizar la corrida completa, índice y contenido de matriz resultante #include<stdio.h>#include<conio.h>main(){ int matrizi[100][100],i,j,n; printf("programa que genereuna matriz identidad"); printf("\n ¿de que dimension quieres tu matriz? no mayor a 100 "); scanf("\n %d",&n); for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { if(i==j) { matrizi[i][j]=1; } else { matrizi[i][j]=0; } } } printf("MATRIZ IDENTIDAD"); for(i=1;i<=n;i++) { printf("\n"); for(j=1;j<=n;j++) { printf("%5d",matrizi[i][j]); } } getch(); return 0;}
Luis David Almanza Padilla Página 13
Luis David Almanza Padilla Página 14
8. programa que genere a partir de una matriz dada de n dimensión la matriz transpuesta. Realiza
la corrida completa, índice y contenido de matriz original y resultante.
#include<stdio.h>
#include<conio.h>
main()
{
int matriz[100][100]={{0}},matriz1[100][100]={{0}},i,j,aux=0,aux1=0,d;
printf("programa que se encarga de realizar una matriz transpuesta");
printf("\nDame la dimension de la matriz que deseas introducir:");
scanf("%d",&d);
for(i=1;i<=d;i++)
{
for(j=1;j<=d;j++)
{
printf("\nintroduzca el valor %d %d de la matriz: ", i,j);
scanf("%d", &matriz[i][j]);
}
}
for(i=1;i<=d;i++)
{
Luis David Almanza Padilla Página 15
for(j=1;j<=d;j++)
{
matriz1[i][j]=matriz[j][i];
}
}
printf("\n matriz matriz transpuesta \n");
for(i=1;i<=d;i++)
{
printf("\n");
for(j=1;j<=d;j++)
{
printf("%3d", matriz[i][j]);
}
printf(" ");
for(j=1;j<=d;j++)
{
printf("%3d", matriz1[i][j]);
}
}
getch();
return 0;
}
Luis David Almanza Padilla Página 16
Luis David Almanza Padilla Página 17
9. Programa que multiplique dos matrices de 3x3. Realizar la corrida completa, índice y contenido de matrices originales y resultantes.#include<stdio.h>#include<conio.h>main(){ int matriz[3][3]={{0}},matriz1[3][3]={{0}},matrizmult[4][4]={{0}},i,j,l; for(i=1;i<=3;i++) { for(j=1;j<=3;j++) { printf("\nintroduzca el valor %d %d de la matrizA: ", i,j); scanf("%d", &matriz[i][j]); } } for(i=1;i<=3;i++)
Luis David Almanza Padilla Página 18
{ for(j=1;j<=3;j++) { printf("\ndame el valor %d %d de la matrizB: ", i,j); scanf("%d", &matriz1[i][j]); } } for(l=1;l<=3;l++) { for(i=1;i<=3;i++) { for(j=1;j<=3;j++) { matrizmult[l][i]=(matriz[l][j]*matriz1[j][i])+matrizmult[l][i]; } } }printf(" A B C"); for(i=1;i<=3;i++) { printf("\n"); for(j=1;j<=3;j++) { printf("%5d", matriz[i][j]); } printf(" "); for(j=1;j<=3;j++) { printf("%5d", matriz1[i][j]); } printf(" "); for(j=1;j<=3;j++) { printf("%5d",matrizmult[i][j]); } } getch(); return 0;
Luis David Almanza Padilla Página 19
}
Luis David Almanza Padilla Página 20
Luis David Almanza Padilla Página 21
Luis David Almanza Padilla Página 22
10. Programa propuesto por el alumno, realiza corrida completa índice y contenido de las matrices resultantes.#include<stdio.h>#include<conio.h>main(){ int matriz[100][100]={{0}},i,j,a,s; printf("este programa te permite saber el numero de asistencias \n de cada alumno por semana y el total de asistencias de la semana\n ademas de el total de asistencias"); printf("\ndame el numero de alumnos:"); scanf("%d",&a); printf("dame el numero de semanas"); scanf("%d",&s); for(i=1;i<=a;i++) {
Luis David Almanza Padilla Página 23
for(j=1;j<=s;j++) { printf("\nintroduzca el numero de asistencias del alumno %d en la semana %d: ", i,j); scanf("%d", &matriz[i][j]); if(matriz[i][j]>5) { printf("\nel numero de asistencias no puede pasar de 5"); j--; } } } for(i=1;i<=a;i++) { for(j=1;j<=s;j++) { matriz[i][s+1]=matriz[i][j]+matriz[i][s+1]; } } for(i=1;i<=s;i++) { for(j=1;j<=a;j++) { matriz[a+1][i]=matriz[j][i]+matriz[a+1][i]; } } for(i=1;i<=s;i++) { matriz[a+1][s+1]=matriz[a+1][i]+matriz[a+1][s+1]; } printf("\nla tabla de asistencias es"); for(i=1;i<=a+1;i++) { printf("\n"); for(j=1;j<=s+1;j++) { printf("%4d",matriz[i][j]); } } getch(); return 0; }
Luis David Almanza Padilla Página 24
Luis David Almanza Padilla Página 25
Luis David Almanza Padilla Página 26
Luis David Almanza Padilla Página 27
Bibliografía:
1.Langsam Yedidyah, Aungensten Moshe, Tenenbaum Aaron, estructuras de datos con c y c++, Prentice hall, 1997,(pp 34,35).
Luis David Almanza Padilla Página 28
Luis David Almanza Padilla Página 29
1. Vitutor,[en línea].2012,[10 de noviembre de 2013].disponible en la web: http://profesoraeugenia.blogspot.mx/2006/07/cmo-citar-una-pgina-web.html
Luis David Almanza Padilla Página 30
2. Msdn micosoft,[en línea].2013,[10 de noviembre de 2013]. Disponible en la web: http://msdn.microsoft.com/es-es/library/aa288453(v=vs.71).aspx
Luis David Almanza Padilla Página 31
Luis David Almanza Padilla Página 32