viernes, 11 de julio de 2014

Evap 7

METODOS DE ORDENAMIENTO EN DEV C++
Debido a que las estructuras de datos son utilizadas para almacenar información, para poder recuperar esa información de manera eficiente es deseable que aquella esté ordenada. Existen varios métodos para ordenar las diferentes estructuras de datos básicas.
En general los métodos de ordenamiento no son utilizados con frecuencia, en algunos casos sólo una vez. Hay métodos muy simples de implementar que son útiles en los casos en dónde el número de elementos a ordenar no es muy grande (ej, menos de 500 elementos). Por otro lado hay métodos sofisticados, más difíciles de implementar pero que son más eficientes en cuestión de tiempo de ejecución.

Existen muchos tipos de ordenamiento, esta vez analizaremos 3 de ellos. Estos son:
1.- Método de ordenamiento por burbuja:
Este método consiste en acomodar el vector moviendo el mayor hasta la última casilla comenzando desde la casilla cero del vector hasta haber acomodado el número más grande el la última posición, una vez acomodado el más grande, prosigue a encontrar  y acomodar el siguiente más grande comparando de nuevo los números desde el inicio del vector, y así sigue hasta ordenar todo los elementos del vector.y así si
El procedimiento de la burbuja es el siguiente:

Ir comparando desde la casilla 0 numero tras número hasta encontrar uno mayor, si este es realmente  el mayor de todo el vector se llevará hasta la última casilla, si no es así, será reemplazado por uno mayor que él.

Este procedimiento seguirá así hasta que halla ordenado todas las casillas del vector.

Una de las deficiencias del algoritmo es que ya cuando a ordenado parte del vector vuelve a compararlo cuando esto ya no es necesario.hasta ordenar todo los elementos el arreglo.

EJEMPLO:
void burbuja(int * v, int n) /*** código en C++ ***/
{
 /* ordenamiento de burbuja */
 for (int i = 0; i < n-1; i++)
 for (int j = i + 1; j < n; j++) {
 if ( v[i] > v[j] ) //realiza la comparación
{
 int tem = v[i]; //si es cierta intercambia los datos
 v[i] = v[j];
 v[j] = tem;
 }
 }
}

2.- Método de ordenamiento por Inserción directa:
El algoritmo de ordenación por el método de inserción directa es un algoritmo relativamente sencillo y se comporta razonablemente bien en gran cantidad de situaciones.
El algoritmo ordena los dos primeros elementos de la lista, a continuación el tercer elemento se inserta en la posición que corresponda, el cuarto se inserta en la lista de tres elementos, y así sucesivamente. Este proceso continua hasta que la lista este totalmente ordenada.
EJEMPLO:
#include<stdio.h>
#include<conio.h>
int V[4]={4,1,7,2};
int n=4;
int i,j,auxiliar;
void main(){
clrscr();
for(i=1;i<n;i++)
{
j=i;
auxiliar=V;
while(j>0 && auxiliar<V[j-1])
{
V[j]=V[j-1];
j--;
}
V[j]=auxiliar;
}
for(i=0;i<4;i++)
{
printf("%d",V);
}
getch();
}
3.- Método de ordenamiento por selección:
El método de ordenamiento por selección consiste en encontrar el menor de todos los elementos del arreglo e intercambiarlo con el que está en la primera posición. Luego el segundo más pequeño, y así sucesivamente hasta ordenar todo el arreglo.
PROCEDIMIENTO:
·        •Buscas el elemento más pequeño de la lista.
·        •Lo intercambias con el elemento ubicado en la primera posición de la lista.
·        •Buscas el segundo elemento más pequeño de la lista.
·        •Lo intercambias con el elemento que ocupa la segunda posición en la lista.
·        •Repites este proceso hasta que hayas ordenado toda la lista.
EJEMPLO:
#include<stdio.h>
#include<conio.h>
int V[4]={1,4,8,6};
int n=4,j=0,i=0;
int temp=0,minimo=0;
void main(){
clrscr();
for(i=0;i<n-1;i++)
{
minimo=i;
for(j=i+1;j<n;j++)
{
if(V[minimo] > V[j])
{
minimo=j;
}
}
temp=x[minimo];
V[minimo]=V;
V=temp;
}
for(i=0;i<n;i++)
{
printf("%d",V);
}
getch();

}

sábado, 28 de junio de 2014

Evap 6

MATRICES

Una matriz en programación no es mas que un conjunto de vectores o arreglos multidimensionales, donde cada dimensión tiene su propio rango.
Existen conjuntos de datos que por su naturaleza son mejor representados mediante tablas o matrices multidimensionales que por vectores.

Por ejemplo, se puede representar las calificaciones de 4 asignaturas cursadas por 6 estudiantes mediante una tabla, donde cada fila correspondería a un estudiante y cada columna a una asignatura. Cada dato individual (la calificación de un estudiante en una asignatura dada) es un elemento de esta tabla y ocupa una celda identificable por el número de la fila y el número de la columna.
De esta manera, cada elemento de la tabla queda completamente identificado mediante dos subíndices: el primero para identificar la fila y el segundo para identificar la columna.

El programador debe tener presente que la memoria de las computadoras es lineal, por lo que la mayoría de los compiladores almacenan en memoria los elementos de una matriz linealizandola por filas; es decir, todos los elementos de la primera fila primero, los de la segunda después y así sucesivamente.
EJEMPLO:
El siguiente programa, utiliza el operador el operador sizeof() para determinar


el número de bytes que utilizan diferentes clases de arreglos declarados.

#include <iostream.h>

void main(void)
 {
 int caja[3][3];
 float salarioAnual[52][5];
 char paginas[40][60][20];

 cout << "Numero de bytes utilizado por caja[3][3] = "
 << sizeof(caja) << endl;
 cout << "Numero de bytes utilizado por salarioAnual[52][5] = "
 << sizeof(salarioAnual)<< endl;
 cout << "Numero de bytes utilizado por paginas[40][60][20] = "
 << sizeof(paginas)<< endl;

 }//Fin de main()


Evap 5

VECTORES, ARREGLOS O ARRAYS

Un vector, arreglo o array, es un conjunto de elementos agrupados como una unidad, todos los elementos son del mismo tipo.
TIPOS DE VECTORES, ARREGLOS O ARRAYS:
Pueden ser:
·       De una dimensión(Unidimensional): Una array uni-dimensional es aquel en donde los componentes son accesibles por medio de uno y solamente un índice que apunte al componente requerido.
En C++ los arreglos se declaran de la siguiente forma:

Tipodedato nombredelarreglo[tamañodelarreglo];


Como podemos ver, es similar a declarar una variable convencional, solo que se coloca entre corchetes el número de posiciones del arreglo, por lo que todas las posiciones serán del mismo tipo.

Al trabajar cada noche arreglos hacemos referencia a cada posición del arreglo a través de su número de índice, el cual comienza a partir del cero, de tal forma que para almacenar el número 10 en la posición 6 de un arreglo escribiriamos:

x[5]=10;


Parra llenar todos los elementos del arreglo es común emplear un ciclo que nos permita recorrer el arreglo desde la primera hasta la última posición.

·       De dos dimensiones (Bidimensional): Un array bi-dimensional es aquel en donde los componentes son accesibles por medio de una pareja de índices que apunten a la fila y a la columna del componente requerido.
CARACTERISTICAS:
·        Cada elemento contiene un valor.
·        Los elementos se ingresan a partir de cero.
·        Es posible tener arreglo de arreglos.

·        El rango de un arreglo es igual al numero de dimensiones de un arreglo.