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>