Ayuda con el operador !=

Iniciado por manri98, 8 Noviembre 2014, 00:19 AM

0 Miembros y 1 Visitante están viendo este tema.

manri98

Buenas noches.
Haciendo un proyecto de clase me he encontrado con este error:
invalid operands of types 'float' and 'float [12]' to binary 'operator!='
El error se encuentra en el bucle while que señalo en el código. Por lo que entiendo surge de intentar utilizar el operador con dos tipos distintos de variables, pero ambos son arrays :huh:
¿Alguien podría ayudarme a saber que pasa? Muchas gracias por adelantado.

void MovimientoEsferico(){
    PosicionInicialCartesianasAEsfericas();
   
    float MovimientoEsferico[3];
    MovimientoEsferico[0]=posicionInicialEsferica[0]*sinf(posicionInicialEsferica[1])*cosf(posicionInicialEsferica[2]);
    MovimientoEsferico[1]=posicionInicialEsferica[0]*sinf(posicionInicialEsferica[1])*sinf(posicionInicialEsferica[2]);
    MovimientoEsferico[2]=posicionInicialEsferica[0]*cosf(posicionInicialEsferica[1]);
   
    float diferenciaX = 0;
    float diferenciaY = 0;
    float diferenciaZ = 0;
    float resultadoDivisionX = 0;
    float resultadoDivisionY = 0;
    float resultadoDivisionZ = 0;
   
    float posicionSatelite[12];
    api.getMyZRState(posicionSatelite);

    //X
    if(MovimientoEsferico[0]>posicionFinal[0]){
        diferenciaX = MovimientoEsferico[0]-posicionFinal[0];
        resultadoDivisionX = diferenciaX/6;
        resultadoDivisionX = resultadoDivisionX*-1;
    }
    else if(MovimientoEsferico[0]<posicionFinal[0]){
        diferenciaX = posicionFinal[0]-MovimientoEsferico[0];
        resultadoDivisionX = diferenciaX/6;   
}
//Y
    if(MovimientoEsferico[1]>posicionFinal[1]){
        diferenciaY = MovimientoEsferico[1]-posicionFinal[1];
        resultadoDivisionY = diferenciaY/6;
        resultadoDivisionY = resultadoDivisionY*-1;
    }
    else if(MovimientoEsferico[1]<posicionFinal[1]){
        diferenciaY = posicionFinal[1]-MovimientoEsferico[1];
        resultadoDivisionY = diferenciaY/6;
    }
//Z
    if(MovimientoEsferico[2]>posicionFinal[2]){
        diferenciaZ = MovimientoEsferico[2]-posicionFinal[2];
        resultadoDivisionZ = diferenciaZ/6;
        resultadoDivisionZ = resultadoDivisionZ*-1;
    }
    else if(MovimientoEsferico[2]<posicionFinal[2]){
        diferenciaZ = posicionFinal[2]-MovimientoEsferico[2];
        resultadoDivisionZ = diferenciaZ/6;
    }
   
MovimientoEsferico[0] = MovimientoEsferico[0]+resultadoDivisionX;
MovimientoEsferico[1] = MovimientoEsferico[1]+resultadoDivisionY;
MovimientoEsferico[2] = MovimientoEsferico[2]+resultadoDivisionZ;
api.setPositionTarget(MovimientoEsferico);
    while ((posicionSatelite[0]!=MovimientoEsferico[0])&&(posicionSatelite[1]!=MovimientoEsferico[1])&&(posicionSatelite[2]!=MovimientoEsferico))//en este bucle while esta el error//{
api.getMyZRState(posicionSatelite);
api.setPositionTarget(MovimientoEsferico);
}
(\/)4|\|r1 98
-Cuantos dálmatas había en la peli?
-101
-por el culo te la hinco

Ja_90

Hola,

En el While, en la ultima parte de la condicion te falto especificar el indice del arreglo
(posicionSatelite[2]!=MovimientoEsferico) ==> (posicionSatelite[2]!=MovimientoEsferico[2])...

Si no es eso...mmm a modo de pregunta...Estas comparando los valores de los indices de cada arreglo....el arreglo float posicionSatelite[12] guarda 12 valores, y el array float MovimientoEsferico[3] guarda 3 y tu solo quieres comprar o decir que mientras sean diferente (!=) los primeros 3 valores de esos arreglos haga:

api.getMyZRState(posicionSatelite);
api.setPositionTarget(MovimientoEsferico);

Es asi lo que intentas hacer?....si es asi porque el arreglo de posicioSatelite[] tiene 12 valores no serian innecesarios, y bastarian los mismos 3 que estas comparando...

 
:D  ::::Ja_90::::   :D

manri98

Hola,
Pues si era eso ;-) . Muchas gracias, no sabía cual era el problema y todo por no leer el código más a fondo.
Respecto a lo que comentas, si, eso es lo que quiero hacer  ;D.
Sobre posicionSatelite[12], no puedo eliminar el resto porque la función api.getMyZRState() devuelve 12 valores. Pensé en pasar los 3 primeros valores de posicionSatelite[12] a otro array y comparar este con MovimientoEsferico[3].
(\/)4|\|r1 98
-Cuantos dálmatas había en la peli?
-101
-por el culo te la hinco