Matices PROGRAMACION BASICA

Post on 15-Dec-2015

233 views 1 download

description

ESTE DOCUMENTO APORTA información sobre matrices, enfocadas en programación básica

Transcript of Matices PROGRAMACION BASICA

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