Ver Mensaje Individual
  #4 (permalink)  
Antiguo 31/05/2014, 09:33
dehm
 
Fecha de Ingreso: septiembre-2010
Mensajes: 494
Antigüedad: 14 años, 4 meses
Puntos: 10
Respuesta: problema con la variable del ciclo for

Hola:

Pues si, esta vez hay varios errores más graves de la cuenta.
Para empezar, has de definir el tamaño del array con un literal o con un valor constante.

Es decir, puedes hacer así:
Código C++:
Ver original
  1. int numeros[10];
O bien así:
Código C++:
Ver original
  1. const int valores=10;
  2. int numeros[valores];

La ventaja de esta segunda forma es que valores, si bien es un valor de sólo consulta, al usarlo para recorrer el array, el día que quieras que valores valga 5, ya tienes cambiado el valor tanto aqui:
Código C++:
Ver original
  1. int numeros[valores];
como aqui:
Código C++:
Ver original
  1. for (int i=0;i<valores;++i)

Por lo que el código es más mantenible. En general es mejor trabajar de la segunda forma, lo que pasa es que para estos ejercicios de apenas 20 líneas, no se ve la importancia real.

Respecto al error, la queja del compilador siempre ayuda, o directamente nos da la solución del problema. En este caso, declaras una variable int i sin darle valor ni uso.

Fíjate que no es lo mismo esto:
Código C++:
Ver original
  1. int i; //El copilador me dice en esta linea que esta el error
  2.  
  3.     for (int i=0;i<valores;++i)
  4.     {
  5. .........................

que esto:

Código C++:
Ver original
  1. int i; //El copilador me dice en esta linea que esta el error
  2.  
  3.     for (i=0;i<valores;++i)
  4.     {
  5. ...........................

En el primer caso, el "i" del bucle, se crea y define dentro del mismo, y muere cuando acabe el bucle. Eso en definitiva está haciendo que el int i de fuera del bucle, no tenga nada que ver con el del bucle for. Así, el primer int i es una variable aparte, sin definición, sin valor y sin uso. Por eso se queja.
De la segunda forma, el compilador asume que hay un int i creado previamente, lo inicializa a 0, y lo usa para hacer el bucle. Por eso no daría error.

Y el último error es la forma de acceder a los valores, ya que has de acceder mediante el operador [].
Es decir:
Código C++:
Ver original
  1. cin>>numeros[valores];

Saludos