Está en la página 1de 19

Vectores y Matrices

V t
Vectores y Matrices
M ti

Indice

9 Vectores
9 Algoritmos de Bsqueda
9 Algoritmos
g de Ordenacin
9 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 y un ndice que indica
i di lla posicin que
ocupa el elemento en el vector.

Los elementos estn almacenados en posiciones


contiguas
g de memoria.

Elementos
-32
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 tamao
dato t determina
d t i ell 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];

t v est
El vector 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.
5

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).
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
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 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
1. Leer un vector
t ded reales
l que representant 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).
( )
8

Vectores El tamao lgico del vector debe


Modularizacin ir siempre AL LADO del vector.

DEFINICION MODULO:
MODULO
void modulo(int v[], int util_v)
{

} En la definicin, NO es necesario
especificar el tamao fsico
LLAMADA MODULO:

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)


9

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 aceptet ddos 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,
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
v no tiene que estar ordenado.
v no se modifica: se pasa por valor (const int v[]).
du o devuelve
El mdulo de ue e la
a pos
posicin
c do
donde
de est o -1 s
si no
o est
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
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 lla 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:
9 El de la izquierda ordenado.
9 El d
de lla d
derecha
h ddesordenado.
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
Al iiguall que antes,
t a lla iizquierda
i d se va d j d un
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

110 65 23 80 ? ? ? ?
_m
utilFil_

-32 9 65 45 ? ? ? ?
1 21 54 4 ? ? ? ?
15 48 27 25 ? ? ? ?
FIL

? ? ? ? ? ? ? ?
MAX_F

? ? ? ? ? ? ? ?
17

Matrices
Procesamiento
Las matrices se procesan elemento a elemento.

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++) y el segundo el ndice
j de las columnas.
for (int j=0; j<utilCol_m; j++)
procesar 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:
2 Realizar
R li un programa para b
buscar un
elemento dentro de una matriz (SOLUCION).
18

Matrices Es necesario especificar MAX_COL.


Por ello, hay que definir esta constante
Modularizacin de forma global (despus de using).

DEFINICION MODULO:
MODULO
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).

También podría gustarte