[C con Clase] Tema 10. Arrays II. No me sale la propuesta 1 y 2

David de las Heras davidehm en gmail.com
Jue Mayo 26 12:56:40 CEST 2011


Gracias Steven:

No sabía lo de los arrays dinámicos. Otra vez me he pasado de listo.

Lo de los blucles....tengo que pulir mucho todavía :-(



El 25 de mayo de 2011 04:00, Steven Davidson <srd4121 en njit.edu> escribió:

> Hola David,
>
> On 5/24/11, David de las Heras <davidehm en gmail.com> wrote:
> >
>
> [CORTE]
>
> > Pero al mostrar los valores ordenados, siempre me saca algún valor "raro"
> y
> > no sé por qué es debido.
> > Pongo el código fuente lo más comentado posible, por si me queréis
> ayudar:
>
> Veamos el código fuente.
>
> > #include <iostream>
> > using namespace std;
> >
> > int main()
> > {
> >     short int i,j,contador=0;                           //Defino las
> variables int
> >     float suma=0;                                           //Defino la
> > variable suma como float, para tener decimales
> >     cout <<"¿Cuántos valores quieres analizar?"<<endl;
> >     cin >> contador;                                        //La variable
> > "contador" será la cantidad de nº que compongan la serie
> >     float aux,vector[contador];
>
> Esto no es correcto. La cantidad máxima de elementos al definir un
> array DEBE ser constante. Esto significa que el compilador debe saber
> la cantidad de elementos del array (estático).
>
> Si quieres crear el array en tiempo de ejecución, entonces usa un
> array dinámico. Sin embargo, para los ejercicios del capítulo 10 esto
> no es necesario. Simplemente indica la cantidad máxima de elementos y
> luego usa 'contador' como la cantidad actual. Obviamente, necesitas
> verificar que el valor de 'contador' es válido.
>
> [CORTE]
>
> >     for (i=contador-1;i>=0;i--)                             //Empiezo un
> > bucle que va desde el último índice del vector hasta el 0
> >         {for (j=0;j<=i;j++)                                 //De ésta
> forma
>
> Necesitas que 'j' no llegue a 'i', porque también usamos 'j+1' como
> índice. Esto es,
>
> for( j=0; j<i; j++ )
>
> > éste bucle empieza en 0 y acaba en el último índice del vector
> >
> //disminuyendo
> > en una unidad en cada iteración del pincipal
> >
> >             if (vector[j]>vector[j+1])                      //Si el valor
> > del primer índice es mayor que el del siguiente inmediato
> >             {
> >             aux=vector[j];                                  //Cambio los
> > valores apoyándome en una variable auxiliar "aux" para poder
> >             vector[j]=vector[j+1];                         //traspasar
> > dichos valores
> >             vector[j+1]=aux;
> >             }
> >         }
> >     cout << "La serie ordenada es " <<endl;                 //Una vez
> > reasignados los índices, mostramos los valores ordenados
> >
> >         for (j=0;j<=contador;j++)                           //Aquí he
> puesto
>
> Esto no es correcto. El operador debería ser < esto es,
>
> for( j=0; j<contador; j++ )
>
> > el bucle desde 0 hasta (contador-1) porque siempre me mete
> >                                                             //entre
> medias
> > algún valor raro, y de ésta forma completo el barrido de los índices
> >         {
> >         cout << vector [j] <<",";
> >         }
> >
> >     return 0;
> > }
> >
>
>
> Espero haber aclarado las dudas.
>
> Steven
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20110526/ebd39256/attachment.html>


Más información sobre la lista de distribución Cconclase