Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/05/2017, 19:02
alanjo
 
Fecha de Ingreso: marzo-2016
Mensajes: 15
Antigüedad: 8 años, 8 meses
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.