Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - Norochii

#1
Java / Problema con Threads en Java
18 Septiembre 2013, 08:51 AM
Que tal buenos dias, quisiera ver si me podrian ayudar con mi programa, lo que pasa es que lo estoy haciendo con Threads pero cuando entra al metodo run no ejecuta el metodo de ordenamiento. El programa tiene que hacer el ordenamiento Burbuja de 25000 numero generados aleatoriamente por medio de Threads, hice que funcionara sin Threads pero cuando lo hago por medio de Hilos no se ejecuta la funcion de ordenamientos y la verdad no se por que (cabe mencionar que sin hilos funciona a la perfeccion), pero con hilos me sale el siguiente error. Espero me puedan ayudar.

Saludos.

Exception in thread "Thread-0" java.lang.NullPointerException
   at ordenamientos.Bubble.bubble_sort(Bubble.java:52)
   at ordenamientos.Bubble.run(Bubble.java:38)
   at java.lang.Thread.run(Thread.java:724)


Este es el codigo de mi programa.


package ordenamientos;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class Bubble implements Runnable
{
   Thread t;
   public int [] matrix;
   
   final void setMatriz(int matriz[])
   {
      matrix = matriz;
   }
   
   int[] getMatriz()
   {
      return matrix;
   }
   
   public Bubble()
   {
   }
   
   public Bubble(int matriz[])
   {
      matrix = matriz;
      
   }
   
   public void run()
   {
      System.out.println("Aqui deberia estar corriendo el ordenamiento burbuja :/");
      bubble_sort(getMatriz());
      
   }
   
   public void bubble_sort(int matriz[])
   {
      long comienza = System.currentTimeMillis();
      int buffer;
      int i,j;
      
      for(i = 0; i < 25000; i++)
      {
         for(j = 0; j < i; j++)
         {
            if(matriz < matriz [j])
            {
               buffer = matriz[j];
               matriz[j] = matriz;
               matriz = buffer;
            }
         }
         
      }
      
      for(int x = 0; x < matriz.length; x++)
      {
         System.out.println("Numeros: " + matriz
  • );
          }
          long termina = System.currentTimeMillis();
          long tiempoTranscurrido = termina - comienza;
          System.out.println("\n\nTiempo transcurrido con el metodo de ordenamiento Burbuja: " + tiempoTranscurrido + " milisegundos");
          
              try
              {
                 File TextFile = new File("/home/norochii/workspace/Ordenamientos/Tiempos.odt");
                 FileWriter TextOut = new FileWriter(TextFile, true);
                 TextOut.write ("Ordenamiento Burbuja: "+tiempoTranscurrido + " Milisegundos"+"\r\n");
                 TextOut.close();
              }
              catch(IOException e)
              {   
                   System.out.println("Error!!");       
              }
       }

    }




    package ordenamientos;
    import java.io.File;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.Scanner;
    import java.util.Random;
    import ordenamientos.Bubble;

    public class Principal
    {   
       public static void main(String[] args)
       {
          int [] arreglo;
          arreglo = new int [25000];
          
          Shell shell = new Shell();
          Bubble burbuja = new Bubble();
          Insercion insercion = new Insercion();
          
          @SuppressWarnings("resource")
          Scanner entrada = new Scanner(System.in);
          Random numero_aleatorio = new Random();
          
          if(burbuja.matrix == shell.matrix && burbuja.matrix == insercion.matrix )
          {
             if(shell.matrix == burbuja.matrix && shell.matrix == insercion.matrix)
             {
                if(insercion.matrix == burbuja.matrix && insercion.matrix == shell.matrix)
                {
                   System.out.println("Datos: " );
                   for(int x = 0; x<arreglo.length; x++)
                   {
                      int valor;
                      valor = numero_aleatorio.nextInt(250000);
                      arreglo
  • = valor;
                      System.out.println(valor);
                      
                      try
                         {
                             File TextFile = new File("/home/norochii/workspace/Ordenamientos/Numeros sin Ordenar.odt");
                             FileWriter TextOut = new FileWriter(TextFile, true);
                             TextOut.write (valor +"\r\n");
                             TextOut.close();
                         }
                         catch(IOException e)
                         {
                               System.out.println("Error!!");   
                         }
                      
                      
                   }
                   
                   System.out.println("\n\nGeneracion de numeros aleatorios lista.");
                   System.out.print("Presiona cualquier tecla para continuar: ");
                   entrada.nextLine();
                   System.out.println("\n\n\n\n");
                   
                   
                   System.out.println("Ordenamiento Shell: ");
                   System.out.println("\n\n\n\n\n\n");
                   shell.shell_sort(arreglo);
                   try {
                      Thread.sleep(4000);
                   } catch (InterruptedException e) {
                      // TODO Auto-generated catch block
                      e.printStackTrace();
                   }
                   
                   
                   System.out.println("\n\n\n\n");
                   System.out.println("Ordenamiento Burbuja: ");
                   System.out.println("\n\n\n\n\n\n");
                   //burbuja.bubble_sort(arreglo);
                   
                   Thread hilo = new Thread(burbuja);
                   hilo.start();
                   
                   //new Thread(burbuja).start();
                   try {
                      Thread.sleep(4000);
                   } catch (InterruptedException e) {
                      // TODO Auto-generated catch block
                      e.printStackTrace();
                   }
                   System.out.println("Ordenamiento Insercion: ");
                   insercion.insercion_sort(arreglo);
          
                
                   System.out.println("\n\n\n\n\n\n");
                   
                   
                   
                }
             }
          }
       }

    }


#2
Hola! necesito hacer un socket alguien que me pueda recomendar algun material para saber como hacer, un socket desde cero  sinceramente no se nada de sockets, pero si se de c y c++y la verdad si me gustaria aprender a hacer uno... porfas se los agradeceria mucho :3
#3
Programación C/C++ / Ayuda!!! :( con c++
19 Octubre 2011, 15:29 PM
hello.. tengo una duda.. estoy haciendo un programa en c++ y necesito saber como hacerle para que cuando el usuario introduzca un caracter en la variable entera entre de nuevo al ciclo do-while por que lo que hace el programa cuando introducen un caracter es k despliega la tabla del cero y no se devuelve al ciclo do-while el codigo es el siguiente :D les agradeceria su ayuda :D

#include "stdafx.h"
#include <iostream>
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <Windows.h>


using namespace std;

void TablasDeMultiplicar()
{
   int Tabla = 0;
   do
   {
   cout<<"\n\n  Ingresa el numero de la Tabla de Multiplicar que quieras Aprender: \n\n";
   cout<<"  Solo Podras Ver las Tablas del 0 al 12\n\n";
   cout<<"  Tabla del : ";
   cin>>Tabla;
   if(Tabla<=12 && Tabla >=0)
   {
   
   for(int i = 0; i<=12; i++)
   {
      cout<<"\n"<<Tabla<<" X "<<i<<" = "<<Tabla*i<<endl;
   }
   cout<<"\n\n\n"<<endl;
   }
   else
   {
      cout<<"\n\nNumero no valido"<<endl;
   }
   cout<<"\n\n\n";
   system("PAUSE");
   system("cls");
   }while(Tabla>12 || Tabla <0 );
}
int main()
{
   char a;
   system("color 9B");

   TablasDeMultiplicar();
   
   system("PAUSE");
   return 0;
}
#4
hello.. tengo una duda.. estoy haciendo un programa en c++ y necesito saber como hacerle para que cuando el usuario introduzca un caracter en la variable entera entre de nuevo al ciclo do-while por que lo que hace el programa cuando introducen un caracter es k despliega la tabla del cero y no se devuelve al ciclo do-whileel codigo es el siguiente :D les agradeceria su ayuda :D

#include "stdafx.h"
#include <iostream>
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <Windows.h>


using namespace std;

void TablasDeMultiplicar()
{
   int Tabla = 0;
   do
   {
   cout<<"\n\n  Ingresa el numero de la Tabla de Multiplicar que quieras Aprender: \n\n";
   cout<<"  Solo Podras Ver las Tablas del 0 al 12\n\n";
   cout<<"  Tabla del : ";
   cin>>Tabla;
   if(Tabla<=12 && Tabla >=0)
   {
   
   for(int i = 0; i<=12; i++)
   {
      cout<<"\n"<<Tabla<<" X "<<i<<" = "<<Tabla*i<<endl;
   }
   cout<<"\n\n\n"<<endl;
   }
   else
   {
      cout<<"\n\nNumero no valido"<<endl;
   }
   cout<<"\n\n\n";
   system("PAUSE");
   system("cls");
   }while(Tabla>12 || Tabla <0 );
}
int main()
{
   char a;
   system("color 9B");

   TablasDeMultiplicar();
   
   system("PAUSE");
   return 0;
}
#5
Programación C/C++ / Pila en C++
25 Mayo 2011, 19:01 PM
Código (cpp) [Seleccionar]

//Pila.cpp
//By Norochii
//Estructura de Datos
#include "StdAfx.h"
#include "Pila.h"
#include <iostream>
using namespace std;

Pila::Pila(void) //Constructor. se inicializa el tope o cima de la pila en -1
{
top = -1;
}


Pila::~Pila(void) //Destructor. Destruye los datos de la pila
{
cout<<"Destruyendo datos"<<endl;
}

void Pila::EmptyStack() //Verifica si la pila esta vacia,
{ //viendo si el tope esta en -1
top = -1;
}

void Pila::AddStack(int elemento) //Verifica si la Pila esta llena
{
if(FullStack()) //Si la pila esta llena emite el mensaje
{ //Desbordamiento pila
cout<<"Desbordamiento pila :";
}
else //Sino el apuntador o subindice se incrementa con cima++
{

top++; //y se almacena un elemento en el arreglo A[cima] automaticamente
A[top] = elemento; //ya que se iguala. El elemento que entro se guarda en el arreglo A[]

}
}


void Pila::Push(int elemento) //Esta funcion coincide con la funcion AddStack()
{
AddStack(elemento);
}


int Pila::Pop() //Esta funcion extrae los elementos de la pila
{
int Aux; //Se crea una variable auxiliar o temporal para poder guardar
if(top == -1) //dentro de la variable Aux el ultimo elemento en entrar
{
cout<<"Se intenta sacar un elemento de una Pila vacia"<<endl;
}
else
{
Aux = A[top]; //Aqui se guarda el elemento del tope osea el ultimo elemento en entrar
top--; //se decrementa el tope y apunta al siguiente elemento y asi sucecivamente hasta que quede en -1
}
return Aux; //se retorna el ultimo elemento del arreglo A[] almacenado en la variable Aux
}

int Pila::FirstStack() //comprueba que la pila no este vacia
{
if(top == -1) //Si esta vacia emite un mensaje
{
cout<<"Se intenta sacar un elemento de una Pila vacia"<<endl;
}
else //sino se dara el elemento del arreglo A[] almacenado en la posicion apuntada por la cima
{
return A[top];
}
}


void Pila::ClearStack() //Se encarga de eliminar el ultimo elemento que entro en la pila
{
if(top == -1) //Primero comprueba que la pila no este vacia
{ //Si esta vacia emite un mensaje
cout<<"Se intenta sacar un elemento de una Pila vacia"<<endl;
}
else //Sino se decrementa el tope en 1
{
top--;
}
}

bool Pila::FullStack()
{
return top == MaxTamPila-1; //En este caso la pila estara llena cuando el tope apunte al valor MaxTamPila-1
}

void Pila::CuentaPila() //Esta funcion es para saber cuantos elementos hay en la pila
{
if(top == -1)
{
cout<<"Se han sacado los elementos anteriormente o aun no introduce ninguno"<<endl;
}
else
cout<<"Elementos existentes en la pila : "<<top + 1<<" Elementos"<<endl;
}

void Pila::Elementos() //Una funcion que lo unico que hace es mostrar un mensaje de cuantos elementos se han introducido hasta ese momento
{

cout<<"Elemento "<<top +2 <<endl;
}
#6
Código (cpp) [Seleccionar]

// Ordenamientos.cpp
//Tipos de ordenamientos con enteros y caracteres utilizando memoria dinamica
//By Norochii
//Estructura de Datos

#include "stdafx.h"
#include <iostream>
#include <string>
#include "time.h"

using namespace std;

class ordenamientos
{
private:
int j,i,temp,x;
int *listaEnteros;
char *listaCaracteres;
public:
ordenamientos();
~ordenamientos();
void ordenamientoBurbuja();
void ordenamientoInsercion();
void ordenamientoShell();

};

ordenamientos::ordenamientos()
{
i=0;
j=0;
temp=0;
x=0;
}

ordenamientos::~ordenamientos()
{}

void ordenamientos::ordenamientoBurbuja()
{

int opc;
cout<<"                                 Metodo Burbuja "<<'\n'<<endl;
cout<<"                               Que deseas Ordenar"<<endl;
cout<<"                                   1.- Numeros"<<endl;
cout<<"                                   2.- Letras"<<endl;
cout<<"                                    Opcion: ";
cin>>opc;
system("cls");
switch(opc)
{

case 1:
cout<<"                     Introduzca el numero de elementos a insertar "<<endl;

cout<<"                               Numeros de Elementos: ";

cin>>x;

listaEnteros= new(nothrow) int[x];

system("cls");

cout<<"Introduzca los elementos de la lista"<<endl;


for(i=0; i<x; i++)
{

cin>>listaEnteros[i];
}

for(i=0;i<x-1;i++)
{

for(j=i+1;j<x;j++)
{

if(listaEnteros[i]>listaEnteros[j])
{
temp=listaEnteros[i];

listaEnteros[i]=listaEnteros[j];

listaEnteros[j]=temp;
}
}

}


system("cls");

cout<<"Elementos Ordenados :"<<endl;

for(i=0; i<x; i++)
{

cout<<endl;

cout<<"Elemento "<< i+1<<": " <<listaEnteros[i]<<endl;;
}

delete[] listaEnteros;

break;
case 2:

cout<<"            Introduzca el numero de elementos a insertar "<<endl;

cout<<"                    Numeros de Elementos: ";

cin>>x;

listaCaracteres= new(nothrow) char[x];

system("cls");

cout<<"Introduzca los elementos de la lista"<<endl;

for(i=0; i<x; i++)
{

cin>>listaCaracteres[i];
}

for(i=0;i<x-1;i++)
{

for(j=i+1;j<x;j++)
{
if(listaCaracteres[i]>listaCaracteres[j])
{
temp=listaCaracteres[i];

listaCaracteres[i]=listaCaracteres[j];

listaCaracteres[j]=temp;
}
}

}


system("cls");

cout<<"Elementos Ordenados :"<<endl;

for(i=0; i<x; i++)
{

cout<<endl;

cout<<"Elemento "<< i+1<<": " <<listaCaracteres[i]<<endl;
}

delete[] listaCaracteres;

break;

}
}

void ordenamientos::ordenamientoInsercion()
{
int opc;

cout<<"                              Metodo Por Insercion "<<'\n'<<endl;

cout<<"                            Que deseas Ordenar"<<endl;

cout<<"                               1.- Numeros"<<endl;

cout<<"                               2.- Letras"<<endl;

cout<<"                                Opcion: ";

cin>>opc;

system("cls");

switch(opc)
{

case 1:

cout<<"            Introduzca el numero de elementos a insertar "<<endl;

cout<<"                    Numeros de Elementos: ";

cin>>x;

listaEnteros= new(nothrow) int[x];

system("cls");

cout<<"Introduzca los elementos de la lista"<<endl;

for(i=0; i<x; i++)
{

cin>>listaEnteros[i];
}

for (i = 1; i < x; i++)
{

temp = listaEnteros[i];

j = i - 1;

while ( (listaEnteros[j] > temp) && (j >= 0) )
{

listaEnteros[j + 1] = listaEnteros[j];

j--;

listaEnteros[j + 1] = temp;
}


}
system("cls");

cout<<"Elementos Ordenados :"<<endl;

for(j=0; j<x; j++)
{

cout<<endl;

cout<<"Elemento "<< j+1<<": " <<listaEnteros[j]<<endl;;
}

delete[] listaEnteros;

break;


case 2:

cout<<"            Introduzca el numero de elementos a insertar "<<endl;

cout<<"                    Numeros de Elementos: ";

cin>>x;

listaCaracteres= new(nothrow) char[x];

system("cls");

cout<<"Introduzca los elementos de la lista"<<endl;

for(i=0; i<x; i++)
{

cin>>listaCaracteres[i];
}

for(i=0;i<x-1;i++)
{

for(j=i+1;j<x;j++)
{

if(listaCaracteres[i]>listaCaracteres[j])
{

temp=listaCaracteres[i];

listaCaracteres[i]=listaCaracteres[j];

listaCaracteres[j]=temp;

}

}


}



system("cls");

cout<<"Elementos Ordenados :"<<endl;

for(j=0; j<x; j++)
{

cout<<endl;

cout<<"Elemento "<< j+1<<": " <<listaCaracteres[j]<<endl;;
}

delete[] listaCaracteres;
break;

}
}

void ordenamientos::ordenamientoShell()
{
int inter,x,n=0,i=0,j=0,k=0,temp;
int opc;


cout<<"                              Metodo de Shell "<<'\n'<<endl;

cout<<"                            Que deseas Ordenar"<<endl;

cout<<"                               1.- Numeros"<<endl;

cout<<"                               2.- Letras"<<endl;

cout<<"                                Opcion: ";

cin>>opc;

system("cls");

switch(opc)
{
case 1:

cout<<"            Introduzca el numero de elementos a insertar "<<endl;

cout<<"                    Numeros de Elementos: ";

cin>>x;

inter = x/2;

listaEnteros= new(nothrow) int[x];

system("cls");

cout<<"Introduzca los elementos de la lista"<<endl;

for(i=0; i<x; i++)
{

cin>>listaEnteros[i];
}


while(inter>0)
{

for(i=inter;i<x;i++)
{
 
n++;

j=i-inter;

while(j>=0)
{
 
k=j+inter;
 
if(listaEnteros[j]<=listaEnteros[k])
{
j--;
}
   
else
{
   
temp=listaEnteros[j];
   
listaEnteros[j]=listaEnteros[k];
   
listaEnteros[k]=temp;

j=j-inter;
}

}

}inter = inter/2;
}


system("cls");

cout<<"Elementos Ordenados :"<<endl;

for(j=0; j<x; j++)
{

cout<<endl;

cout<<"Elemento "<< j+1<<": " <<listaEnteros[j]<<endl;;

}

delete[] listaEnteros;

break;

case 2:

cout<<"            Introduzca el numero de elementos a insertar "<<endl;

cout<<"                    Numeros de Elementos: ";

cin>>x;

inter = x/2;

listaCaracteres= new(nothrow) char[x];

system("cls");

cout<<"Introduzca los elementos de la lista"<<endl;

for(i=0; i<x; i++)
{

cin>>listaCaracteres[i];
}

while(inter>0)
{

for(i=inter;i<x;i++)
{
 
n++;

j=i-inter;

while(j>=0)
{
 
k=j+inter;
 
if(listaCaracteres[j]<=listaCaracteres[k])
{
j--;
}
   
else
{
   
temp=listaCaracteres[j];
   
listaCaracteres[j]=listaCaracteres[k];
   
listaCaracteres[k]=temp;

j=j-inter;
}

}

}inter = inter/2;
}


system("cls");

cout<<"Elementos Ordenados :"<<endl;

for(j=0; j<x; j++)
{

cout<<endl;

cout<<"Elemento "<< j+1<<": " <<listaCaracteres[j]<<endl;;

}

delete[] listaCaracteres;

break;

}
}

void  main()
{
int inicio,fin,tiempo,opcion;
inicio=clock();
ordenamientos O;
cout<<" Selecciones el Metodo de Ordenamiento: "<<endl;
cout<<'\n'<<"                                  1.- Metodo Burbuja "<<endl;
cout<<"                                2.- Metodo de Insercion "<<endl;
cout<<"                                 3.- Metodo de Shell "<<endl;
cout<<"                                     Metodo Numero: ";
cin>>opcion;
system("cls");
switch(opcion)
{
case 1:
O.ordenamientoBurbuja();
break;
case 2:
O.ordenamientoInsercion();
break;
case 3:
O.ordenamientoShell();
break;

        fin = clock();
tiempo = fin-inicio;
cout<<'\n'<<"Tiempo de Ejecucion: "<<tiempo<<" Milisegundos"<<endl;
system("PAUSE");

}
}
Saludos Espero dejen sus comentarios :D

#7
Código (cpp) [Seleccionar]

// Ordenamientos.cpp
//Tipos de ordenamientos con enteros y caracteres utilizando memoria dinamica
//By Norochii
//Estructura de Datos

#include "stdafx.h"
#include <iostream>
#include <string>
#include "time.h"
#include <math.h>
#define NUMELTS 20

using namespace std;

class ordenamientos
{
private:
int j,i,temp,x;
int *listaEnteros;
char *listaCaracteres;
public:
ordenamientos();
~ordenamientos();
void ordenamientoBurbuja();
void ordenamientoInsercion();
void ordenamientoShell();


};

ordenamientos::ordenamientos()
{
i=0;
j=0;
temp=0;
x=0;
}

ordenamientos::~ordenamientos()
{}

void ordenamientos::ordenamientoBurbuja()
{
int opc;
cout<<"                                 Metodo Burbuja "<<'\n'<<endl;
cout<<"                               Que deseas Ordenar"<<endl;
cout<<"                                   1.- Numeros"<<endl;
cout<<"                                   2.- Letras"<<endl;
cout<<"                                    Opcion: ";
cin>>opc;
system("cls");
switch(opc)
{

case 1:
cout<<"Introduzca el numero de elementos a insertar "<<endl;
cout<<"Numeros de Elementos: ";
cin>>x;
listaEnteros= new(nothrow) int[x];
system("cls");
cout<<"Introduzca los elementos de la lista"<<endl;
for(i=0; i<x; i++)
{
cin>>listaEnteros[i];
}
for(i=0;i<x-1;i++)
{
for(j=i+1;j<x;j++)
{
if(listaEnteros[i]>listaEnteros[j])
{
temp=listaEnteros[i];
listaEnteros[i]=listaEnteros[j];
listaEnteros[j]=temp;
}
}

}
system("cls");
cout<<"Elementos Ordenados :"<<endl;
for(i=0; i<x; i++)
{
cout<<endl;
cout<<"Elemento "<< i+1<<": " <<listaEnteros[i]<<endl;
}
delete[] listaEnteros;
break;
case 2:

cout<<"Introduzca el numero de elementos a insertar "<<endl;
cout<<" Numeros de Elementos: ";
cin>>x;
listaCaracteres= new(nothrow) char[x];
system("cls");
cout<<"Introduzca los elementos de la lista"<<endl;
for(i=0; i<x; i++)
{
cin>>listaCaracteres[i];
}
for(i=0;i<x-1;i++)
{
for(j=i+1;j<x;j++)
{
if(listaCaracteres[i]>listaCaracteres[j])
{
temp=listaCaracteres[i];
listaCaracteres[i]=listaCaracteres[j];
listaCaracteres[j]=temp;
}
}

}
system("cls");
cout<<"Elementos Ordenados :"<<endl;
for(i=0; i<x; i++)
{
cout<<endl;
cout<<"Elemento "<< i+1<<": " <<listaCaracteres[i]<<endl;
}
delete[] listaCaracteres;
break;

}
}

void ordenamientos::ordenamientoInsercion()
{
int opc;
cout<<" Metodo Por Insercion "<<'\n'<<endl;
cout<<" Que deseas Ordenar"<<endl;
cout<<" 1.- Numeros"<<endl;
cout<<" 2.- Letras"<<endl;
cout<<"                                Opcion: ";
cin>>opc;
system("cls");
switch(opc)
{
case 1:
           cout<<" Introduzca el numero de elementos a insertar "<<endl;
           cout<<"Numeros de Elementos: ";
           cin>>x;
listaEnteros= new(nothrow) int[x];
system("cls");
cout<<"Introduzca los elementos de la lista"<<endl;
for(i=0; i<x; i++)
{
cin>>listaEnteros[i];
}
for (i = 1; i < x; i++)
{
temp = listaEnteros[i];
j = i - 1;
while ( (listaEnteros[j] > temp) && (j >= 0) )
{
listaEnteros[j + 1] = listaEnteros[j];
j--
listaEnteros[j + 1] = temp;
}
}
system("cls");
cout<<"Elementos Ordenados :"<<endl;
for(j=0; j<x; j++)
{
cout<<endl;
cout<<"Elemento "<< j+1<<": " <<listaEnteros[j]<<endl;;
}
delete[] listaEnteros;
break;
case 2:

cout<<"Introduzca el numero de elementos a insertar "<<endl;
cout<<"  Numeros de Elementos: ";
cin>>x;
listaCaracteres= new(nothrow) char[x];
system("cls");
cout<<"Introduzca los elementos de la lista"<<endl
for(i=0; i<x; i++)
{
cin>>listaCaracteres[i];
}

for(i=0;i<x-1;i++)
{
for(j=i+1;j<x;j++)
{
if(listaCaracteres[i]>listaCaracteres[j])
{
temp=listaCaracteres[i];
listaCaracteres[i]=listaCaracteres[j];
listaCaracteres[j]=temp;
}
}

}

system("cls");
cout<<"Elementos Ordenados :"<<endl;
for(j=0; j<x; j++)
{
cout<<endl;
cout<<"Elemento "<< j+1<<": " <<listaCaracteres[j]<<endl;;
}

delete[] listaCaracteres;
break;

}
}


void ordenamientos::ordenamientoShell()
{
int inter,x,n=0,i=0,j=0,k=0,temp;
int opc;
cout<<"Metodo de Shell "<<'\n'<<endl;
cout<<"                            Que deseas Ordenar"<<endl;
cout<<"                               1.- Numeros"<<endl;
cout<<"                               2.- Letras"<<endl;
cout<<"                                Opcion: ";
cin>>opc;
system("cls");
switch(opc)
{
case 1:
cout<<"Introduzca el numero de elementos a insertar "<<endl;
cout<<"                    Numeros de Elementos: ";
       cin>>x;
inter = x/2;
listaEnteros= new(nothrow) int[x];
system("cls");
cout<<"Introduzca los elementos de la lista"<<endl;
for(i=0; i<x; i++)
{
cin>>listaEnteros[i];
}
           while(inter>0)
{

for(i=inter;i<x;i++)
{
 
n++;

j=i-inter;

while(j>=0)
{
 
k=j+inter;
 
if(listaEnteros[j]<=listaEnteros[k])
{
j--;
}
 
else
{
   
temp=listaEnteros[j];
   
listaEnteros[j]=listaEnteros[k];
   
listaEnteros[k]=temp;

j=j-inter;
}

}

}inter = inter/2;
}


system("cls");

cout<<"Elementos Ordenados :"<<endl;

for(j=0; j<x; j++)
{

cout<<endl;

cout<<"Elemento "<< j+1<<": " <<listaEnteros[j]<<endl;;

}

delete[] listaEnteros;

break;

case 2:

cout<<"            Introduzca el numero de elementos a insertar "<<endl;

cout<<"                    Numeros de Elementos: ";

cin>>x;

inter = x/2;

listaCaracteres= new(nothrow) char[x];

system("cls");

cout<<"Introduzca los elementos de la lista"<<endl;

for(i=0; i<x; i++)
{

cin>>listaCaracteres[i];
}

while(inter>0)
{

for(i=inter;i<x;i++)
{
 
n++;

j=i-inter;

while(j>=0)
{
 
k=j+inter;
 
if(listaCaracteres[j]<=listaCaracteres[k])
{
j--;
}
 
else
{
   
temp=listaCaracteres[j];
   
listaCaracteres[j]=listaCaracteres[k];
   
listaCaracteres[k]=temp;

j=j-inter;
}

}

}inter = inter/2;
}


system("cls");

cout<<"Elementos Ordenados :"<<endl;

for(j=0; j<x; j++)
{

cout<<endl;

cout<<"Elemento "<< j+1<<": " <<listaCaracteres[j]<<endl;;

}

delete[] listaCaracteres;

break;

}
}


void  main()
{
int inicio,fin,tiempo,opcion;
inicio=clock();
ordenamientos O;
cout<<" Selecciones el Metodo de Ordenamiento: "<<endl;
cout<<'\n'<<"                                  1.- Metodo Burbuja "<<endl;
cout<<"                                2.- Metodo de Insercion "<<endl;
cout<<"                                 3.- Metodo de Shell "<<endl;
cout<<"                                     Metodo Numero: ";
cin>>opcion;
system("cls");
switch(opcion)
{
case 1:
O.ordenamientoBurbuja();
break;
case 2:
O.ordenamientoInsercion();
break;
case 3:
O.ordenamientoShell();
break;

        fin = clock();
tiempo = fin-inicio;
cout<<'\n'<<"Tiempo de Ejecucion: "<<tiempo<<" Milisegundos"<<endl;
system("PAUSE");

}
}