La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Programación I - 2011 Arreglos II- Matrices.

Presentaciones similares


Presentación del tema: "Programación I - 2011 Arreglos II- Matrices."— Transcripción de la presentación:

1 Programación I Arreglos II- Matrices

2 Matriz 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. Un tipo de dato Matriz es una colección ordenada e indexada de elementos.

3 Matriz Estructura 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).

4 Declaración Program uno; type ventas= array[rango,rango] of tipo;
integer char boolean enumerativo real registros integer char boolean enumerativo Ejemplo: type ventas= array [1..12,1..31] of integer;

5 Operaciones m1:= m2; Asignar una matriz a otra
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!

6 Ejercicio 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: 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. 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.

7 Entendiendo el enunciado
Inciso 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

8 Entendiendo el enunciado
Tambié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 @ V dimLogFila = 3 dimLogFila = 4

9 Entendiendo el enunciado
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”. X X X

10 Entendiendo 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; B V V O P Q R S 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 = 4 dimLogColumna = 3

11 Resolviendo el ejercicio
Program ejercicio; const N = 100; M = 100; type matriz = array [1..N, 1..M] of integer; vector = array [1..N] of Integer; var A: matriz; B: vector; dimLogFila, dimLogColumna: integer;

12 Módulo para eliminar fila
Solución inciso a) 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;

13 Módulo para insertar columna
Solución inciso b) 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;


Descargar ppt "Programación I - 2011 Arreglos II- Matrices."

Presentaciones similares


Anuncios Google