Está en la página 1de 19

Vectores y Matrices Vectores y Matrices

2
V t M t i Vectores y Matrices
Indice Indice
Vectores
Algoritmos de Bsqueda
Algoritmos de Ordenacin g
Matrices
3
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 ndice i di l posicin del vector y un ndice que indica la posicin que
ocupa el elemento en el vector.
Los elementos estn almacenados en posiciones
contiguas de memoria. g
-32 9 65 45 7 8 9 100 1
Elementos
32 9 65 45 7 8 9 100 1
0 1 2 3 4 5 6 7 8
Posiciones
4
Vectores
Declaracin
tipo nombre_vector [tamao];
El d t t d t i l tamao fsico d l t El dato tamao determina el tamao fsico del vector
y debe ser un literal o constante entera.
Ejemplo:
const int MAX = 100;
double v[MAX], w[1000];
El t v t t 100 l El i El vector v est compuesto por 100 reales. El primero 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.
5
Vectores 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++)
v[i] procesar v[i];
Ejercicio 1: Leer un vector con 10 enteros y mostrar 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 Ejercicio 2: Leer un vector con 15 reales y mostrarlo
por pantalla al revs (SOLUCION).
6
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 MAX con: 0 util_v MAX.
int v[10] util v = 4; int v[10], util_v = 4;
V[0]= -32; V[1]=9; V[2]=65; V[3]=45;
-32 9 65 45 ? ? ? ? ? ?
0 1 2 3 4 5 6 7 8 9
Unicamente se procesan los elementos situados entre
las posiciones 0 y util_v-1 (ambas inclusive).
7
Vectores
Ejercicios
1 L t d l t t d 1. Leer un vector de reales que representan notas 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. Realizar el mismo ejercicio anterior pero mostrando
adems la posicin donde se encuentra el mayor
(SOLUCION).
3. Leer un vector de caracteres y mostrar las posiciones
donde se almacenan vocales (SOLUCION). ( )
8
Vectores
Modularizacin
DEFINICION MODULO
El tamao lgico del vector debe
ir siempre AL LADO del vector.
DEFINICION MODULO:
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 pasan por REFERENCIA p p
PASO POR VALOR de vectores:
void modulo(const int v[], int util_v)
9
Vectores
Ejercicios
Construir un programa que utilice tres mdulos Construir un programa que utilice tres mdulos
(SOLUCION):
1 Leer un vector 1. Leer un vector.
2. Calcular la media de un vector.
3. Mostrar los elementos de un vector por pantalla. 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 y devuelva otro vector con los elementos pares del
primero (SOLUCION).
C Construir un mdulo para buscar un elemento x en
un vector v (SOLUCION).
10
Vectores
Ms ejercicios
C t i d l t d t d Construir un mdulo que acepte dos vectores 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 repetidos de un vector original, guardando el
resultado en un vector destino (SOLUCION).
11
Algoritmos de Bsqueda g q
Bsqueda secuencial
PROBLEMA: Encontrar un elemento x en un vector v
v no tiene que estar ordenado.
v no se modifica: se pasa por valor (const int v[]).
El mdulo devuelve la posicin donde est o -1 si no est. duo de ue e a pos c do de est o s o est
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 de Bsqueda g q
Bsqueda binaria
V debe estar ordenado
V no se modifica V no se modifica
Devuelve la posicin donde est o -1 si no est
ALGORITMO
1 Comparar xcon el elemento que ocupa la mitad de v 1. Comparar xcon el elemento que ocupa la mitad de v.
2. Si coinciden, se habr encontrado el elemento.
3 Si d t i l it d d l d t 3. Si no, se determina la mitad de ven la que puede encontrarse.
4. Se repite el proceso con la mitad correspondiente.
(VER ANIMACION)(VER CODIGO)
13
Algoritmos de Ordenacin Algoritmos de Ordenacin
Ordenacin por seleccin
PROBLEMA: Realizar una serie de intercambios entre elementos
de un un vector v para que quede ordenado (ascendentemente) de un un vector v para que quede ordenado (ascendentemente).
ALGORITMO:
1. Determinar la posicin del menor elemento de ve intercambiarlo con el que
ocupa la primera posicin (la cero). p p p ( )
2. Determinar la posicin del menor elemento de vsin considerar el primero e
intercambiarlo con el que ocupa la segunda posicin.
3. Determinar la posicin del menor elemento de vsin considerar los dos primeros
e intercambiarlo con el que ocupa la tercera posicin
4. Repetir el proceso hasta que vquede ordenado.
14
Algoritmos de Ordenacin g
Ordenacin por seleccin
Durante el proceso se manejan dos subvectores: Durante el proceso se manejan dos subvectores:
El de la izquierda ordenado.
El d l d h d d d El de la derecha desordenado.
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 de Ordenacin g
Mtodo de la burbuja
Al i l t l i i d d j d Al igual que antes, a la izquierda se va dejando un
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];
MAX COL
utilCol_m
int utilF_m = 4, utilC_m = 4;
110 65 23 80
? ? ? ?
MAX_COL
_
_
m
-32 9 65 45
? ? ? ?
1 21 54 4
? ? ? ?
t
i
l
F
i
l
_
15 48 27 25
? ? ? ?
? ? ? ? ? ? ? ?
F
I
L
u
? ? ? ? ? ? ? ?
M
A
X
_
F
17
Matrices
Procesamiento
Las matrices se procesan elemento a elemento.
La mayora de procesos sobre matrices se llevan a cabo La mayora de procesos sobre matrices se llevan a cabo
mediante DOS instrucciones for.
El primer for mueve
el ndice i de las filas
for (int i=0; i<utilFil_m; i++)
for (int j=0; j<utilCol_m; j++)
el ndice i de las filas
y el segundo el ndice
j de las columnas.
procesar m[i][j];
Ejercicio 1: Leer una matriz de enteros y mostrar por
pantalla la fila y columna del mayor (SOLUCION).
Ej i i 2 R li b Ejercicio 2: Realizar un programa para buscar un
elemento dentro de una matriz (SOLUCION).
18
Matrices
Es necesario especificar MAX_COL.
Modularizacin
DEFINICION MODULO
Por ello, hay que definir esta constante
de forma global (despus de using).
DEFINICION MODULO:
void modulo(int m[][MAX_COL], int utilFil_m, int utilCol_m)
{{

}
LLAMADA MODULO:
d l ( il il il l ) modulo(m, utilFil_m, utilCol_m);
POR DEFECTO las matrices pasan por REFERENCIA p p
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 Construir un programa modular que utilice tres tareas
(SOLUCION):
1 Leer una matriz de reales 1. Leer una matriz de 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 corresponde con alguna de las filas de una matriz
(SOLUCION).

También podría gustarte