sábado, 12 de julio de 2014

EVP7

Ordenamiento

Los 3 Métodos de Ordenamiento más populares

1)     Bubble Sort (Ordenamiento Burbuja):

Es el algoritmo de ordenamiento más sencillo de todos, conocido también como método del intercambio directo, el funcionamiento se basa en la revisión de cada elemento de la lista que va a ser ordenada con el elemento siguiente. El origen del nombre de este algoritmo proviene de la forma con la que suben por la lista los elementos durante los intercambios, tal y como si fueran "burbujas", el algoritmo fundamental de este método es la simple comparación de elementos siendo así el más fácil de implementa.

·         Ejemplo de burbuja
                          
public
static int[] OrdenarBurbuja(int[] n)
{
    int temp;
    int t = n.length;
    for (int i = 1; i < t; i++) 
    {
         for (int k = t- 1; k >= i; k--) 
         {
                if(n[k] < n[k-1])
                {
                    temp = n[k];
                    n[k] = n[k-1];
                    n[k-1]=  temp;
                }
         }
    }
    return n;
}

Codificación en C#:


Public int[] OrdenarBurbuja(int[]x)
{
        int t= x.Length, temp;
        for(int i=1 ; i< t ; i++)
        {
                for(int j = t-1 ; j >= i; j--)
                {
                        if(x[j] < x[j-1])
                        {
                                temp= x[j];
                                x[j]= x[j-1];
                                x[j-1]= temp;
                        }
                }
        }
}
 
 
 
2)     Quick Sort (Ordenamiento Rápido):

Es el algoritmo de ordenamiento más eficiente de todos, se basa en la técnica de "Divide y Vencerás", que permite en promedio, ordenar n elementos en un tiempo proporcional a n*log(n). Algoritmo Fundamental:

1.    Elegir un elemento de la lista de elementos a ordenar, al que llamaremos pivote.
2.    Resituar los demás elementos de la lista a cada lado del pivote, de manera que a un lado queden todos los menores que él, y al otro los mayores.
3.    La lista queda separada en dos sublistas, una formada por los elementos a la izquierda del pivote, y otra por los elementos a su derecha.
4.    Repetir este proceso de forma recursiva para cada sublista mientras éstas contengan más de un elemento. Una vez terminado este proceso todos los elementos estarán ordenados.


3)     Heap Sort (Ordenamiento por Montículos):

Es un algoritmo de ordenamiento no recursivo, no estable, consiste en almacenar todos los elementos del vector a ordenar en un montículo (heap), y luego extraer el nodo que queda como nodo raíz del montículo (cima) en sucesivas iteraciones obteniendo el conjunto ordenado. Basa su funcionamiento en una propiedad de los montículos, por la cual, la cima contiene siempre el menor elemento (o el mayor, según se haya definido el montículo) de todos los almacenados en él.

 


ejemplo de ordenamientos

·         Ordena los números.

#include<stdio.h> 

#include<conio.h> 
int x[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 (x[minimo] > x[j]) 
   { 
   minimo=j; 
   } 
   } 
   temp=x[minimo]; 
   x[minimo]=x; 
   x=temp; 
  } 
  for(i=0;i<n;i++) 
  { 
  printf("%d",x); 
  } 
getch(); 
}



sábado, 28 de junio de 2014

EVP 6


 Matrices

ü Desde el punto de vista del programa, una matriz (array ó vector) es una zona de almacenamiento contiguo, que contiene una serie de elementos del mismo tipo.

ü Desde el punto de vista lógico podemos considerarlas como un conjunto de elementos ordenados en fila. Así pues, en principio todas las matrices son de una dimensión, la dimensión principal, pero veremos que los elementos de esta fila pueden ser a su vez matrices (un proceso que puede ser recursivo), lo que nos permite hablar de la existencia de matrices multi-dimensionales.



EJEMPLO DE MATRICES

#include <iostream.h>
#include <stdlib.h>
#include <conio.h>
/*Este programa lee los datos de una matriz 3x4 y muestra en pantalla
la suma de los datos de cada fila */
 main(){
 int matriz[3][4];
 int arreglo[3];
 int i,j;

 //Ingreso de los datos
 for (i=0;i<3;i++){
 for (j=0;j<4;j++){
 cout << "Ingrese el numero entero correspondiente a la posicion ["<<i<<"] ["<<j<<"]: ";
 cin >> matriz[i][j];
 }
 //Muestra en pantalla la matriz ingresada
 cout << "\nLa matriz que usted ingreso es: \n\n";
 for (i=0;i<3;i++){
 for (j=0;j<4;j++){
 cout << matriz[i][j]<<" ";
 }
 cout << "\n";
 }

 //Suma los datos de cada fila
 for (i=0;i<3;i++){
 arreglo[i]=0;
 for (j=0;j<4;j++){
 arreglo[i]=arreglo[i]+matriz[i][j];
 }
 }
  //Muestra en pantalla los resultados
 for (i=0;i<3;i++){
 cout << "\nLa suma de los datos de la fila "<<i<<" es: " << arreglo[i];
 }
 getch();
}


Ejemplo 1
·         Una matriz 2x4 como poder desarrollarla.


#include <iostream.h>
#include <stdlib.h>
#include <conio.h>  
main()       
{
int matriz[2][4];
int arreglo[2];
int i,j;
for (i=0;i<2;i++)
{
 for (j=0;j<4;j++)
  {
  cout << "Ingrese el numero de la posicion ["<<i<<"] ["<<j<<"]: ";
  cin >> matriz[i][j];
  }
}
cout << "\nLa matriz que usted ingreso es: \n\n";
for (i=0;i<2;i++)
{
 for (j=0;j<4;j++)
  {
  cout << matriz[i][j]<<" ";
  }
 cout << "\n";
}
for (i=0;i<2;i++)
{
 arreglo[i]=0;
 for (j=0;j<4;j++)
  {
  arreglo[i]=arreglo[i]+matriz[i][j];
  }
}
for (i=0;i<3;i++)
{
 cout << "\nLa suma de los datos de la fila "<<i<<" es: " << arreglo[i];
}
getch();
}



sábado, 21 de junio de 2014

EVP 5

vectores

Un Vector es un tipo de dato compuesto que permite almacenar un gran número de valores del mismo tipo.una zona de almacenamiento continuo, que contiene una serie de elementos del mismo tipo, los elementos de la matriz. Desde el punto de vista lógico una matriz se puede ver como un conjunto de elementos ordenados en fila (o filas y columnas si tuviera dos dimensiones).

X es el nombre del conjunto, dentro de los [] va el número total de valores que posee el conjunto, en este ejemplo hay 4 y por eso se le pone [4], funciona igual para 1, 5 o n valores (x [1], x [5], x [n]), pero “n” debe tomar un valor, no puede quedar como variable.

<Clase> variable[n] = {v1, v2, v3,…, vn};

Para utilizar los valores almacenados en el vector se debe tomar cada elemento por separado llamándolo con el nombre del vector y su ubicación en el mismo.El primer valor del grupo lo representara con variable [0] y el ultimo es: variable [n-1].


Ejemplo : El producto escalar de dos vectores
 */
#include <stdio.h>
 
double producto_escalar(double v1[], double v2[], int d);
 
int main()
{ 
 const int largo = 3;
 double vector_1[] = {5,1,0};
 double vector_2[] = {-1,5,3};
 
 double resultado = producto_escalar(vector_1, vector_2, largo);
 
 // imprime el resultado
 printf("(%f, %f, %f) . (%f, %f, %f) = %f\n",
  vector_1[0], vector_1[1], vector_1[2],
  vector_2[0], vector_2[1], vector_2[2],
  resultado);
 return 0;
}
 
/* producto escalar entre dos vectores */
double producto_escalar(double v1[], double v2[], int d)
{
 double resultado = 0;
 int i;
 for (i=0; i < d; i++) {
  resultado += v1[i] * v2[i];
 }
 return resultado;
}



·                             El usuario tendrá dos opciones leer datos o grabar nuevos, dado esa decisión, pasara a ver la lista de personas para agregar un estado civil a la persona designada o leerlo según corresponda.


using namespace std;
#include <iostream>
#include <iomanip>
#include <conio.h>
int main()
{
string d[4]={"casada","soltera","viuda","divorciada"};
int opc,i,s;
do
{
 cout<<"seleccione opcion\n";
 cout<<setw(40)<<" 1-LEER"<<endl;
 cout<<setw(40)<<" 2-grabar"<<endl;
 cin>>opc;
 switch(opc)
 {
  case 1:
     Cout<<setw (30) <<"MENU DE NOMBRES"<<endl;
     cout<<setw(20)<<"(1)maria"<<endl;
     cout<<setw(20)<<"(2)anais "<<endl;
     cout<<setw(20)<<"(3)lucero"<<endl;
     cout<<setw(20)<<"(4)irma"<<endl;
     cin>>s;
     i=s-1;
     cout<<setw(30)<<d[i]<<endl;
     break;
  case 2:
     cout<<setw(30)<<"MENU DE NOMBRES"<<endl;
     cout<<setw(20)<<"(1)maria"<<endl;
     cout<<setw(20)<<"(2)anais"<<endl;
     cout<<setw(20)<<"(3)lucero"<<endl;
     cout<<setw(20)<<"(4)irma"<<endl;
     cin>>s;
     i=s-1;
     cin>>d[i];
     break;
  default:
     cout<<"error!";
  }
}
while (opc!=0);
getch();
}