Bennu Game Development

Foros en Español => Mesa de Ayuda => Topic started by: Futu-block on March 17, 2011, 09:04:40 AM

Title: ¿como consultar si todos los valores del array tienen el mismo valor?
Post by: Futu-block on March 17, 2011, 09:04:40 AM
¿hay alguna formula mas sencilla que:?

if (array[1] == array[2] == array[3] == array[4] == array[5] == array[6] array[...

como tenga un array[500] no te digo na... :D
Title: Re: ¿como consultar si todos los valores del array tienen el mismo valor?
Post by: panreyes on March 17, 2011, 09:21:39 AM
valor=array[0];
error=0;
from i=1 to 500;
if(array != valor) error=1; break; end
end
Title: Re: ¿como consultar si todos los valores del array tienen el mismo valor?
Post by: FreeYourMind on March 17, 2011, 09:26:30 AM
Quote from: PiXeL on March 17, 2011, 09:21:39 AM
valor=array[0];
error=0;
from i=1 to 500;
if(array != valor) error=1; break; end
end

Hay hay esos errores xD


error=0;
from i=1 to 500;
if(array[i - 1] != array[i]) error=1; break; end
end
Title: Re: ¿como consultar si todos los valores del array tienen el mismo valor?
Post by: Futu-block on March 17, 2011, 10:00:21 AM
entonces no hay ninguna funcion que lo compruebe???

y para poner todo el array a un valor? esta si lo hay no??
Title: Re: ¿como consultar si todos los valores del array tienen el mismo valor?
Post by: panreyes on March 17, 2011, 10:29:29 AM
Para poner a todo un array el mismo valor es así xD

valor=14;
from i=0 to 500;
array=valor;
end
Title: Re: ¿como consultar si todos los valores del array tienen el mismo valor?
Post by: Abram on March 17, 2011, 12:46:28 PM
Quote from: PiXeL on March 17, 2011, 10:29:29 AM
Para poner a todo un array el mismo valor es así xD

valor=14;
from i=0 to 500;
array=valor;
end


Otra manera mas eficiente si damos por hecho que 0 es vacio seria:

[code language="bennu"]
while(array!=0)
    array=valor;
    i++
end
[/code]
Title: Re: ¿como consultar si todos los valores del array tienen el mismo valor?
Post by: Drumpi on March 17, 2011, 02:17:47 PM
Para poner a cero, o a cualquier valor si el tipo de dato del array es de 1B (byte o char) hay una manera super rápida de hacerlo, pero también peligrosa:
http://wiki.bennugd.org/index.php?title=Memset

Pero lo ideal es lo que te dicen arriba: bucles. Arrays y bucles van siempre cogidos de la mano, quieras o no.
Title: Re: ¿como consultar si todos los valores del array tienen el mismo valor?
Post by: SplinterGU on March 17, 2011, 05:29:57 PM
para poner todo a 0 (salvo floats):

memset(&array[0], 0, sizeof(array));

para comparar si todo un array es igual...

for (indice=1,valor=array[0]; indice<max_indice && valor == array[indice]; indice++) end
resultado = (indice==max_indice);
Title: Re: ¿como consultar si todos los valores del array tienen el mismo valor?
Post by: panreyes on March 17, 2011, 05:41:26 PM
Quote from: FreeYourMind on March 17, 2011, 09:26:30 AM
Quote from: PiXeL on March 17, 2011, 09:21:39 AM
valor=array[0];
error=0;
from i=1 to 500;
if(array != valor) error=1; break; end
end

Hay hay esos errores xD


error=0;
from i=1 to 500;
if(array[i - 1] != array[i]) error=1; break; end
end


Discrepo. El mío requiere un poco más de RAM, pero el tuyo requiere más ciclos de CPU :)
Title: Re: ¿como consultar si todos los valores del array tienen el mismo valor?
Post by: SplinterGU on March 17, 2011, 05:51:39 PM
claro, yo no quise comentar nada, pero si, el de free consume mas, porque hace 2 indexados a array por cada ciclo del bucle... encima el if como instruccion y el salto del if y luego el salto del end...

Title: Re: ¿como consultar si todos los valores del array tienen el mismo valor?
Post by: FreeYourMind on March 17, 2011, 05:58:42 PM
Puede consumir mas pero el mio te dice que posicion tiene el valor distinto...
Title: Re: ¿como consultar si todos los valores del array tienen el mismo valor?
Post by: SplinterGU on March 17, 2011, 06:08:53 PM
en todas dice cual es la posicion del valor distinto, en la de pixel es en el i, en la tuya tambien, en la mia es indice.
Title: Re: ¿como consultar si todos los valores del array tienen el mismo valor?
Post by: panreyes on March 17, 2011, 06:10:57 PM
Venga, optimización definitiva xD

error=0;
from i=1 to 500;
if(array[i] != array[0]) error=1; break; end
end
Title: Re: ¿como consultar si todos los valores del array tienen el mismo valor?
Post by: SplinterGU on March 17, 2011, 06:12:31 PM
no pixel, estba mejor la primera, no hagas 2 indexaciones dentro del loop, es mas, si podes evitar los if e instrucciones dentro del loop mejor... aprovecha el if que se hace si o si, que es la condicion de la instruccion loop, yo recomiendo uses for.
Title: Re: ¿como consultar si todos los valores del array tienen el mismo valor?
Post by: FreeYourMind on March 17, 2011, 06:49:58 PM
No se ve el contenido de las etiquetas code, no se porque...
Title: Re: ¿como consultar si todos los valores del array tienen el mismo valor?
Post by: SplinterGU on March 17, 2011, 07:31:33 PM
si no lo seteas no lo ves.
Title: Re: ¿como consultar si todos los valores del array tienen el mismo valor?
Post by: FreeYourMind on March 17, 2011, 07:40:40 PM
Quote from: PiXeL on March 17, 2011, 06:10:57 PM
Venga, optimización definitiva xD



error=0;
from i=1 to 500;
if(array != array[0]) error=1; break; end
end

Asi se puede ver, no entendi lo de setear...
Title: Re: ¿como consultar si todos los valores del array tienen el mismo valor?
Post by: SplinterGU on March 17, 2011, 07:52:57 PM
no me acuerdo como es... y no encuento los fuentes del foro...