Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-11-2010
Parabol77 Parabol77 is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 10
Poder: 0
Parabol77 Va por buen camino
Problema con condicionales "compuestos"

Buenas a todos.

En un programa tengo que incluir un condicional If "compuesto". No sé si es así como se llama técnicamente, pero me explico.

Tengo tres variables, dos de entrada y una de salida. La variable de salida adquiere un valor dependiendo de los valores que alcancen las dos de entrada. Copio y pego lo que tengo hecho, para que se entienda mejor:
Código:
   If Ze<=17 Then 
      If Zn<=17 Then J:=0.3
      Else If Zn<=20 Then J:=0.32
      Else If Zn<=24 Then J:=0.34
      Else If Zn<=30 Then J:=0.36
      Else If Zn<=35 Then J:=0.37
      Else If Zn<=40 Then J:=0.38
      Else If Zn<=45 Then J:=0.39
      Else If Zn<=50 Then J:=0.4
      Else If Zn<=60 Then J:=0.41
      Else If Zn<=80 Then J:=0.42
      Else If Zn<=125 Then J:=0.43
      Else J:=0.45

   Else If Ze<=25 Then 
      If Zn<=17 Then J:=0.3
      Else If Zn<=20 Then J:=0.32
      Else If Zn<=24 Then J:=0.35
      Else If Zn<=30 Then J:=0.37
      Else If Zn<=35 Then J:=0.38
      Else If Zn<=40 Then J:=0.39
      Else If Zn<=45 Then J:=0.4
      Else If Zn<=50 Then J:=0.41
      Else If Zn<=60 Then J:=0.42
      Else If Zn<=80 Then J:=0.44
      Else If Zn<=125 Then J:=0.45
      Else J:=0.47

   Else If Ze<=35 Then 
      If Zn<=17 Then J:=0.31
      Else If Zn<=20 Then J:=0.33
      Else If Zn<=24 Then J:=0.35
      Else If Zn<=30 Then J:=0.38
      Else If Zn<=35 Then J:=0.39
      Else If Zn<=40 Then J:=0.4
      Else If Zn<=45 Then J:=0.41
      Else If Zn<=50 Then J:=0.42
      Else If Zn<=60 Then J:=0.43
      Else If Zn<=80 Then J:=0.44
      Else If Zn<=125 Then J:=0.46
      Else J:=0.48

   Else If Ze<=50 Then 
      If Zn<=17 Then J:=0.31
      Else If Zn<=20 Then J:=0.33
      Else If Zn<=24 Then J:=0.36
      Else If Zn<=30 Then J:=0.39
      Else If Zn<=35 Then J:=0.4
      Else If Zn<=40 Then J:=0.41
      Else If Zn<=45 Then J:=0.42
      Else If Zn<=50 Then J:=0.43
      Else If Zn<=60 Then J:=0.44
      Else If Zn<=80 Then J:=0.46
      Else If Zn<=125 Then J:=0.48
      Else J:=0.49

   Else If Ze<=85 Then 
      If Zn<=17 Then J:=0.32
      Else If Zn<=20 Then J:=0.34
      Else If Zn<=24 Then J:=0.36
      Else If Zn<=30 Then J:=0.39
      Else If Zn<=35 Then J:=0.41
      Else If Zn<=40 Then J:=0.42
      Else If Zn<=45 Then J:=0.43
      Else If Zn<=50 Then J:=0.44
      Else If Zn<=60 Then J:=0.45
      Else If Zn<=80 Then J:=0.47
      Else If Zn<=125 Then J:=0.49
      Else J:=0.51

   Else If Ze>85 Then 
      If Zn<=17 Then J:=0.32
      Else If Zn<=20 Then J:=0.35
      Else If Zn<=24 Then J:=0.37
      Else If Zn<=30 Then J:=0.4
      Else If Zn<=35 Then J:=0.42
      Else If Zn<=40 Then J:=0.43
      Else If Zn<=45 Then J:=0.44
      Else If Zn<=50 Then J:=0.45
      Else If Zn<=60 Then J:=0.47
      Else If Zn<=80 Then J:=0.48
      Else If Zn<=125 Then J:=0.5
      Else J:=0.52
   ;
Las variables de entrada son Zn y Ze. Si Ze tiene un valor determinado, Zn tendrá otra serie de valores, y el resultado (la variable J) dependerá de ambos. Una vez explicado, más o menos, lo que quiero, explico mi problema.

Luego escribo una operación usando la variable J, pero cuando ejecuto el programa me dice que la variable J no se inicializa, con lo que supongo que hay algún error en el código de los condicionales.

¿Cómo podría introducir condicionales dentro de otros condicionales?

Muchas gracias de antemano.
Un saludo.
Responder Con Cita
  #2  
Antiguo 18-11-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Aunque no comentas si es un error, por lo que veo en el código sólo debería salirte una advertencia de que la variable 'j'
podría no estar inicializada.

Eso sucede por que existen valores no contemplados, para los cuales el valor de 'j' quedaría indeterminado.

Bastaría con que inicialices la variable j antes de la primera condición: j:= 0; por ejemplo, para que desaparezca la advertencia.


Saludos.

Última edición por ecfisa fecha: 18-11-2010 a las 16:09:40.
Responder Con Cita
  #3  
Antiguo 18-11-2010
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola Parabol77, seguramente tu variable J es una variable local, por lo que no se inicializa automaticamente como lo hacen las variables globales a excepción de algunas como los String. Has lo que te dice ecfisa y ya no te saldra la advertencia.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
"Me Gusta", "Compartir", "Gracias" movorack La Taberna 4 24-10-2010 14:45:59
El programa se queda "colgado" mientras copia y luego "despierta" NeWsP OOP 5 10-03-2010 22:05:40
Comentario "aplastante" contra los que atacan la "piratería" Casimiro Notevi La Taberna 12 07-03-2010 14:03:02
"OBJECT OR CLASS TYPE REQUIRED" en "APPLICATION EXENAME" Xavierator Varios 3 27-10-2008 09:09:50
Necesito llamar a métodos de clases "hija" desde su clase "padre" Flecha OOP 17 20-04-2007 00:03:53


La franja horaria es GMT +2. Ahora son las 09:30:24.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi