Programación I - 2011 Arreglos II- Matrices. Un arreglo (matriz) es una estructura de datos...

13
Programación I - 2011 Programación I - 2011 Arreglos II- Matrices

Transcript of Programación I - 2011 Arreglos II- Matrices. Un arreglo (matriz) es una estructura de datos...

Page 1: Programación I - 2011 Arreglos II- Matrices. Un arreglo (matriz) es una estructura de datos compuesta que permite acceder a cada componente por dos variables.

Programación I - 2011Programación I - 2011

Arreglos II- Matrices

Page 2: Programación I - 2011 Arreglos II- Matrices. Un arreglo (matriz) es una estructura de datos compuesta que permite acceder a cada componente por dos variables.

Un arreglo (matriz) es una estructura de datos compuesta que permite acceder a cada componente por dos variables índice, que da la posición en la estructura (fila,columna) para acceder al componente.

MatrizMatriz

Un tipo de dato Matriz es una colección ordenada e indexada de elementos.

Page 3: Programación I - 2011 Arreglos II- Matrices. Un arreglo (matriz) es una estructura de datos compuesta que permite acceder a cada componente por dos variables.

MatrizMatrizEstructura homogénea: los datos que almacena son del mismo tipo.

Estructura estática: su tamaño no varía al agregar o sacar elementos de la misma.

Estructura indizada: permite recuperar cualquier elemento del arreglo indicando su posición (fila,columna).

Page 4: Programación I - 2011 Arreglos II- Matrices. Un arreglo (matriz) es una estructura de datos compuesta que permite acceder a cada componente por dos variables.

DeclaraciónDeclaración

Program uno; type ventas= array[rango,rango] of tipo;

integercharbooleanenumerativo

integercharbooleanenumerativorealregistros

Ejemplo:type ventas= array [1..12,1..31] of integer;

Page 5: Programación I - 2011 Arreglos II- Matrices. Un arreglo (matriz) es una estructura de datos compuesta que permite acceder a cada componente por dos variables.

OperacionesOperaciones

m1:= m2;

Comparar dos matrices de manera directa

If (m1 = m2) then … NO!

Lectura de una matriz read(m1); NO!

Escritura de una matriz write(m1); NO!

Asignar una matriz a otra

Page 6: Programación I - 2011 Arreglos II- Matrices. Un arreglo (matriz) es una estructura de datos compuesta que permite acceder a cada componente por dos variables.

EjercicioEjercicio

Dada una Matriz A de N x M de números enteros (N y M deben ser constantes definidas en el programa), se pide realizar: a)Realizar un módulo que reciba la matriz A, un valor V y que retorne dicha matriz en la que se ha eliminado la V-ésima fila.

a)Realizar un módulo que reciba la matriz A, un vector B, un valor V y que inserte el vector B como columna V-ésima de la matriz A.

Page 7: Programación I - 2011 Arreglos II- Matrices. Un arreglo (matriz) es una estructura de datos compuesta que permite acceder a cada componente por dos variables.

Entendiendo el enunciadoEntendiendo el enunciadoInciso a)a)Realizar un módulo que reciba la matriz A, un valor V y que retorne dicha matriz en la que se ha eliminado la V-ésima fila.

El módulo recibe una matriz, con lo cual deberá recibir la dimensión lógica de filas ó columnas.

Asumimos que la matriz que hemos de tratar está cargada con “filas completas”, con lo cual sólo recibiremos la matriz y la dimensión lógica de filas (pues las columnas por filas estarán completas).

X x x x x x x

X x x x x x x

X x x x x x x

Page 8: Programación I - 2011 Arreglos II- Matrices. Un arreglo (matriz) es una estructura de datos compuesta que permite acceder a cada componente por dos variables.

Entendiendo el enunciadoEntendiendo el enunciadoTambién recibirá un valor V como dato, para eliminar la fila V de la matriz.

Sólo deberíamos controlar la dimensión lógica por filas. Para tal fin utilizaremos una variable:

VAR dimLogFila: Integer;

A B C D E F G

H I J K L M N

Ñ O P Q R S T

U V W X Y Z @

A B C D E F G

H I J K L M N

U V W X Y Z @

dimLogFila = 4 dimLogFila = 3

V

Page 9: Programación I - 2011 Arreglos II- Matrices. Un arreglo (matriz) es una estructura de datos compuesta que permite acceder a cada componente por dos variables.

Entendiendo el enunciadoEntendiendo el enunciado

X

X

X

X

X

X

X

X

X

X

X

X

X

X

X

Inciso b) Realizar un módulo que reciba la matriz A, un vector B, un valor V y que inserte el vector B como columna V-ésima de la matriz A.

Se debe implementar un módulo que reciba una matriz, la dimensión lógica de columnas, un vector B, y un valor N que representa el número de fila en donde debemos insertar dicho vector. Debemos comprender que la matriz que hemos de tratar está cargada con “columnas completas”.

Page 10: Programación I - 2011 Arreglos II- Matrices. Un arreglo (matriz) es una estructura de datos compuesta que permite acceder a cada componente por dos variables.

Entendiendo el enunciadoEntendiendo el enunciado

También recibirá un valor V y un vector B, para insertar B en la posición V.

Sólo deberíamos controlar la dimensión lógica por columnas.Para tal fin utilizaremos una variable:

VAR dimLogColumna: Integer;

A F K

B G L

C H M

D I N

E J Ñ

A F O K

B G P L

C H Q M

D I R N

E J S Ñ

dimLogColumna = 3 dimLogColumna = 4

VO

P

Q

R

S

B V

Page 11: Programación I - 2011 Arreglos II- Matrices. Un arreglo (matriz) es una estructura de datos compuesta que permite acceder a cada componente por dos variables.

Resolviendo el ejercicioResolviendo el ejercicio

Program ejercicio;const N = 100; M = 100;type

matriz = array [1..N, 1..M] of integer;vector = array [1..N] of Integer;

varA: matriz;

B: vector;dimLogFila, dimLogColumna: integer;

Page 12: Programación I - 2011 Arreglos II- Matrices. Un arreglo (matriz) es una estructura de datos compuesta que permite acceder a cada componente por dos variables.

procedure eliminar (var A: matriz; var dimLogFila: integer; V: integer);var

i,j: integer;begin if ( V > 0 ) and ( V <= dimLogFila) then begin if ( V < dimLogFila ) then for i:= V to (dimLogFila - 1) do for j:= 1 to M do A[i,j]:= A[i+1,j]; dimLogFila:= dimLogFila - 1; end;end;

Módulo para eliminar filaMódulo para eliminar fila

Solución inciso a)

Page 13: Programación I - 2011 Arreglos II- Matrices. Un arreglo (matriz) es una estructura de datos compuesta que permite acceder a cada componente por dos variables.

procedure insertar (var A: matriz; var dimLogColumna: integer; B: vector; dimLogVector: integer; V: integer);var

i, j, m : integer;begin

if ( dimLogColumna < M ) and ( V > 0 ) and ( V <= DimLogColumna ) and (dimLogVector = N) then begin dimLogColumna := dimLogColumna + 1; for i:= (dimLogColumna - 1) downto V do for j:= 1 to dimLogVector do A[j,i + 1]:= A[j, i]; for m:= 1 to DimLogVector do A[m, V] := B[m]; end;end;

Módulo para insertar columnaMódulo para insertar columna

Solución inciso b)