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.