Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: manri98 en 8 Noviembre 2014, 00:19 am



Título: Ayuda con el operador !=
Publicado por: manri98 en 8 Noviembre 2014, 00:19 am
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.
Código
  1. void MovimientoEsferico(){
  2.    PosicionInicialCartesianasAEsfericas();
  3.  
  4.    float MovimientoEsferico[3];
  5.    MovimientoEsferico[0]=posicionInicialEsferica[0]*sinf(posicionInicialEsferica[1])*cosf(posicionInicialEsferica[2]);
  6.    MovimientoEsferico[1]=posicionInicialEsferica[0]*sinf(posicionInicialEsferica[1])*sinf(posicionInicialEsferica[2]);
  7.    MovimientoEsferico[2]=posicionInicialEsferica[0]*cosf(posicionInicialEsferica[1]);
  8.  
  9.    float diferenciaX = 0;
  10.    float diferenciaY = 0;
  11.    float diferenciaZ = 0;
  12.    float resultadoDivisionX = 0;
  13.    float resultadoDivisionY = 0;
  14.    float resultadoDivisionZ = 0;
  15.  
  16.    float posicionSatelite[12];
  17.    api.getMyZRState(posicionSatelite);
  18.  
  19.    //X
  20.    if(MovimientoEsferico[0]>posicionFinal[0]){
  21.        diferenciaX = MovimientoEsferico[0]-posicionFinal[0];
  22.        resultadoDivisionX = diferenciaX/6;
  23.        resultadoDivisionX = resultadoDivisionX*-1;
  24.    }
  25.    else if(MovimientoEsferico[0]<posicionFinal[0]){
  26.        diferenciaX = posicionFinal[0]-MovimientoEsferico[0];
  27.        resultadoDivisionX = diferenciaX/6;  
  28. }
  29. //Y
  30.    if(MovimientoEsferico[1]>posicionFinal[1]){
  31.        diferenciaY = MovimientoEsferico[1]-posicionFinal[1];
  32.        resultadoDivisionY = diferenciaY/6;
  33.        resultadoDivisionY = resultadoDivisionY*-1;
  34.    }
  35.    else if(MovimientoEsferico[1]<posicionFinal[1]){
  36.        diferenciaY = posicionFinal[1]-MovimientoEsferico[1];
  37.        resultadoDivisionY = diferenciaY/6;
  38.    }
  39. //Z
  40.    if(MovimientoEsferico[2]>posicionFinal[2]){
  41.        diferenciaZ = MovimientoEsferico[2]-posicionFinal[2];
  42.        resultadoDivisionZ = diferenciaZ/6;
  43.        resultadoDivisionZ = resultadoDivisionZ*-1;
  44.    }
  45.    else if(MovimientoEsferico[2]<posicionFinal[2]){
  46.        diferenciaZ = posicionFinal[2]-MovimientoEsferico[2];
  47.        resultadoDivisionZ = diferenciaZ/6;
  48.    }
  49.  
  50. MovimientoEsferico[0] = MovimientoEsferico[0]+resultadoDivisionX;
  51. MovimientoEsferico[1] = MovimientoEsferico[1]+resultadoDivisionY;
  52. MovimientoEsferico[2] = MovimientoEsferico[2]+resultadoDivisionZ;
  53. api.setPositionTarget(MovimientoEsferico);
  54.    while ((posicionSatelite[0]!=MovimientoEsferico[0])&&(posicionSatelite[1]!=MovimientoEsferico[1])&&(posicionSatelite[2]!=MovimientoEsferico))//en este bucle while esta el error//{
  55. api.getMyZRState(posicionSatelite);
  56. api.setPositionTarget(MovimientoEsferico);
  57. }
  58.  


Título: Re: Ayuda con el operador !=
Publicado por: Ja_90 en 8 Noviembre 2014, 04:19 am
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...

 


Título: Re: Ayuda con el operador !=
Publicado por: manri98 en 8 Noviembre 2014, 10:57 am
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].