[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