Noticias

¡Ayuda a la Comunidad GM, haz una donación!

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Autor Tema: Encontrar el número del primer índice de un array  (Leído 620 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado bygdle

  • Flota de Justicia Particular.
  • Moderadores globales
  • Okupa
  • *
  • Puntos: 2841
  • Mensajes: 1.715
  • Agradecido: 150 veces
  • Sexo: Masculino
  • Thomas the dank engine.
    • Ver Perfil
en: Diciembre 28, 2015, 06:23:31 pm
Hola, estaba haciendo un pequeño sistema para  separa información con strings, todo va perfecto, pero tengo un problema: necesito encontrar el número del primer índice del array. Busqué información en la documentación de yoyo y sólo me encontré coñ tres funciones: array_length_1d, array_length_2d y array_heigth_2d. Pero ninguna de estas tres sirve, ya que si tengo un array así:
array[11] = 0
array[12] = 0
array[13] = 0

El resultado que devolverá la función array_length_1d será 3. Lo mismo con las otras funciones, siendo que el resultado que necesito obtener es 11.

Agradecería me ayudaran con esto
Gracias de antemano
« última modificación: Diciembre 28, 2015, 06:41:09 pm por NiuWeb »

alaberga regué el café.

BA:STFW&RTFM
 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado arcangelcaos

Respuesta #1 en: Diciembre 28, 2015, 07:10:51 pm
Perdon, pero si no estoy confundido, la primera posición de un array siempre es la 0.
Si tu pones array[11]  esa es la posición 11, no la 1. No quedras decir la array[1,1]??? Esto es un array bidimensional COLUMNA Y FILA, el otro no.

No se si me he explicado bien??

 


Desconectado bygdle

  • Flota de Justicia Particular.
  • Moderadores globales
  • Okupa
  • *
  • Puntos: 2841
  • Mensajes: 1.715
  • Agradecido: 150 veces
  • Sexo: Masculino
  • Thomas the dank engine.
    • Ver Perfil
Respuesta #2 en: Diciembre 28, 2015, 07:50:44 pm
Pues sí, estás confundido. La primera posición de un array no es necesariamente la 0, todo depende de cómo se cree. Y es un array unidimensional, ya que escribí claramente [11], no [1,1]. Tengo bien claro la diferencia, y lo escribí sabiéndolo.
Por ejemplo, si hago esto:
for(i=11;i<14;i++)
 {
   array[i] = 0;
 }

Simplemente se crea el array desde el 11 hasta el 13. Y dime, ¿dónde está la posición 0?
Lo que necesito es, por ejemplo, en este caso, es una manera de hallar el número 11 que es el primer índice del array
« última modificación: Diciembre 28, 2015, 08:01:02 pm por NiuWeb »

alaberga regué el café.

BA:STFW&RTFM
 


Desconectado arcangelcaos

Respuesta #3 en: Diciembre 28, 2015, 09:27:39 pm
http://www.aprendegamemaker.com/uso-arrays/

Si tu pones array[11] =1. El solo reserva la 0 hasta la 10, por lo tanto la 0 existe, pero es nula.

 


Desconectado bygdle

  • Flota de Justicia Particular.
  • Moderadores globales
  • Okupa
  • *
  • Puntos: 2841
  • Mensajes: 1.715
  • Agradecido: 150 veces
  • Sexo: Masculino
  • Thomas the dank engine.
    • Ver Perfil
Respuesta #4 en: Diciembre 28, 2015, 09:43:13 pm
Citar
Si ponemos el índice 2 primero al crear/inicializar la variable, Game Maker ya reserva el espacio para 0 y para 1
Vamos, ahí mismo lo dice: reserva
A ver...doy todo lo que tengo para que se entienda mejor:

Necesito saber desde qué posición he agregado datos YO, porque una cosa es reservar el array (que obviamente le da un valor de 0) y otra es agregarle un valor YO. me explico:

tengo tres indices en el array, el 5, el 6, y el 7. A esos tres les he dado un valor de 0. Eso hace que, desde el 0 hasta el 7, todos tengan un valor de 0, pero quiero saber desde cuál le he agregado el valor YO.....¿mejor?

alaberga regué el café.

BA:STFW&RTFM
 


Desconectado arcangelcaos

Respuesta #5 en: Diciembre 28, 2015, 09:46:39 pm
Ok, ahora si se entiende.

El problema es que si les das valor 0, todo tienen 0, por lo tanto como diferenciarlos, hay esta la cuestión.

Voy a ver si veo algo, pero lo veo difícil

No se si seria viable o no, pero no podrias crear un array desde el principo y asignarles a todas las posiciones por ejemplo MiArray [99] = "nulo"
y luego
Código: [Seleccionar]
for i=0; i< array_legth(MiArray)-1;i+=1
{
MiArray [i]="nulo"
}

Y asi cuando te haga falta, solo comprar el valor dado, y si no es sigues al siguiente, osease
Código: [Seleccionar]
i=0
do until aux <> "nulo"
{aux = MiArray[i]
i +=1
}

o alguna cosa por estilo???
« última modificación: Diciembre 28, 2015, 09:56:44 pm por arcangelcaos »

 


Desconectado bygdle

  • Flota de Justicia Particular.
  • Moderadores globales
  • Okupa
  • *
  • Puntos: 2841
  • Mensajes: 1.715
  • Agradecido: 150 veces
  • Sexo: Masculino
  • Thomas the dank engine.
    • Ver Perfil
Respuesta #6 en: Diciembre 28, 2015, 10:01:10 pm
mmm...no sé si sería viable. Es que el sistema que estoy haciendo es muy delicado, y si llegase, por casualidad alguna cadena de más entrara, se jode todo. Y además, pienso publicarlo para que la gente pueda usarlo, así que si alguien escribe nulo como valor, pues se va al carajo todo.
No sé, pienso que debería haber alguna forma de desactivar ese "autorrellenado" de índices, que los deje vacíos, sin nada, como en el GM8 que tienes la opción de asignar o no el valor de 0 a las variables no definidas.
PD: Tu código de do until no parece muy bien escrito...xD

alaberga regué el café.

BA:STFW&RTFM
 


Desconectado arcangelcaos

Respuesta #7 en: Diciembre 28, 2015, 10:07:32 pm
jajaajaa, podrias cambiar el nulo por 99999 ejemplo, pero bueno, no conozco el gm8, asi que vere algo mas.

El problema es que también programo en algo en VBasic y alguna que otra vez se me va la pinza y mezclo códigos, menos mal que te avisan, que si no.

 


Desconectado Guacusio

Respuesta #8 en: Diciembre 29, 2015, 03:43:31 am
Edit:

Es un tanto extraño definir arrays con tramos vacíos. Si tienes que relacionar un índice para cada variable, ¿no te convendría usar una lista un mapa en vez de un array?
« última modificación: Diciembre 29, 2015, 03:58:34 am por Guacusio »


 


Desconectado jmbs19

  • Asiduo
  • *
  • Puntos: 252
  • Mensajes: 216
  • Sexo: Masculino
    • Ver Perfil
    • YGE Productions
Respuesta #9 en: Diciembre 29, 2015, 01:32:56 pm
digo y solo digo que si tu quieres saber que "indice" tiene un valor dentro de un array en primer lugar no tienes que saber cual es ese valor? en ese caso podrias hacer un recorrido con un while que vaya sumando hasta que encuentre el valor en el array y la posicion la guardas como una variable

array[x]="el array con sus datos ya creados"
valor="lo que buscaras"
i=0
indice = 0
do
{
if array[i]=valor
    {
      indice=i
      i=array_length_1d
    }
}until(i<array_length_1d(array))

en el codigo de arriba, que puede mejorarse mucho, recorres el array buscando tu valor y si lo encuentra devuelve su posicion, si no devuelve 0

no puedo creer que me hice un tumblr.
YGE Productions yep, otro tumblr.
y como no, el manual tambien