Gracias Steven:<br><br>No sabía lo de los arrays dinámicos. Otra vez me he pasado de listo.<br><br>Lo de los blucles....tengo que pulir mucho todavía :-(<br><br><br><br><div class="gmail_quote">El 25 de mayo de 2011 04:00, Steven Davidson <span dir="ltr"><<a href="mailto:srd4121@njit.edu">srd4121@njit.edu</a>></span> escribió:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">Hola David,<br>
<br>
On 5/24/11, David de las Heras <<a href="mailto:davidehm@gmail.com">davidehm@gmail.com</a>> wrote:<br>
><br>
<br>
[CORTE]<br>
<div class="im"><br>
> Pero al mostrar los valores ordenados, siempre me saca algún valor "raro" y<br>
> no sé por qué es debido.<br>
> Pongo el código fuente lo más comentado posible, por si me queréis ayudar:<br>
<br>
</div>Veamos el código fuente.<br>
<div class="im"><br>
> #include <iostream><br>
> using namespace std;<br>
><br>
> int main()<br>
> {<br>
>     short int i,j,contador=0;                           //Defino las variables int<br>
>     float suma=0;                                           //Defino la<br>
> variable suma como float, para tener decimales<br>
>     cout <<"¿Cuántos valores quieres analizar?"<<endl;<br>
>     cin >> contador;                                        //La variable<br>
> "contador" será la cantidad de nº que compongan la serie<br>
>     float aux,vector[contador];<br>
<br>
</div>Esto no es correcto. La cantidad máxima de elementos al definir un<br>
array DEBE ser constante. Esto significa que el compilador debe saber<br>
la cantidad de elementos del array (estático).<br>
<br>
Si quieres crear el array en tiempo de ejecución, entonces usa un<br>
array dinámico. Sin embargo, para los ejercicios del capítulo 10 esto<br>
no es necesario. Simplemente indica la cantidad máxima de elementos y<br>
luego usa 'contador' como la cantidad actual. Obviamente, necesitas<br>
verificar que el valor de 'contador' es válido.<br>
<br>
[CORTE]<br>
<div class="im"><br>
>     for (i=contador-1;i>=0;i--)                             //Empiezo un<br>
> bucle que va desde el último índice del vector hasta el 0<br>
>         {for (j=0;j<=i;j++)                                 //De ésta forma<br>
<br>
</div>Necesitas que 'j' no llegue a 'i', porque también usamos 'j+1' como<br>
índice. Esto es,<br>
<div class="im"><br>
for( j=0; j<i; j++ )<br>
<br>
</div><div class="im">> éste bucle empieza en 0 y acaba en el último índice del vector<br>
>                                                             //disminuyendo<br>
> en una unidad en cada iteración del pincipal<br>
><br>
>             if (vector[j]>vector[j+1])                      //Si el valor<br>
> del primer índice es mayor que el del siguiente inmediato<br>
>             {<br>
>             aux=vector[j];                                  //Cambio los<br>
> valores apoyándome en una variable auxiliar "aux" para poder<br>
>             vector[j]=vector[j+1];                         //traspasar<br>
> dichos valores<br>
>             vector[j+1]=aux;<br>
>             }<br>
>         }<br>
>     cout << "La serie ordenada es " <<endl;                 //Una vez<br>
> reasignados los índices, mostramos los valores ordenados<br>
><br>
>         for (j=0;j<=contador;j++)                           //Aquí he puesto<br>
<br>
</div>Esto no es correcto. El operador debería ser < esto es,<br>
<div class="im"><br>
for( j=0; j<contador; j++ )<br>
<br>
</div><div class="im">> el bucle desde 0 hasta (contador-1) porque siempre me mete<br>
>                                                             //entre medias<br>
> algún valor raro, y de ésta forma completo el barrido de los índices<br>
>         {<br>
>         cout << vector [j] <<",";<br>
>         }<br>
><br>
>     return 0;<br>
> }<br>
><br>
<br>
<br>
</div>Espero haber aclarado las dudas.<br>
<br>
Steven<br>
<br>
_______________________________________________<br>
Lista de correo Cconclase <a href="mailto:Cconclase@listas.conclase.net">Cconclase@listas.conclase.net</a><br>
<a href="http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net" target="_blank">http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net</a><br>
Bajas: <a href="http://listas.conclase.net/index.php?gid=2&mnu=FAQ" target="_blank">http://listas.conclase.net/index.php?gid=2&mnu=FAQ</a><br>
</blockquote></div><br>