[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No podría ir a ningún sitio sin ti - 2. - página 424

 
reeditado
Ilya12345:

Hola a todos! Llevo días trasteando con el código, pero no hay suerte! La condición no funciona. A la variable Z se le asigna siempre el último valor, en este caso equivale a Z=1. ¿Qué tengo que arreglar para que las condiciones funcionen? ¿Quién puede ayudar?

X = MathFloor(PrecioObjetivo);
Y = (Precio objetivo - X);
{
si (0 < Y <= 0,03125)
{Z = 0.03125;}

si (0,03126 < Y <= 0,0625)
{Z = 0.0625;}

si (0,0625 < Y <= 0,09375)
{Z = 0.09375;}

si (0,09375 < Y <= 0,125)
{Z = 0.125;}

si (0,125 < Y <= 0,15625)
{Z = 0.15625;}

si (0,15625 < Y <= 0,1875)
{Z = 0.1875;}

si (0,1875 < Y <= 0,21875)
{Z = 0.21875;}

si (0,21875 < Y <= 0,25)
{Z = 0.25;}

si (0,25 < Y <= 0,28125)
{Z = 0.28125;}

si (0,28125 < Y <= 0,3125)
{Z = 0.3125;}

si (0,3125 < Y <= 0,34375)
{Z = 0.34375;}

si (0,34375 < Y <= 0,375)
{Z = 0.375;}

si (0,375 < Y <= 0,40625)
{Z = 0.40625;}

si (0,40625 < Y <= 0,4375)
{Z = 0.4375;}

si (0,4375 < Y <= 0,46875)
{Z = 0.46875;}

si (0,46875 < Y <= 0,5)
{Z = 0.5;}

si (0,5 < Y <= 0,53125)
{Z = 0.53125;}

si (0,53125 < Y <= 0,5625)
{Z = 0.5625;}

si (0,5625 < Y <= 0,59375)
{Z = 0.59375;}

si (0,59375 < Y <= 0,625)
{Z = 0.625;}

si (0,625 < Y <= 0,65625)
{Z = 0.65625;}

si (0,65625 < Y <= 0,6875)
{Z = 0.6875;}

si (0,6875 < Y <= 0,71875)
{Z = 0.71875;}

si (0,71875 < Y <= 0,75)
{Z = 0.75;}

si (0,75 < Y <= 0,78125)
{Z = 0.78125;}

si (0,78125 < Y <= 0,8125)
{Z = 0.8125;}

si (0,8125 < Y <= 0,84375)
{Z = 0.84375;}

si (0,84375 < Y <= 0,875)
{Z = 0.875;}

si (0,875 < Y <= 0,90625)
{Z = 0.90625;}

si (0,90625 < Y <= 0,9375)
{Z = 0.9375;}

si (0,9375 < Y <= 0,96875)
{Z = 0.96875;}

si (0,96875 < Y <= 1)
{Z = 1;}
}
W = X + Z;




Ilya12345:

Hola a todos! Llevo días trasteando con el código, pero sin éxito! La condición no funciona. A la variable Z se le asigna siempre el último valor, en este caso es igual a Z=1. ¿Qué tengo que arreglar para que las condiciones funcionen? ¿Puede alguien ayudarme?


Prueba esto

X = MathFloor(PriceTarget);
Y = (PriceTarget - X);
{
if (0 < Y <= 0.03125)
Z = 0.03125;
  else
    if (0.03126 < Y <= 0.0625)
    Z = 0.0625;
      else
        if (0.0625 < Y <= 0.09375)
        Z = 0.09375;
          else
            if (0.09375 < Y <= 0.125)
            Z = 0.125;
              else
                if (0.125 < Y <= 0.15625)
                Z = 0.15625;
                  else
                  if (0.15625 < Y <= 0.1875)
                  Z = 0.1875;
                    else
                      if (0.1875 < Y <= 0.21875)
                      Z = 0.21875;
                        else
                          if (0.21875 < Y <= 0.25)
                          Z = 0.25;
else
if (0.25 < Y <= 0.28125)
Z = 0.28125;
  else
    if (0.28125 < Y <= 0.3125)
    Z = 0.3125;
      else
        if (0.3125 < Y <= 0.34375)
        Z = 0.34375;
          else
            if (0.34375 < Y <= 0.375)
            Z = 0.375;
              else
                if (0.375 < Y <= 0.40625)
                Z = 0.40625;
                  else
                    if (0.40625 < Y <= 0.4375)
                    Z = 0.4375;
                      else
                        if (0.4375 < Y <= 0.46875)
                        Z = 0.46875;
else
if (0.46875 < Y <= 0.5)
Z = 0.5;
  else
    if (0.5 < Y <= 0.53125)
    Z = 0.53125;
      else
        if (0.53125 < Y <= 0.5625)
        Z = 0.5625;
          else
            if (0.5625 < Y <= 0.59375)
            Z = 0.59375;
              else
                if (0.59375 < Y <= 0.625)
                Z = 0.625;
                  else
                    if (0.625 < Y <= 0.65625)
                    Z = 0.65625;
                      else
                        if (0.65625 < Y <= 0.6875)
                        Z = 0.6875;
                          else
                            if (0.6875 < Y <= 0.71875)
                            Z = 0.71875;
else
if (0.71875 < Y <= 0.75)
Z = 0.75; 
  else
    if (0.75 < Y <= 0.78125)
    Z = 0.78125;
      else
        if (0.78125 < Y <= 0.8125)
        Z = 0.8125; 
          else
            if (0.8125 < Y <= 0.84375)
            Z = 0.84375;
              else
                if (0.84375 < Y <= 0.875)
                Z = 0.875;
                  else
                    if (0.875 < Y <= 0.90625)
                    Z = 0.90625;
                      else
                        if (0.90625 < Y <= 0.9375)
                        Z = 0.9375;
                          else
                            if (0.9375 < Y <= 0.96875)
                            Z = 0.96875;
                              else
                                if (0.96875 < Y <= 1)
                                Z = 1;
} 
W = X + Z;
 
sergeev:
transferido de


pruébalo así.


obras!!!! ¡¡¡Gracias de verdad!!! sobre todo por la rapidez!
 
Ilya12345:

obras!!!! ¡¡¡Gracias de verdad!!! sobre todo por la rapidez!


En algún lugar como este:

double mK[] ={0,0.03125,0.0625....,1};



 

   for (int i=0;i<(ArraySize(mK)-1);i++)
   
   {
    
     if (y>mK[i] && y<=mK[i+1]) 
        {z=mK[i+1];
         break;
        }
   } 
 

Tengo dos preguntas sobre las variables globales.

Pregunta 1: está escrito que se almacenan en el disco duro. ¿El tiempo de acceso a ellas es tan largo como cuando se leen datos de un archivo o tan rápido como cuando se lee una variable ordinaria?

Pregunta 2: Dice que las variables globales sólo pueden ser de tipo double, pero ¿qué pasa si quiero almacenar datos de otros tipos, por ejemplo, int o string?

 
KONDOR:

1. No puedo quejarme de la velocidad.

2. ¿dónde está escrito? todos los tipos pueden ser globales.

"No quejarse" no es realmente un concepto matemático.

Está escrito aquí:

 
Elenn:

"No quejarse" no es realmente un concepto matemático.

Está escrito aquí:

Dice que la variable global se guarda en el disco duro y se almacena durante un tiempo determinado. Mientras el programa (terminal, indicador, asesor) está en marcha, todas las variables están en la RAM, es decir, el valor del P.G. sólo se leerá del disco cuando se lance el programa por primera vez.
 
Temnyj:
Dice que la variable global se guarda en el disco duro y se almacena durante un tiempo determinado. Mientras se ejecuta el programa (terminal, indicador, Asesor Experto), todas las variables se almacenan en la memoria RAM, es decir, el valor de G.P. sólo se leerá del disco cuando se inicie el programa por primera vez.

Gracias por la información. ¿Y la segunda pregunta?
 
Elenn:

Gracias por la información. ¿Y la segunda pregunta?

No entiendo muy bien la segunda pregunta.

Es mejor que lo leas aquí.

 
Temnyj:

No entiendo muy bien la segunda pregunta.

Quizás quiera leerlo aquí


Las variables se pierden al salir del programa (reiniciar el ordenador, etc.). Excepto las variables globales, porque se almacenan en el disco duro. Pero sólo pueden ser del tipo double. ¿Qué hacer si es necesario almacenar variables de otros tipos (int o string, por ejemplo)? ¿Qué es lo que no está claro aquí?

 
Elenn:


Cualquier variable se perderá al salir del programa (reiniciar el ordenador, etc.). Excepto las variables globales, porque se almacenan en el disco duro. Pero sólo pueden ser de tipo double. ¿Qué hacer si es necesario almacenar variables de otros tipos (int o string, por ejemplo)? ¿Qué es lo que no está claro aquí?

Existen variables globales del nivel actual del programa y variables globales del nivel terminal. Los primeros se reinician al desinicializar, los segundos no. Está claro que se refiere a esto último.

Por supuesto, sería difícil, por ejemplo, ocultar un array como el doble de 100 elementos en tales variables. Es mejor no utilizarlos para estos fines.

Utilice un archivo para almacenar datos de cualquier tipo. No hay limitaciones. Y este método lo utiliza todo el mundo en todo momento.