elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda con error de compilación: invalid types ‘float[int]’ for array subscript
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con error de compilación: invalid types ‘float[int]’ for array subscript  (Leído 7,773 veces)
manri98

Desconectado Desconectado

Mensajes: 24


8086. Odisea de despacio...


Ver Perfil
Ayuda con error de compilación: invalid types ‘float[int]’ for array subscript
« en: 29 Septiembre 2014, 21:08 pm »

Buenas noches. Advierto que soy muy novato y no tengo mucha idea :-(
Estoy haciendo un módulo de un programa para un trabajo voluntario de clase, y a la hora de compilar me devuelve:
ERROR on page main at line 11, col 22: invalid types ‘float[int]’ for array subscript
ERROR on page main at line 12, col 22: invalid types ‘float[int]’ for array subscript
¿Se refiere a que el índice el 0 y el 1 no los considera int?
Código
  1. float position[3];
  2. float attitude[3];
  3. int counter;
  4. int contador;
  5.  
  6. float ControlLlamarada(int counter,float position){
  7.    int FlareCounter = 0;
  8.    if(counter == 30){
  9.        game.getNextFlare(FlareCounter);
  10.        if(FlareCounter <= 10){
  11.           position[0] = 0;
  12.           position[1] = 0.5;
  13.        }
  14.    }
  15.    return position;
  16. }
  17.  
  18. void VaciadoMemoria(){
  19.    int MemorySize = 0;
  20.    game.getMemorySize(MemorySize);
  21.    if (MemorySize == 2){
  22.        game.uploadPic();
  23.    }
  24. }
  25.  
  26. void init(){
  27.    position[0]=-0.380;
  28.    position[1]=0;
  29.    position[2]=0;
  30.    attitude[0]=0;
  31.    attitude[1]=0;
  32.    attitude[2]=0;
  33.    counter=0;
  34.    contador=0;
  35. }
  36.  
  37. void loop(){
  38.    /////
  39.    float ControlSphereLimit[12];
  40.    api.getMyZRState(ControlSphereLimit);
  41.  
  42.    if (ControlSphereLimit[0]== -0.64 || 0.64){
  43.        position[0] = 0;
  44.    }
  45.    if (ControlSphereLimit[1]== -0.8 || 0.8){
  46.        position[1] = 0;
  47.    }
  48.    /////
  49.    int llamaloop = 0;
  50.    ControlLlamarada(counter, position);
  51.    position = ControlLlamarada(counter, position);
  52.    if(position[0]==0 && position[1]==0.5 && counter > 30){
  53.        position[0]=0.5;
  54.        position[1]=0;
  55.        game.getNextFlare(llamaloop);
  56.        if(llamaloop == 1){
  57.            contador = counter;
  58.            if((contador+4)==counter){
  59.            position[0]=0;
  60.            position[1]=0.5;
  61.            }
  62.        }
  63.    }
  64.    VaciadoMemoria();
  65. game.getPOILoc(attitude, 1);
  66.    api.setPositionTarget(position);
  67.    api.setAttitudeTarget(attitude);
  68.    counter++;
  69.  
  70. }


En línea

(\/)4|\|r1 98
-Cuantos dálmatas había en la peli?
-101
-por el culo te la hinco
avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Ayuda con error de compilación: invalid types ‘float[int]’ for array subscript
« Respuesta #1 en: 29 Septiembre 2014, 21:22 pm »

Hola respondiendo primero a tu pregunta, aunque pueda parecer que es que no trata al 0 o al 1 como enteros no es eso.

El problema es que la variable posición no la estás definiendo como array en el argumento de la función, entonces te la trata como un simple float. Como supongo que estás empezando no te lo voy a poner con punteros, pero ten en cuenta que debes saber el largo del array si no quieres acceder a una dirección de memoria no reservada y obtener un error:
Código
  1. float ControlLlamarada(int counter,float position[] /**<-------------- Aquí está el fallo*/){
  2.   int FlareCounter = 0;
  3.   if(counter == 30){
  4.       game.getNextFlare(FlareCounter);
  5.       if(FlareCounter <= 10){
  6.          position[0] = 0;
  7.          position[1] = 0.5;
  8.       }
  9.    return position;
  10.   }

Un saludo.


« Última modificación: 29 Septiembre 2014, 21:26 pm por avesudra » En línea

Regístrate en
manri98

Desconectado Desconectado

Mensajes: 24


8086. Odisea de despacio...


Ver Perfil
Re: Ayuda con error de compilación: invalid types ‘float[int]’ for array subscript
« Respuesta #2 en: 29 Septiembre 2014, 21:26 pm »

Gracias! Supongo que tambien tengo que añadir [] en el return, no?
Código
  1. float ControlLlamarada(int counter,float position[]){
  2.   int FlareCounter = 0;
  3.   if(counter == 30){
  4.       game.getNextFlare(FlareCounter);
  5.       if(FlareCounter <= 10){
  6.          position[0] = 0;
  7.          position[1] = 0.5;
  8.       }
  9.   }
  10.   return position[];
  11. }
  12.  
En línea

(\/)4|\|r1 98
-Cuantos dálmatas había en la peli?
-101
-por el culo te la hinco
avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Ayuda con error de compilación: invalid types ‘float[int]’ for array subscript
« Respuesta #3 en: 29 Septiembre 2014, 21:28 pm »

Gracias! Supongo que tambien tengo que añadir [] en el return, no?
No, no es necesario (no está bien vamos) pues poniendo solo posicion estás pasando la dirección de memoria del primer elemento del array. Pero si debes poner en el valor de retorno esto:
Código
  1. float* ControlLlamarada(int counter,float position[] /**<-------------- Aquí está el fallo*/)
  2. {
  3.    int FlareCounter = 0;
  4.    if(counter == 30)
  5.    {
  6.        game.getNextFlare(FlareCounter);
  7.        if(FlareCounter <= 10)
  8.        {
  9.            position[0] = 0;
  10.            position[1] = 0.5;
  11.        }
  12.        return position;
  13.    }
  14. }
Cuando en C tu pones:
Código
  1. array[0];
Estás accediendo al valor del elemento de ese array en la posición cero. Y eso es lo mismo que poner:
Código
  1. *array;
Pero eso ya son punteros y no viene al caso, si quieres me puedes preguntar por privado  ;)
Un saludo.
« Última modificación: 29 Septiembre 2014, 21:34 pm por avesudra » En línea

Regístrate en
manri98

Desconectado Desconectado

Mensajes: 24


8086. Odisea de despacio...


Ver Perfil
Re: Ayuda con error de compilación: invalid types ‘float[int]’ for array subscript
« Respuesta #4 en: 29 Septiembre 2014, 21:35 pm »

 Solucionado ;D Miraré el uso de punteros poco a poco por mi cuenta. Muchas gracias
En línea

(\/)4|\|r1 98
-Cuantos dálmatas había en la peli?
-101
-por el culo te la hinco
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines