Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
NO Se Que Pasa
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje NO Se Que Pasa 
 
Me ha surgido un problema muy peculiar al programar hago lo siguiente

b=500
a=500

c=b-a

y me resulta

a=500 b=0 y c= 0
 

por que la b se hace 0 si lo estoy metiendo en c y a veces hasta la a se hace 0 ya hice limpia de los datos basura y todo y sigue haciendo lo mismo uso gambas 2.16 en jaunty
 



 
cyberx0x - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: NO Se Que Pasa 
 
Estan declaradas las variables en el lugar correcto? Tal vez sea problema de alcance de las variables.

En el siguiente código a,b y c solo existen dentro del evento Form_open, desde otro punto del programa no tienen vida. Así debería funcionar correctamente:

PUBLIC SUB Form_Open()
  DIM a AS Integer
  DIM b AS Integer
  DIM c AS Integer
  a = 500
  b = 500
  c = a - b
  Message.Info(a & gb.NewLine & b & gb.NewLine & c & gb.newline)
end


Ahora, en el siguiente ejemplo, es diferente, el valor de c no sera cero, porque en el evento mostrar solo existe la variable c definida como publica, la cual nada tiene que ver con la varia c declarada con dim en el evento Open

public c as integer

PUBLIC SUB Form_Open()
  DIM a AS Integer
  DIM b AS Integer
  DIM c AS Integer
  a = 500
  b = 500
  c = a - b
  Message.Info(a & gb.NewLine & b & gb.NewLine & c & gb.newline)
end

PUBLIC SUB mostrar()
  Message.Info(c)
END

Sera ese el problema?
 



 
última edición por mil_arg el Domingo, 03 Enero 2010, 21:47; editado 1 vez 
mil_arg - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: NO Se Que Pasa 
 
PUBLIC FUNCTION transformar(poblacion1 AS Object[]) AS Object[]
DIM i AS Integer
DIM maxim, valor AS Float
DIM temp1, great, temp2 AS Codificador
DIM pob2 AS Object[]
pob2 = NEW Object[]
great = NEW Codificador
poblacion1 = ordenar_obj(poblacion1)
great = poblacion1[0]
maxim = great.capacidad
 
 FOR i = 0 TO poblacion1.Max
   temp1 = NEW codificador
   temp1 = poblacion1[i]
   valor = temp1.capacidad
   valor = maxim - valor
   temp1.capacidad = valor
   pob2.Remove(i)
   pob2.Add(temp1, i)
   valor = 0.0
   temp1 = NULL
 NEXT    
 RETURN pob2
END
 


Este es el codigo que hace lo ya mencionado no creo que el problema se el alcance ya que maxim es local y solo la uso en la funcion
 



 
cyberx0x - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: NO Se Que Pasa 
 
¿Por qué declaras Poblacion1 como object[] si debiera ser de tipo ¿Codificador? ¿Es porque es un array de codificadores?

¿Es correcto ese bucle en el que creas poblacion1.count instancias de una clase? A mi entender ese temp1=new codificador debería estar fuera del bucle y así te ahorrarías también el temp1=null. Tampoco veo que aporta el valor=0.0

¿Que aporta este código?
pob2.Remove(i)
pob2.Add(temp1, i)
que no lo tenga este
pob2[i]=temp1

¿Qué aporta este código
valor = temp1.capacidad
  valor = maxim - valor
que no lo aporte este otro
valor=maxim-temp1.capacidad

Empezaste diciendo que tenías un problema con A, B y C. Ahora nos pones este código y parece ser algo relativo a Maxim ¿No te das cuenta que los demás no sabemos lo que estás haciendo? ¿Serías tan amable de decirnos que variables obtienen un resultado inesperado?

No entiendo nada. Tienes un array de objetos de población1 que entiendo que contienen datos de poblaciones y lo acabas asignando a una variable great de tipo codificador ¿Que se supone que hace great?

Porque veo este código
great = poblacion1[0]
maxim = great.capacidad

Y me pregunto cual es la diferencia con este otro
maxim=poblacion1[0].capacidad

Es que no se por donde cogerlo ¿Que es exactamente lo que quieres hacer en la función transformar y que es ese parámetro de entrada poblacion1?
 



 
soplo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: NO Se Que Pasa 
 
Bueno solo trato de hacer unas restas amigo soplo y ya implemente los codigos que tu me muestras y de repente de la nada maxim se vuelve 0 o great.capacidad tambien se vuelve 0 nada mas asi despues de unas iteraciones esta forma es la que menos lo hace
 



 
cyberx0x - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: NO Se Que Pasa 
 
Pues responde a lo que se te pregunta hombre. Sigo sin saber que variables son las que obtienen un mal resultado.

Y no me extraña que lo anterior no te haya servido. Simplemente es lo mismo que tu has puesto pero bien puesto porque usas varias líneas para hacer lo que se puede hacer en una.

Ahora a ver si somos capaces de definir que variables son las que obtienen un valor equivocado para que los demás podamos mirarlo.
 



 
soplo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: NO Se Que Pasa 
 
Ya lo solucione amigo Soplo gracias por tus comentarios fueron de gran ayuda
 



 
cyberx0x - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: NO Se Que Pasa 
 
Hola

Aunque personalmente no entendí nada de tu código ni lo que necesitabas hacer, suele ser una buena costumbre comentar dónde estaban tus errores y explicar cómo los has solucionado, no sólo por cortesía, sino porque también alguien puede aprender de tus errores. A veces sólo dar las gracias no es suficiente.

Si no lo has leído ya (que creo que no), revisa este post donde se hablan cosas interesantes sobre los comportamientos en los foros:

http://foro.gambas-es.org/viewtopic.php?f=7&t=321

En caso de que ya lo hayas leído, vuelve a leerlo, porque entonces es que algo se te ha pasado...

Y no estoy regañando, sólo dando buenos consejos que pronto agradecerás.

Saludos
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron