tengo una comparacion muy larga que me dá error, no comprendo por que...
Quoteif (mojito[1] and mojito[2] and mojito[3] and mojito[4] and mojito[4] and mojito[5] => nivel)
resulta que cuando algun dato del array es negativo me lo acepta, incluso sin tener que que ser el mismo que el nivel...
nah, tenes que hacer comparacion por comparacion... ahi estas diciendo que cualquiera de 1 a 4 son distintos de 0, y que el 5 >= nivel, entonces se cumple la condicion.
ademas mojito[4] esta repetido xD
Es que se toma siempre 2 del numero 4 ;D
claro, lo que hace el alcohol ;D
y otra cosa relacionada, ya que las comparaciones no son tan faciles como creia, para algo como centrar en una coordenada, por ejemplo, ¿como se puede simplificar esto?
Quote
if (x > 200 and x < 100)
por que no se puede poner
Quote
if (x > 200 and < 100)
igual que equis me refiero a otra variable o suma, que a partir de la variable se ponga el rango deseado
¿no?
Poner sólo "if (x > 200 and < 100)" seria un disparate autentico, crear un compilador que soportará eso seria un calvario (pues tendria que saber que el '<' se referia al x anterior), mission casi imposible, te aconsejaria a mirar algun libro de lógica o compiladores, no para que aprendas como van pero sólo para que veas el pequeño gran disparate que has sugerido xD
Simplificado seria algo asi:
if (100 > x > 200)
aunque no creo que chute en Bennu (estoy medio dormido xD prueba a ver)
joño, sabia que se podia simplificar :D
¿Rula? Otra cosa nueva que sé xDDDDDDD Esa simplificación me recuerda mucho al código C, ahí se puede hacer algo así
Quote from: FreeYourMind on January 09, 2012, 08:49:42 AM
Poner sólo "if (x > 200 and < 100)" seria un disparate autentico, crear un compilador que soportará eso seria un calvario (pues tendria que saber que el '<' se referia al x anterior), mission casi imposible, te aconsejaria a mirar algun libro de lógica o compiladores, no para que aprendas como van pero sólo para que veas el pequeño gran disparate que has sugerido xD
Simplificado seria algo asi:
if (100 > x > 200)
aunque no creo que chute en Bennu (estoy medio dormido xD prueba a ver)
no, eso no es correcto... ni en BennuGD ni en ningun lenguaje...
lo que hara eso es ejecutar primero
( x > 200) ( 100 > x ) y al resultado de eso (que dara 1 o 0) compararlo con 200, cosa que nunca se cumplira el if... porque seria o if ( 1 > 200 ) o if ( 0 > 200 )
prueba:
splinter@splinter-portatil:/tmp> cat p.c
#include <stdio.h>
int main( int argc, char *argv[])
{
int x;
x=100; if (100 > x > 200) printf("1\n");else printf("0\n");
x=0; if (100 > x > 200) printf("1\n");else printf("0\n");
x=1; if (100 > x > 200) printf("1\n");else printf("0\n");
x=200; if (100 > x > 200) printf("1\n");else printf("0\n");
x=100; if (100 > x > 0) printf("1\n");else printf("0\n");
}
splinter@splinter-portatil:/tmp> ./p
0
0
0
0
0
Quote from: Futublock on January 09, 2012, 09:47:31 AM
joño, sabia que se podia simplificar :D
la forma de simplicar lo que quieres es hacer
if ( x > 200 and x < 100 )
aunque esa condicion nunca se ejecutar, porque un numero nunca puede ser mayor a 200 y menor a 100 a la vez.
Quote from: BlySntK on January 09, 2012, 11:06:16 AM
¿Rula? Otra cosa nueva que sé xDDDDDDD Esa simplificación me recuerda mucho al código C, ahí se puede hacer algo así
c??? imposible, ni de coña...
Macho, si la condicion es imposible, es logico que no funcione en mi ejemplo, lo mismo ocurre en el tuyo!
Pero si es un x posible, la condición es valida tanto como la tuya, y la mia es mas simplificada.
free, a ver si lo explico facil...
lo que estas diciendo como simplificada no existe... es imposible...
no entendes que una condicion retorna 0 o 1? sabes lo que son precedencia de operadores?
si pones a > b > c... nunca sera si b < a y b > c... sera siempre... a > ( b > c ) (a>b) > c... o sea, ejecuta primero b > c a>b y al resultado de eso (como resultados posibles solo obtendras, 0 o 1) lo compara contra "a" c... lo que seria: a > 0 u a > 1 c > 0 o c > 1...
nunca sera valida tu simplificacion, no en computacion... en matematicas puede serlo, pero en computacion, no...
igual, tienes razon, el ejemplo estaba mal...
aca pongo el correcto para que lo entiendas...
splinter@splinter-portatil:/tmp> ./p
0
0
0
0
splinter@splinter-portatil:/tmp> cat p.c
#include <stdio.h>
int main( int argc, char *argv[])
{
int x;
x=150; if (200 > x > 100) printf("1\n");else printf("0\n");
x=0; if (200 > x > 100) printf("1\n");else printf("0\n");
x=1; if (200 > x > 100) printf("1\n");else printf("0\n");
x=100; if (100 > x > 0) printf("1\n");else printf("0\n");
}
splinter@splinter-portatil:/tmp>
me autocorrijo... el > separa el termino, asi que primero se ejecuta a > b y al resultado de eso 0 o 1, se le use para c, asi ( a > b ) > c
splinter@splinter-portatil:/tmp> ./p
200
100
0
200
100
0
200
100
0
100
0
splinter@splinter-portatil:/tmp> cat p.c
#include <stdio.h>
int v200()
{
printf("200\n");
return 200;
}
int v100()
{
printf("100\n");
return 100;
}
int main( int argc, char *argv[])
{
int x;
x=150; if (v200() > x > v100()) printf("1\n");else printf("0\n");
x=0; if (v200() > x > v100()) printf("1\n");else printf("0\n");
x=1; if (v200() > x > v100()) printf("1\n");else printf("0\n");
x=50; if (v100() > x > 40) printf("1\n");else printf("0\n");
}
detallando un poco mas...
splinter@splinter-portatil:/tmp> make p
cc p.c -o p
splinter@splinter-portatil:/tmp> ./p
0
0
0
0
1
0
0
1
splinter@splinter-portatil:/tmp> cat p.c
#include <stdio.h>
int v200()
{
// printf("200\n");
return 200;
}
int v100()
{
// printf("100\n");
return 100;
}
int main( int argc, char *argv[])
{
int x;
x=150; if (v200() > x > v100()) printf("1\n");else printf("0\n");
x=0; if (v200() > x > v100()) printf("1\n");else printf("0\n");
x=1; if (v200() > x > v100()) printf("1\n");else printf("0\n");
x=50; if (v100() > x > 40) printf("1\n");else printf("0\n");
x=150; if (v200() > x && x > v100()) printf("1\n");else printf("0\n");
x=0; if (v200() > x && x > v100()) printf("1\n");else printf("0\n");
x=1; if (v200() > x && x > v100()) printf("1\n");else printf("0\n");
x=50; if (v100() > x && x > 40) printf("1\n");else printf("0\n");
}
como sea, no se puede simplificar como decis...
y sorry por la confusion que pude generar...
ahi fixee los mensajes para que si se hace una busqueda no se tenga una informacion erronea...
repito, como sea, no se puede simplificar de esa forma.
Quote from: SplinterGU on January 09, 2012, 01:18:04 PM
Quote from: FreeYourMind on January 09, 2012, 08:49:42 AM
Poner sólo "if (x > 200 and < 100)" seria un disparate autentico, crear un compilador que soportará eso seria un calvario (pues tendria que saber que el '<' se referia al x anterior), mission casi imposible, te aconsejaria a mirar algun libro de lógica o compiladores, no para que aprendas como van pero sólo para que veas el pequeño gran disparate que has sugerido xD
Simplificado seria algo asi:
if (100 > x > 200)
aunque no creo que chute en Bennu (estoy medio dormido xD prueba a ver)
no, eso no es correcto... ni en BennuGD ni en ningun lenguaje...
lo que hara eso es ejecutar primero ( x > 200) ( 100 > x ) y al resultado de eso (que dara 1 o 0) compararlo con 200, cosa que nunca se cumplira el if... porque seria o if ( 1 > 200 ) o if ( 0 > 200 )
prueba:
splinter@splinter-portatil:/tmp> cat p.c
#include <stdio.h>
int main( int argc, char *argv[])
{
int x;
x=100; if (100 > x > 200) printf("1\n");else printf("0\n");
x=0; if (100 > x > 200) printf("1\n");else printf("0\n");
x=1; if (100 > x > 200) printf("1\n");else printf("0\n");
x=200; if (100 > x > 200) printf("1\n");else printf("0\n");
x=100; if (100 > x > 0) printf("1\n");else printf("0\n");
}
splinter@splinter-portatil:/tmp> ./p
0
0
0
0
0
Quote from: Futublock on January 09, 2012, 09:47:31 AM
joño, sabia que se podia simplificar :D
la forma de simplicar lo que quieres es hacer
if ( x > 200 and x < 100 )
aunque esa condicion nunca se ejecutar, porque un numero nunca puede ser mayor a 200 y menor a 100 a la vez.
Quote from: BlySntK on January 09, 2012, 11:06:16 AM
¿Rula? Otra cosa nueva que sé xDDDDDDD Esa simplificación me recuerda mucho al código C, ahí se puede hacer algo así
c??? imposible, ni de coña...
Dije que me lo recordaba, no que fuera la misma simlificación porque en mi vida había visto algo semejante. Lo que sí he visto muchas veces es el condicional if simplificado al condicional: ? que creo que era; ? 1:0 no lo recuerdo bien
Quote from: SplinterGU on January 09, 2012, 01:18:04 PM
if ( x > 200 and x < 100 )
aunque esa condicion nunca se ejecutar, porque un numero nunca puede ser mayor a 200 y menor a 100 a la vez.
c??? imposible, ni de coña...
correccion, queria decir un numero mayor de cien y menor de doscientos: (x > 100 and x < 200)
habia otra forma de poner el
and que es || pero sigue siendo lo mismo ¿no? o al final sirve para no poner la x (en este caso)
|| no es and es o, es decir, or... el and es &&
vamos che, que no es tan dificil poner las condiciones completas como siempre!
y, por lo menos para mi, mientras menos abreviada sea la cosa mas facil de entender resulta.
no futu...
alias:
and es &&
or es ||
bueno, pero solo lo sustituye y ya está, no hace nada raro ¿no?
como? no entendi...
si te referis a que si && es lo mismo que poner AND, si preguntas eso, es lo mismo, es un alias, otra forma de escribirlo, nada mas...
lo mismo para el OR es lo mismo que ||
corecto, eso mismo, maestro astilla :D
xDDDDDDDDDDDDDDDDDDDDDDDDD