Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: chaarlyyyy en 26 Mayo 2010, 05:19 am



Título: burbuja,insercion y seleccion
Publicado por: chaarlyyyy en 26 Mayo 2010, 05:19 am
hola amigos lo que sucede es que tngo los algoritmos de burbuja,seleccion e insercion en C pero los tngo por separado y lo que necesito es unirlos en un menu es decir me de la opcion de q tipo de algoritmo de ordenamiento usare xfa si pueden ayudarme


Título: Re: burbuja,insercion y seleccion
Publicado por: @synthesize en 26 Mayo 2010, 05:21 am
Osea, tienes varios métodos y quieres decidir como usuario el método a usar? Fácil, con varios If o un Switch (Con el Switch, recomiendo yo)

SI posteas el código, te ayudamos ^^


Título: Re: burbuja,insercion y seleccion
Publicado por: nicolas_cof en 26 Mayo 2010, 05:36 am
Te recomiendo leer este tema creado por do-while

http://foro.elhacker.net/programacion_cc/para_que_dejeis_de_preguntar_de_una_vez_por_los_menus-t276719.0.html

Salu10.


Título: Re: burbuja,insercion y seleccion
Publicado por: chaarlyyyy en 26 Mayo 2010, 18:31 pm
este es el codigo q tngo esta claro q me falta el menu principal y el traspaso de parametros para el arreglo a[] porfa ayudenme

#include<stdio.h>
#include<conio.h>
void burbuja(a[],int n)
{
int i,j,aux;
for(i=1;i<n;i++)
 for(j=o;j<n-1;j++)
  {
  if(a[j]>a[j+1])
   {
   aux=a[j];
   a[j]=a[j+1];
   a[j+1]=aux;
   }
  }
}

void insercion((a[],int n)
{
int i,j,aux;
for(i=1;i<n;i++)
 {
 j=i;
 aux=a;
 while(j>0 && aux < a[j-1])
  {
  a[j]=a[j-1];
  j--;
  }
  a[j]=aux;
 }
}

void seleccion(a[],int n)
{
int i,j,indicemenor,aux;
for(i=0;i<n-1;i++)
 {
 indicemenor=i;
 for(j=i+1;j<n;j++)
  if(a[j]<a[indicemenor])
  indicemenor=j;
   if(i !=indicemenor)
   {
    aux=a;
    a=a[indicemenor];
    a[indicemenor]=aux;
   }
  }
}


Título: Re: burbuja,insercion y seleccion
Publicado por: nicolas_cof en 27 Mayo 2010, 02:57 am
Aca te dejo un menu muy rudimentario ;D, pero te va a servir para darte una idea :P

Acordate de cuando hagas un post con codigo fuente utilizar las etiquetas GeSHI [code=c][/code] o la de codigo sola [code][/code]

La libreria conio.h no hacia falta incluirla ya que no haces uso. Ademas tampoco es recomendable su uso ya que no es estandar.

Código:
#include <stdio.h>

void mostrar( int a[], int n );
int* copia( int a[], int cp[], int n );
int* burbuja( int a[], int n );
int* insercion( int a[], int n );
int* seleccion( int a[], int n );

int
main( void )
{
int opcion, n = 8;
int a[] = { 15, 56, 90, 0, 1, 6, 78, 65 };
int cp[n];

do
{
printf( "1. Burbuja\n"
"2. Insercion\n"
"3. Seleccion\n"
"4. Salir\n"
"> " );
fflush( stdout );
scanf( "%d", &opcion );

switch ( opcion )
{
case 1:
printf( "Original: " );
mostrar( a, n );
printf( "Ordenada: " );
mostrar( burbuja( copia( a, cp, n ), n ), n );
break;
case 2:
printf( "Original: " );
mostrar( a, n );
printf( "Ordenada: " );
mostrar( insercion( copia( a, cp, n ), n ), n );
break;
case 3:
printf( "Original: " );
mostrar( a, n );
printf( "Ordenada: " );
mostrar( seleccion( copia( a, cp, n ), n ), n );
break;
case 4:
printf( "Saliendo...\n" );
break;
default:
printf( "Opcion incorrecta\n" );
break;
}
}
while ( opcion != 4 );

return 0;
}

void
mostrar( int a[], int n )
{
int i;

for ( i = 0; i < n; ++i )
printf( "%d ", a[i] );
putchar( '\n' );
}

int*
copia( int a[], int cp[], int n )
{
int i;

for ( i = 0; i < n; ++i )
cp[i] = a[i];

return cp;
}

int*
burbuja( int a[], int n )
{
int i, j, aux;

for ( i = 1; i < n; i++ )
for ( j = 0; j < n - 1; j++ )
if ( a[j] > a[j + 1] )
{
aux = a[j];
a[j] = a[j + 1];
a[j + 1] = aux;
}

return a;
}

int*
insercion( int a[], int n )
{
int i, j, aux;

for ( i = 1; i < n; i++ )
{
j = i;
aux = a[i];
while ( j > 0 && aux < a[j-1] )
{
a[j] = a[j-1];
j--;
}
a[j] = aux;
}

return a;
}

int*
seleccion( int a[], int n )
{
int i, j, indicemenor, aux;

for ( i = 0; i < n - 1; i++ )
{
indicemenor = i;
for ( j = i + 1; j < n; j++ )
if ( a[j] < a[indicemenor] )
indicemenor = j;
if ( i != indicemenor )
{
aux = a[i];
a[i] = a[indicemenor];
a[indicemenor] = aux;
}
}

return a;
}

Salu10.