Você está na página 1de 19

Vectores y Matrices

V t Vectores y Matrices M ti

Indice
Vectores Algoritmos de Bsqueda Algoritmos g de Ordenacin Matrices

Vectores
Definicin
Un vector est compuesto por una serie de elementos del mismo tipo. Para acceder a cada elemento se utiliza el nombre del vector y un ndice que indica i di l la posicin que ocupa el elemento en el vector. Los elementos estn almacenados en posiciones contiguas g de memoria. Elementos -32 32 Posiciones
0

9
1

65
2

45
3

7
4

8
5

9
6

100
7

1
8

Vectores
Declaracin tipo nombre_vector [tamao];
El d dato t tamao t determina d t i el l tamao fsico del d l vector t y debe ser un literal o constante entera. Ejemplo: const int MAX = 100; double v[MAX], w[1000];
El vector t v est t compuesto t por 100 reales. l El primero i es v[0] y el ltimo v[99]. El elemento v[i](i=0,,99)es un double y puede usarse como cualquier variable de tipo double.

Vectores
Procesamiento
Los vectores se procesan elemento a elemento. En general, la mayora de procesos sobre vectores se llevan a cabo mediante una instruccin for. for (int i=0; i<MAX; i++) procesar

v[i];

Ejercicio 1: Leer un vector con 10 enteros y mostrar por pantalla su media (SOLUCION). Ejercicio 2: Leer un vector con 15 reales y mostrarlo por pantalla al revs (SOLUCION).

Vectores
Tamao lgico de un vector
En general, para procesar un vector v con tamao fsico MAX se considera un tamao lgico util_v con: 0 util_v util v MAX. MAX
int v[10], v[10] util_v util v = 4;
V[0]= -32; V[1]=9; V[2]=65; V[3]=45;

-32
0

9
1

65
2

45
3

?
4

?
5

?
6

?
7

?
8

?
9

Unicamente se procesan los elementos situados entre las posiciones 0 y util_v-1 (ambas inclusive).

Vectores
Ejercicios
1 L 1. Leer un vector t de d reales l que representan t notas t d de alumnos y mostrar por pantalla la mayor nota. El nmero de elementos a procesar se leer por teclado (SOLUCION). 2 Realizar el mismo ejercicio anterior pero mostrando 2. adems la posicin donde se encuentra el mayor (SOLUCION). 3. Leer un vector de caracteres y mostrar las posiciones donde se almacenan vocales (SOLUCION). ( )

Vectores
Modularizacin
DEFINICION MODULO: MODULO

El tamao lgico del vector debe ir siempre AL LADO del vector.

void modulo(int v[], int util_v) { } En la definicin, NO es necesario

LLAMADA MODULO:

especificar el tamao fsico

modulo(v, util_v);

POR DEFECTO los vector p pasan p por REFERENCIA PASO POR VALOR de vectores:
void modulo(const int v[], int util_v)

Vectores
Ejercicios
Construir un programa que utilice tres mdulos (SOLUCION): 1. Leer un vector. 1 vector 2. Calcular la media de un vector. 3. Mostrar los elementos de un vector por pantalla. Construir un mdulo que acepte un vector de enteros y devuelva otro vector con los elementos pares del primero (SOLUCION). Construir un mdulo para buscar un elemento x en C un vector v (SOLUCION).

10

Vectores
Ms ejercicios
Construir C t i un mdulo d l que acepte t d dos vectores t d de enteros y devuelva true si son iguales y false en caso contrario (SOLUCION). ( ) Construir un mdulo para quitar los elementos repetidos de un vector original, guardando el resultado en un vector destino (SOLUCION).

11

Algoritmos g de Bsqueda q
Bsqueda secuencial
PROBLEMA: Encontrar un elemento x en un vector v no tiene que estar ordenado. v no se modifica: se pasa por valor (const int v[]). du o devuelve de ue e la a pos posicin c do donde de est o -1 s si no o est est. El mdulo

ALGORITMO:
1. Situarse al principio del vector

2. Mientras tenga componentes en el vector y no lo haya encontrado


a. Comparar el elemento a buscar con el elemento actual b. Si coinciden, ya lo he encontrado. c. En otro caso, avanzar al siguiente elemento (VER CODIGO) (VER ANIMACION)

12

Algoritmos g de Bsqueda q
Bsqueda binaria
V debe estar ordenado V no se modifica Devuelve la posicin donde est o -1 si no est

ALGORITMO
1 Comparar x con el elemento que ocupa la mitad de v. 1. 2. Si coinciden, se habr encontrado el elemento. 3 Si no, se determina 3. d t i l la mitad it d de d v en la l que puede d encontrarse. t 4. Se repite el proceso con la mitad correspondiente. (VER ANIMACION)(VER CODIGO)

13

Algoritmos de Ordenacin
Ordenacin por seleccin
PROBLEMA: Realizar una serie de intercambios entre elementos de un un vector v para que quede ordenado (ascendentemente). (ascendentemente)

ALGORITMO:
1. Determinar la posicin del menor elemento de v e intercambiarlo con el que ocupa p la primera p posicin p (la ( cero). ) 2. Determinar la posicin del menor elemento de v sin considerar el primero e intercambiarlo con el que ocupa la segunda posicin. 3. Determinar la posicin del menor elemento de v sin considerar los dos primeros e intercambiarlo con el que ocupa la tercera posicin 4. Repetir el proceso hasta que v quede ordenado.

14

Algoritmos g de Ordenacin
Ordenacin por seleccin
Durante el proceso se manejan dos subvectores:
El de la izquierda ordenado. El d de l la d derecha h d desordenado. d d

La principal idea de este algoritmo es: En cada pasada, se selecciona el elemento ms pequeo del subvector no ordenado y se intercambia con el primer elemento de este mismo subvector.
(VER CODIGO) (VER ANIMACION)

15

Algoritmos g de Ordenacin
Mtodo de la burbuja
l que antes, t i d se va d j d un Al i igual al la i izquierda dejando subvector ordenado.

La idea de la burbuja es: El subvector desordenado se procesa desde el final y hacia atrs: Se van comparando elementos dos a dos y se deja a la izquierda el ms pequeo (hay que intercambiarlos).
(VER CODIGO) (VER ANIMACION)

16

Matrices
Generalidades
const int MAX_FIL = 6, MAX_COL = 8;

int m[MAX_FIL][MAX_COL];
int utilF_m = 4, utilC_m = 4; _ utilCol_m

MAX COL MAX_COL

utilFil_ _m

110 -32 1 15
MAX_F FIL

65 9 21 48

23 65 54 27

80 45 4 25

? ? ? ? ? ?

? ? ? ? ? ?

? ? ? ? ? ?

? ? ? ? ? ?

? ?

? ?

? ?

? ?

17

Matrices
Procesamiento
Las matrices se procesan elemento a elemento. La mayora de procesos sobre matrices se llevan a cabo mediante DOS instrucciones for.
for (int i=0; i<utilFil_m; i++) for (int j=0; j<utilCol_m; j++) procesar

El primer for mueve el ndice i de las filas y el segundo el ndice j de las columnas.

m[i][j];

Ejercicio 1: Leer una matriz de enteros y mostrar por pantalla la fila y columna del mayor (SOLUCION). Ej Ejercicio i i 2: Realizar R li un programa para b buscar un elemento dentro de una matriz (SOLUCION).

18

Matrices
Modularizacin
DEFINICION MODULO: MODULO
{ }

Es necesario especificar MAX_COL. Por ello, hay que definir esta constante de forma global (despus de using).

void modulo(int m[][MAX_COL], int utilFil_m, int utilCol_m)

LLAMADA MODULO:
modulo(m, d l ( utilFil_m, il il utilCol_m); il l )

POR DEFECTO las matrices p pasan p por REFERENCIA PASO POR VALOR de matrices:
void modulo(const int m[][MAX_COL], int utilFil_m, int utilCol_m)

19

Matrices
Ejercicios
Construir un programa modular que utilice tres tareas (SOLUCION): 1. Leer una matriz de reales 1 reales. 2. Eliminar los decimales de los elementos de la matriz. 3. Mostrar por pantalla los elementos resultantes de la matriz. Construir un mdulo que acepte dos matrices y devuelva true si son iguales y false en caso contrario
(SOLUCION). (SOLUCION)

Realizar un programa para comprobar si un vector se corresponde con alguna de las filas de una matriz (SOLUCION).

Você também pode gostar