You are on page 1of 5

Sesin 01

Agenda:
Arreglos Declaracin. Operaciones. Tipos Ordenamiento

Docente: Ing. Carlos Pedrera Lastarria

EVALUAIN PREVIA (30) Desarrollar una aplicacin en C++ que permita ingresar 06 edades de personas en la variable EDAD y luego imprima lo siguiente: La suma La edad Mayor La edad Menor Edad promedio CONCEPTOS BASICOS

Arreglo: Un Arreglo es una estructura de datos que almacena bajo el mismo nombre (variable) a una coleccin de datos del mismo tipo. Los arreglos se caracterizan por: Almacenan los elementos en posiciones contiguas de memoria Tienen un mismo nombre de variable que representa a todos los elementos. Para hacer referencia a esos elementos es necesario utilizar un ndice que especifica el lugar que ocupa cada elemento dentro del archivo.

Unidimensionales (Vectores) Tipo de Arreglos Bidimensionales (Matrices)

Vectores
Es un arreglo de N elementos organizados en una dimensin donde N recibe el nombre de longitud o tamao del vector. Para hacer referencia a un elemento del vector se usa el nombre del mismo, seguido del ndice (entre corchetes), el cual indica una posicin en particular del vector. Por ejemplo: Vec[x] Donde: Vec x

Nombre del arreglo Numero de datos que constituyen el arreglo

2|Pgina

Representacin grfica de un vector

Vec[1] 7 Vec[2] 8 Vec[3] Vec[4] 9

1 0 Problema Resuelto
EJEMPLO 01 Comprendamos el procedimiento con el siguiente ejemplo: Sea el vector V = {23, 45, 18, 33, 72, 12} que almacena las edades de 6 personas y se desea ordenarlo en forma ascendente. Muestre cmo va quedando e vector en cada pasada. Como el nmero de elementos N es 6; esto indica que se necesitan como mximo N 1 : 5 pasadas para que el vector quede totalmente ordenado. V = {23, 45, 18, 33, 72, 12} V = {23, 18, 45, 33, 72, 12} V = {23, 18, 33, 45, 72, 12} V = {23, 18, 33, 45, 12, 72} Como resultado de la primera pasada (iteracin) se obtiene que el valor mayo (72) ya se encuentra en la ltima posicin; pero an el vector no est ordenado.

Pasada 1:

Pasada 2:

V = {23, 18, 33, 45, 12, 72} V = {18, 23, 33, 45, 12, 72} V = {18, 23, 33, 12, 45, 72} V = {18, 23, 33, 12, 45, 72} V = {18, 23, 12, 33, 45, 72} V = {18, 23, 12, 33, 45, 72} V = {18, 12, 23, 33, 45, 72} V = {18, 12, 23, 33, 45, 72} V = {12, 18, 23, 33, 45, 72}

El siguiente valor mayor (45) se ha colocado en la siguiente posicin ms alta. An no est ordenado el vector.

Pasada 3:

Pasada 4:

Pasada 5:

Despus de quinta pasada, el vector ya ha quedado ordenado

EJEMPLO 02 Realice el mismo procedimiento con el siguiente vector V = {28, 12, 10, 33, 45, 72}. Despus de cuntas pasadas ha quedado ordenado el vector? Como el vector tiene 6 elementos, se necesitan, como mximo cinco pasadas o iteraciones (6 1). Veamos que ocurre y en cuantas pasadas quedar ordenado el vector.

3|Pgina

Pasada 1:

Pasada 2:

V = {28, 12, 10, 33, 45, 72} V = {12, 28 10, 33, 45, 72} V = {12, 10, 28, 33, 45, 72} V = {12, 10, 28, 33, 45, 72} V = {10, 12, 28, 33, 45, 72}

Observe cmo el elemento mayor, en este ejemplo, ya est en la ltima posicin. Ahora el vector ya qued ordenado. Sin embargo necesitaba 5 pasadas como mximo, peor claramente observamos que este vector ha quedado ordenado antes.

Respuesta: El vector ha quedado ordenado en la segunda pasada. Algoritmo de ordenacin por burbuja Implementaremos otras versiones de mtodo de la burbuja. El primero fcil de entender, realiza N 1 pasadas obligatoriamente; el segundo corrige esta desventaja y detecta cuando el vector ya qued ordenado a fin de evitar desperdicio de procesamiento. Para ambos casos, sea v el vector numrico de n elementos; y se desea ordenarlos ascendentemente. Algoritmo versin1: utiliza las N 1 pasadas void burbuja1(float v[100], int n) { for (int i = 0; i< (n 1); i++) for(int j=0; j< (n i 1); j++ ) if (v[j] > v[j+1]) { //intercambiar aux = v[j]; v[j]=v[j+1]; v[j+1]=aux; } } //fin burbuja1

Algoritmo versin2: Detecta cuando el vector ya qued ordenado void burbuja(float v[100], int n) { int sw; float aux; sw = 0; while (sw ==0){ sw = 1; for(int j=0; j< (n 1); j++ ) if (v[j] > v[j+1]) { //intercambiar aux = v[j]; v[j]=v[j+1]; v[j+1]=aux; sw = 0; } } //fin while } //fin burbuja Invocando: leer(vector,n); mostrar(vector,n) burbuja(vector,n); mostrar(vector,n);

4|Pgina

Esta segunda versin no obliga a que el proceso de comparacin de parejas de elementos se repita n 1 veces, sino que incluye el uso de una variable bandera (centinela) llamada sw que permite que la comparacin se repita (las pasadas) mientras el vector an no est ordenado. Mientras sw sea igual a cero indica que el vector no est ordenado. Cuando sw es igual a uno indica que ya est ordenado y por tanto no vuelve a ejecutarse la estructura while. En adelante usaremos este segundo algoritmo por ser ms eficiente.

Nota: La fuente de este ejemplo esta en MODULO_EDA_2.0.0 del Ing. CIP. Aldo Segismundo Pereda Castillo. http://www.scribd.com/doc/58974067/MODULO-EDA-2-0-

Problemas Propuestos 1) Calcular el promedio de 50 valores almacenados en un vector. Determinar adems cuantos son mayores que el promedio, imprimir el promedio, el nmero de datos mayores que el promedio y una lista de valores mayores que el promedio ordenados.

2) Llenar dos vectores A y B de 45 elementos cada uno, sumar el elemento uno del vector A con el elemento uno del vector B y as sucesivamente hasta 45, almacenar el resultado ordenado en un vector C, e imprimir el vector resultante.

3) Almacenar 500 nmeros en un vector, elevar al cuadrado cada valor almacenado en el vector, almacenar el resultado en otro vector. Ordenar e imprimir el vector original y el vector resultante.

4) Se tienen almacenados en la memoria dos vectores M y N de cien elementos cada uno. Hacer un programa en C++ que los ordene y escriba la palabra Iguales si ambos vectores son iguales y Diferentes si no lo son. Sern iguales cuando en la misma posicin de ambos vectores se tenga el mismo valor para todos los elementos.

5) Se tiene el vector A con 100 elementos almacenados. Disee un programa en c++ que escriba SI si el vector esta ordenado ascendentemente o NO si el vector no est ordenado

5|Pgina

You might also like