He intentado hacer un programa mezclando un poco lo que se pide en los problemas 1 y 2 del tema 10 Arrays II.<br><br>La verdad es que después de dar mil vueltas, he acabado copiando el algoritmo que implementa el método de la burbuja. Al menos creo que lo he entendido bien, y creo que por fin le he pillado el truco a los bucles anidados.<br>
<br>Pero al mostrar los valores ordenados, siempre me saca algún valor "raro" y no sé por qué es debido.<br>Pongo el código fuente lo más comentado posible, por si me queréis ayudar:<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 variable suma como float, para tener decimales<br>
    cout <<"¿Cuántos valores quieres analizar?"<<endl;<br>    cin >> contador;                                        //La variable "contador" será la cantidad de nº que compongan la serie<br>
    float aux,vector[contador];<br>    cout << "Introduce valores " <<endl;                    //El bucle para pedir números se repetirá tantas veces como<br>    for (i=0;i<contador;i++)                                //le haya marcado la variable contador<br>
    {<br>    cin >>vector [i];<br>    suma = suma + vector [i];                               //Voy actualizando la variable "suma" sumando cada elemento del vector<br>    }<br>    cout << "La serie introducida es" <<endl;               //Saco en pantalla la serie introducida, en el órden de introducción<br>
        for (i=0;i<contador;i++)<br>        {<br>        cout << vector [i]<<",";<br>        }<br>    cout <<endl;<br>    cout << "La suma es ";<br>    cout << suma <<endl;                                    //La variable "suma" ya la tenía actualizada. La saco por pantalla<br>
    cout << "La media es ";<br>    cout << suma / contador <<endl;                         //La media es la suma de los nº/por el nº de elementos de la serie (contador)<br>    for (i=contador-1;i>=0;i--)                             //Empiezo un bucle que va desde el último índice del vector hasta el 0<br>
        {for (j=0;j<=i;j++)                                 //De ésta forma éste bucle empieza en 0 y acaba en el último índice del vector<br>                                                            //disminuyendo en una unidad en cada iteración del pincipal<br>
<br>            if (vector[j]>vector[j+1])                      //Si el valor del primer índice es mayor que el del siguiente inmediato<br>            {<br>            aux=vector[j];                                  //Cambio los valores apoyándome en una variable auxiliar "aux" para poder<br>
            vector[j]=vector[j+1];                         //traspasar dichos valores<br>            vector[j+1]=aux;<br>            }<br>        }<br>    cout << "La serie ordenada es " <<endl;                 //Una vez reasignados los índices, mostramos los valores ordenados<br>
<br>        for (j=0;j<=contador;j++)                           //Aquí he puesto el bucle desde 0 hasta (contador-1) porque siempre me mete<br>                                                            //entre medias 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>