problema DevC

LioNHearT

buenas gente. estoy intentando hacer un programa. el devc me da este error:

no match for 'operator<' in '*((+(((unsigned int)n) * 12u)) + BotonA) < PLANTAS'

en esta condicion:

for(n=0;BotonA[n]<PLANTAS;n++)

alguien sabe ke siginifica?

gracias

erdanblo

El array ese se muestra bien?

LioNHearT

como k si se muestra bien? es una tupla, definida como:

typedef struct stEstadoBoton {
int XBoton; //Posición X del boton
int YBoton; //Posición Y del boton
bool VBoton; //Llamada vigente (false no vigente, true vigente)

y el codigo completo es asi (me da el mismo error en cada for):

void mCtrlAscensor (stEstadoBoton BotonP[PLANTAS],
stEstadoBoton BotonA[PLANTAS],stEstadoBoton BotonB[PLANTAS],
int PlantaAct_A, int Sentido_A,
int PlantaAct_B, int Sentido_B,
int Destino[2])
{
int n;
for(n=0;BotonA[n]<PLANTAS;n++){
if(BotonA)Destino[0]=BotonA[n];
}
for(n=0;BotonB[n]<PLANTAS;n++){
if(BotonB)Destino[1]=BotonB[n];
}
}

Riu

declara int n dentro del bucle, o lo haces dentro o lo haces dentro.

LioNHearT

la declaracion de variables está bien, yo creo

erdanblo

#4 Cierto, a mi me pasaba con c sháp

for(int n = 0;blalba[n]<PANAON;n++)

LOc0

Creo que es por un problema de tipos. ¿PLANTAS de qué tipo es? ¿ES una constante entera, una cadena, o qué?

Lo digo porque en BotonB[n]<PLANTAS estás viendo si una variable de tipo struct loquesea es menor que otra cosa que (seguramente) es de otro tipo...

Salu2 ;)

LioNHearT

es una constante de tipo int, concretamente vale 9

LOc0

Vale, entonces es casi seguro lo de los tipos. NO sé qué quieres hacer exactamente pero lo que está a la izquierda del símbolo < tiene que ser algo numérico, no una estructura,

Salu2 ;)

PD: tb podría ser que te falta definir un nuevo operador '<' que te valga para comparar elementos de tipo struct loquesea con enteros. (Busca en Google sobrecarga de operadores en C++ -> http://www.chuidiang.com/clinux/sobrecarga/sobrecarga.php)

dagavi
oZk4h

en ensamblador no pasan estas cosas xD

sh0ty

Es facil, LoC0 ya te lo ha dicho muy claro pero yo lo hare mas.
BotonA y BotonB no son 2 variables en las que puedas almacenar informacion, son estructuras. Las variables en las que si puedes guardar valores son las que forman la estructura: VBoton, XBoton y YBoton, si no me equivoco. El problema esta en que no usas ninguna de esas 3 para la comparacion.

LioNHearT

el programa lo k ace es mirar los botones de un ascensor, para ver si estan pulsados o no, y a partir de ahi, si lo estan, el ascensor se desplazara. tonces como lo arreglariais?

Soltrac

No se q coño significa Xboton o Yboton, pero claramente no puedes comparar la estructura de los botones con las planaas.

en todo caso, BotonA.Xboton<PLANTAS o BotonA.Yboton<PLANTAS.

Es decir.

BotonA = Estructura
BotonA.XBoton = INT
BotonA.YBoton = INT
PLANTAS = INT

Estructura e INT no son comparables, de ahí el error. Solo puedes comparar las otras 3 entre ellas :)

Y presupongo q estás con C y no C++, por lo q olvídate lo q te dicen de sobrecarga de operadores, q en C no se puede hacer.

LioNHearT

weno, he conseguido arreglar el asunto. la cosa está asi (tiene algun punto mas ke lo dicho):

void mCtrlAscensor (stEstadoBoton BotonP[PLANTAS],
stEstadoBoton BotonA[PLANTAS],stEstadoBoton BotonB[PLANTAS],
int PlantaAct_A, int Sentido_A,
int PlantaAct_B, int Sentido_B,
int Destino[2])
{
for(na=0;na<PLANTAS-1;na++){
if(BotonA[na].VBoton){
Destino[0]=na;
Sentido_A=0;
Destino[1]=PlantaAct_B;
PlantaAct_A=na;
}
}
for(nb=0;nb<PLANTAS-1;nb++){
if(BotonB[nb].VBoton){
Destino[1]=nb;
Sentido_B=0;
Destino[0]=PlantaAct_A;
PlantaAct_B=nb;
}

}
for(np=0;np<PLANTAS-1;np++){
if(BotonP[np].VBoton){
if(abs(np-PlantaAct_A)>abs(np-PlantaAct_B)){
Destino[1]=np;
Destino[0]=PlantaAct_A;
}

else{
Destino[0]=np;
Destino[1]=PlantaAct_B;
}
}
}
}

me faltan varias cosillas xo weno, de momentos los ascensores s me mueven. x cierto, alguien de aki sabe bastante de programacion en c++? es por si podria seguir ayudandome con este proyecto.

espero respuestas. gracias a todos!!

Riu

te recomiendo el borland c++
por cierto poco a poco tio no quieras que te salga todo a la primera.., el c es bonito pero te pues morir del asko si te atascas en algo

LioNHearT

el borland xk?
no si ya tio, xo tnog poko tiempo, es el problema xDD. algun consejillo? (serio plis)

Riu

pq la ayuda del borland es mejor que la del devc por eso :d

LioNHearT

gente tengo otra duda. veamos, he de hacer una funcion la cual hace referencia a una estructura (la cual se encuentra en otro fichero adjunto al programa). la cuestion es que no encuentro bien su funcion. esta es la estructura:

typedef struct stDatosEstadisticas{
} ;

y la funcion ha realizar (una de ellas) es esta:

int mTrayectosAscensor(int Ascensor, stDatosEstadisticas Datos)
{
return 0;
}

alguien me podria orientar un poco plis?

cabron

Si necesitas hacer referencia a algo definido en otro fichero, tienes que usar la palabra clave extern

JuAn4k4

#20 no sera #include ?

cabron

#21:

#include no es para hacer referencia a algo que está en otro archivo, #include es para meter todo el contenido de otro archivo.

JuAn4k4

Con el include no le daria problemas para poder usar el tipo.

cabron

#include y extern se usan para cosas totalmente diferentes.

Yo no sé que es lo quiere hacer, por que su post está fatal explicado, por eso le conteste "si lo que quieres hacer es...", pero como no ha vuelto a responder...

Le he dicho que use extern, por que para lo que le he entendido que quiera hacer, necesita extern, no #include.

Usuarios habituales

  • cabron
  • JuAn4k4
  • LioNHearT
  • Riu
  • Soltrac
  • LOc0
  • erdanblo