[C con Clase] Alguien podria decirme donde esta el error? novatada

tataraperz koreano_87 en hotmail.com
Mie Jul 18 10:16:15 CEST 2007


jejej hola a todos tengo tiempo estudiando c++ pero luego lo dejo y cuando regreso ya se me olvida algunas cosas, pero ahora e regresado y estoy decidido a terminar todo lo que e encontrado en esta pagina c ocn clase hasta terminar lo de windows api ahora que estoy en vacaciones para adelantarme a lo que me enseñaran en la preparatotia y despues en la uni tengo 16 años XD.

BUeno al grano, lo que quiero es un programa que haga esto:
Hacer un programa que lea diez valores enteros en un array y los muestre en pantalla. Después que los ordene de menor a mayor y los vuelva a mostrar. Y finalmente que los ordene de mayor a menor y los muestre por tercera vez. Para ordenar la lista usar una función que implemente el método de la burbuja y que tenga como parámetro de entrada el tipo de ordenación, de mayor a menor o de menor a mayor. Para el array usar una variable global.

Y lo que tengo de codigo es esto:

#include <iostream.h>
#include <stdlib.h>
#define LIMPIAR_PANTALLA() system("CLS")
#define PAUSA() system("PAUSE")
#define TAM 10

void crear_lista();
void mostrar(int arreglo[]);
void bubblesort(int arreglo[],char c);

int array[TAM];

int main()
{
    crear_lista();
    LIMPIAR_PANTALLA();

    cout<<"Lista creada:"<<endl;
    mostrar(array);
    cout<<"Lista de menor a mayor:\n";
    bubblesort(array,'m');
    cout<<"Lista de mayor a menor:\n";
    bubblesort(array,'M');

    return 0;
}

void crear_lista()
{
    cout<<"\n";

    for(int i = 0;i < TAM;i++)
    {
        cout<<"\tIntroduce el valor "<<i+1<<": ";
        cin>>array[i];
    }
}

void mostrar(int arreglo[])
{
    cout<<"\n";

    for(int i = 0;i < TAM;i++)
        cout<<"\tElemento ["<<i<<"]: "<<arreglo[i]<<endl;

    cout<<"\n\n\t";
    PAUSA();
    cout<<"\n\n";
}

void bubblesort(int arreglo[], char c)
{
    int i,j;
    int temp;

    for(i = 0;i < TAM;i++)
        for(j = 0;j < TAM-i;j++)
            switch(c)
            {
               case 'm':
               if(arreglo[j] > arreglo[j+1])
               {
                   temp = arreglo[j+1];
                   arreglo[j+1] = arreglo[j];
                   arreglo[j] = temp;
               }
               case 'M':
               if(arreglo[j] < arreglo[j+1])
               {
                   temp = arreglo[j];
                   arreglo[j] = arreglo[j+1];
                   arreglo[j+1] = temp;
               }
            }

    mostrar(arreglo);
}

ya he estado mucho rato y no encuentro la solucion, siempre me muestra las dos listas ordenadas de mayor a menor, la primera no me la muestra de menor a mayor =(, se que se puede hacer de otras formas mas cortas y eficientes pero quiero hayar la solucion en ese codigo, apegandome a lo que se supone que debo saber segun el tutorial de C++ en c con clase.

Gracias de antemano xD


Más información sobre la lista de distribución Cconclase