Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[ERROR] Ordenamiento Burbuja

Estas en el tema de [ERROR] Ordenamiento Burbuja en el foro de C/C++ en Foros del Web. Buenas gente, espero que estén muy bien en sus respectivos lugares. Hace 2 días empecé a volver a C++ (tal cual, luego de un tiempo ...
  #1 (permalink)  
Antiguo 27/05/2017, 19:02
 
Fecha de Ingreso: marzo-2016
Mensajes: 15
Antigüedad: 8 años, 1 mes
Puntos: 0
Exclamación [ERROR] Ordenamiento Burbuja

Buenas gente, espero que estén muy bien en sus respectivos lugares. Hace 2 días empecé a volver a C++ (tal cual, luego de un tiempo sin programar en C ni C++) y quise hacer el ordenamiento burbuja con interacción el usuario sin que antes se le pida al usuario una cantidad N de números máximos que va a ingresar, entonces se me vino a la cabeza el do while, y dentro del do while hacer un for para contabilizar las veces que se repitió el bucle y así poder saber cuántas veces recorrer el vector, no se me ocurrió cómo implementarlo, había pensado en un continue, pero tampoco. El código quedó de la siguiente manera:


Código:
#include <iostream>
#include <stdio.h>
using namespace std;
int metodoBurbuja();
int main(){

    metodoBurbuja();
    cout << "\nPresione una tecla para salir";
    getchar();
    getchar();
    return 0;
}

    int metodoBurbuja(){
    int i, j,cn = 0, auxiliar;
    int arreglo[cn];
    char respuesta[10] = {'S'};


    do{

        cout << "Introduce un n\243mero para ordenar de menor a mayor: ";
        cin >> arreglo[cn];
        cn++;
        cout << "\168Desea introducir otro n\243mero? Si(s) No (n) : ";
        cin >> respuesta[0];

    }while(respuesta[0] == 'S' || respuesta[0] == 's');

    for(i=0;i<cn;i++){
        for(j=0;j<cn;j++){
            if (arreglo[j]>arreglo[j+1]){
                auxiliar = arreglo[j];
                arreglo[j] = arreglo[j+1];
                arreglo[j+1] = auxiliar;
            }
        }
    }

    for(i=0;i<cn;i++){
        cout << arreglo[i] << " ";
    }

    return 0;
}
El problema es el siguiente, en primer lugar no quiero que se le pida al usuario la cantidad máxima de número que va a ingresar, y al llegar al número 10 de repeticiones en el bucle, se imprime la siguiente cadena (supongamos que ingreso número del 1 al 10 para ordenar):

0,1,2,3,4,5,6,7,8,9 (se imprime el "0" sin ningún motivo - el motivo es que recorro mal el vector, pero no sé cómo corregirlo-)

Mientras que si ordeno < de 10 números, se ordena normalmente sin el 0. Muchas gracias de antemano por su voluntad y espero poder resolver esto que me trae pensando bastante horas. Buena jornada.
  #2 (permalink)  
Antiguo 27/05/2017, 23:03
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: [ERROR] Ordenamiento Burbuja

Los arreglos tienen que partir con espacio de memoria para ellos, el arreglo que usas parte con tamano 0, segun veo. Eso no predice un buen comportamiento posterior. Arregla eso.
Luego, los indices de un arreglo de tamano n van de 0 a n-1, tu ciclo esta comparando posiciones del arreglo con indices invalidos. Arregla eso tambien.
__________________
Visita mi perfil en LinkedIn

Etiquetas: burbuja, main, ordenamiento
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:54.