ayuda con un algoritmo simple

Dudas e ideas sobre los distintos e infinitos (:-)) algoritmos existentes.
Responder
Mensaje
Autor
soso_2
Mensajes: 14
Registrado: 20/09/2007 5:01 pm
Ubicación: bbb

ayuda con un algoritmo simple

#1 Mensaje por soso_2 » 14/11/2007 5:14 pm

necesito un algoritmo para c++ que me acomode 3 numeros que introdusca en forma ascendente o desendente y no tengo idea de como hacerlo

Avatar de Usuario
digies
Mensajes: 1001
Registrado: 18/11/2005 12:00 am
Ubicación: Blumenau (Br)

#2 Mensaje por digies » 14/11/2007 6:36 pm

Orden ascendente de números con el método de la burbuja (C estándar):

Código: Seleccionar todo

#include <stdio.h>
#include <stdlib.h>

int tam_array(void);
void mostrar_array(int u);
void burbuja(int a[], int w);

int main(void)
{
    mostrar_array(tam_array());
    puts("\n\n");
    system("PAUSE");
    return EXIT_SUCCESS;
}

int tam_array()
{
    int t;
    printf("TAMA\xA5O DEL ARRAY: ");
    scanf("%d", &t);
    return t;
}

void mostrar_array(int u)
{
    int i, array[u], n;
    puts("\nINGRESE LOS ELEMENTOS DEL ARRAY:");
    for(i=0; i<u; i++)
    {
        printf(" [%d]: ", i);
        scanf("%d", &n);
        array[i]=n;
    }
    printf("\nARRAY: ");
    for(i=0; i<u; i++)
        printf("%d ", array[i]);
    puts("\n");
    burbuja(array, u);
    return;
}

void burbuja(int a[], int w)
{
    int i, t, j, k, aux;
    printf("ORDENACION POR BURBUJA: ");
    t=w; i=w-1;
    while(i>0)
    {
        k=0;
        for(j=0; j<i; j++)
            if(a[j+1] < a[j])
            {
                aux=a[j];
                a[j]=a[j+1];
                a[j+1]=aux;
                k=j;
            }
        i=k;
    }
    for(i=0; i<t; i++)
        printf("%d ", a[i]);
    return;
}
Un saludo

guen
Mensajes: 20
Registrado: 12/06/2007 9:19 pm

#3 Mensaje por guen » 17/08/2008 2:12 pm

ascendente o descendente lo puedes hacer con el metodo de burbuja lo unico es cambiar el menor a mayor o mayor a menor

Código: Seleccionar todo

while(i>0)
    {
        k=0;
        for(j=0; j<i; j++)
            if(a[j+1] < a[j]) [color=blue]//aqui voy a cambiarlo en el siguiente[/color]
            {
                aux=a[j];
                a[j]=a[j+1];
                a[j+1]=aux;
                k=j;
            }
        i=k;
    }
este es el otro

Código: Seleccionar todo

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

Juniocarl
Mensajes: 7
Registrado: 16/10/2008 5:31 pm
Ubicación: Estudiante
Contactar:

#4 Mensaje por Juniocarl » 17/10/2008 5:30 pm

Metodo de la burbuja???... que es eso? :roll:

O mejor dicho.. en que consiste?
By Juniocarl

Avatar de Usuario
rir3760
Mensajes: 7553
Registrado: 01/10/2004 11:00 pm
Ubicación: Mexico

#5 Mensaje por rir3760 » 17/10/2008 6:59 pm

BubbleSort es el algoritmo utilizado para ordenar el array y consiste, de forma muy reducida, en comparar parejas de elementos intercambiando estos si no estan ordenados.

Para una mejor y mas completa descripcion de ese y otros algoritmos de ordenacion lo mejor es revisar sitios como Wikipedia.

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

Juniocarl
Mensajes: 7
Registrado: 16/10/2008 5:31 pm
Ubicación: Estudiante
Contactar:

#6 Mensaje por Juniocarl » 17/10/2008 7:06 pm

Gracias ^^
By Juniocarl

Hanna12345
Mensajes: 3
Registrado: 20/02/2017 6:28 pm

Re: ayuda con un algoritmo simple

#7 Mensaje por Hanna12345 » 20/02/2017 10:36 pm

Para una mejor y mas completa descripcion de ese y otros algoritmos de ordenacion lo mejor es revisar sitios como Wikipedia.
Última edición por mollok el 26/04/2018 3:46 am, editado 1 vez en total.
Razón: Quitado enlace publicitario.

Conrad06
Mensajes: 1
Registrado: 28/11/2017 3:24 pm

Re:

#8 Mensaje por Conrad06 » 28/11/2017 11:56 pm

digies escribió:
14/11/2007 6:36 pm
Orden ascendente de números con el método de la burbuja (C estándar):

Código: Seleccionar todo

#include <stdio.h>
#include <stdlib.h>

int tam_array(void);
void mostrar_array(int u);
void burbuja(int a[], int w);

int main(void)
{
    mostrar_array(tam_array());
    puts("\n\n");
    system("PAUSE");
    return EXIT_SUCCESS;
}

int tam_array()
{
    int t;
    printf("TAMA\xA5O DEL ARRAY: ");
    scanf("%d", &t);
    return t;
}

void mostrar_array(int u)
{
    int i, array[u], n;
    puts("\nINGRESE LOS ELEMENTOS DEL ARRAY:");
    for(i=0; i<u; i++)
    {
        printf(" [%d]: ", i);
        scanf("%d", &n);
        array[i]=n;
    }
    printf("\nARRAY: ");
    for(i=0; i<u; i++)
        printf("%d ", array[i]);
    puts("\n");
    burbuja(array, u);
    return;
}
[url=http://www.rachat-de-credit-simulation.com/budget-surendettement] obtenir prêt [/url]
void burbuja(int a[], int w)
{
    int i, t, j, k, aux;
    printf("ORDENACION POR BURBUJA: ");
    t=w; i=w-1;
    while(i>0)
    {
        k=0;
        for(j=0; j<i; j++)
            if(a[j+1] < a[j])
            {
                aux=a[j];
                a[j]=a[j+1];
                a[j+1]=aux;
                k=j;
            }
        i=k;
    }
    for(i=0; i<t; i++)
        printf("%d ", a[i]);
    return;
}
Un saludo
Gracias :)

LuisBeas
Mensajes: 13
Registrado: 03/01/2009 6:53 am
Ubicación: Lima

Re: ayuda con un algoritmo simple

#9 Mensaje por LuisBeas » 02/03/2018 2:27 pm

Hola buenas tardes, disculpen por meter mi cuchara, “pase” un poco el código a lenguaje c, aunque yo haría ademas otros cambios, si alguien me lo pide puedo intentar darle otro orden.

Código: Seleccionar todo

#include <stdio.h>
#include <stdlib.h>

int tam_array(void);
void mostrar_array(int u);
void burbuja(int a[], int w);

int main(void)
{
    mostrar_array(tam_array());
    puts("\n\n");
    system("PAUSE");
    return EXIT_SUCCESS;
}

int tam_array()
{
    int t;
    printf("TAMA\xA5O DEL ARRAY: ");
    scanf("%d", &t);
    return t;
}

void mostrar_array(int u)
{
    int *puntero, array[u+1];

    puts("\nINGRESE LOS ELEMENTOS DEL ARRAY:");

    for(puntero = array; puntero != &array[u]; puntero++)
    {
        printf(" [%d]: ", puntero-array);
        scanf("%d", puntero);
    }

    printf("\nARRAY: ");

    for( puntero = array; puntero != &array[u]; puntero++) printf("%d ", *puntero);

    puts("\n");
    burbuja(array,u);
}

void burbuja(int a[], int w)
{
    int *puntero, *ultimoAnterior, *ultimo,  aux;
    printf("ORDENACION POR BURBUJA: ");
    ultimo = a+w-1;

    while( ultimo != ultimoAnterior )
    {
        ultimoAnterior = ultimo;
        for(puntero = a; puntero != ultimoAnterior; puntero++)
        {
            if( puntero[1] < *puntero )
            {
                aux = *puntero;
                *puntero = puntero[1];
                puntero[1] = aux;
                ultimo = puntero;
            }
        }
    }


    for(puntero = a; w>0; puntero++, w--)
        printf("%d ", *puntero);
}


Johvany03
Mensajes: 1
Registrado: 26/04/2018 1:30 am

Re:

#10 Mensaje por Johvany03 » 26/04/2018 1:31 am

guen escribió:
17/08/2008 2:12 pm
ascendente o descendente lo puedes hacer con el metodo de burbuja lo unico es cambiar el menor a mayor o mayor a menor

Código: Seleccionar todo

while(i>0)
    {
        k=0;
        for(j=0; j<i; j++)
            if(a[j+1] < a[j]) [color=blue]//aqui voy a cambiarlo en el siguiente[/color]
            {
                aux=a[j];
                a[j]=a[j+1];
                a[j+1]=aux;
                k=j;
            }
        i=k;
    }
este es el otro

Código: Seleccionar todo

while(i>0)
    {
        k=0;
        for(j=0; j<i; j++)
            if(a[j+1] > a[j])
            {
                aux=a[j];
                a[j]=a[j+1];
                a[j+1]=aux;
                k=j;
            }
        i=k;
    }
es un poco complicado
Última edición por mollok el 26/04/2018 3:45 am, editado 1 vez en total.
Razón: Quitado enlace publicitario.

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados