Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Eliminar Un Elemento De Un Array
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Eliminar Un Elemento De Un Array 
 
Buenas!.

¿ Siempre es por el índice, nunca directamente por el valor ?.

Dentro de un array de enteros, no vi otra forma que:

lista.Remove(lista.Find(eliminados[x]))  
 


Es que en Python Remove es por el valor.  

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Eliminar Un Elemento De Un Array 
 
Comento:

Estoy haciendo un ejercicio con gambas y para ello he tenido que retomar conceptos con array.
Estoy barajando colecciones y array. Ya que puede que los necesite a los dos.

El ejercicio que he usado para refrescar conocimiento que seguramente ya puse en su día en la comunidad está basado
en unos los ejemplos del antiguo curso de Python de Coursera.

En el ejemplo se trata de eliminar los números impares, en caso de gambas, usando arrays.

Lo más importante a tener en cuenta es que no podemos eliminar un elemento de un array sobre el cual
estamos iterando. Con lo que necesitamos un segundo array.

En el primer caso, seria la forma tradicional.

Public Sub Main()
  
  Dim numeros As Integer[] = [1, 7, 2, 34, 8, 7, 2, 5, 14, 22, 92, 48, 76, 15, 7]
  Dim otrosnumeros As Integer[]
  
  otrosnumeros = EliminaImpares1(numeros)
 
End

Public Function EliminaImpares1(lista As Integer[]) As Integer[]
  
  Dim x As Integer
  Dim eliminados As New Integer[]
  
  For x = 0 To lista.Max
    If lista[x] Mod 2 = 1 Then
      eliminados.Add(lista[x])
    Endif
  Next
  
  For x = 0 To eliminados.Max
    lista.Remove(lista.Find(eliminados[x]))        
  Next

  Return lista
  
End
 


Ahora otra forma de pensar que es probable que no se nos ocurra a la primera,
es que si queremos eliminar los impares, solo nos interesa los números pares,
Podemos eliminar parte de código de la anterior función y solo añadir los números pares
y devolver estos.

Public Sub Main()
  
  Dim numeros As Integer[] = [1, 7, 2, 34, 8, 7, 2, 5, 14, 22, 92, 48, 76, 15, 7]
  Dim otrosnumeros As Integer[]
  
  otrosnumeros = EliminaImpares2(numeros)
  
  
End

Public Function EliminaImpares2(lista As Integer[]) As Integer[]
  
  Dim x As Integer
  Dim numpares As New Integer[]
  
  For x = 0 To lista.Max
    If lista[x] Mod 2 = 0 Then
      numpares.Add(lista[x])
    Endif
  Next
    
  Return numpares
  
End
 


No os quiero comentar  totalmente en que consiste el ejercicio principal, aun.
Solo digo que tiene que ver con mi trabajo y en el cual controlo las habitaciones que van quedando, sus tipos.
Esto luego se va aplicando a un mes, ya son treinta días por ejemplo. Y así va mi ejercicio.
Aunque me orientéis no me desveléis toda la sorpresa.  

Mi idea es usar colecciones y arrays para resolverlo. Tengo tipos de habitación, números y días.
Así que en un día. Un cliente puede pedir doble, individuales, matrimoniales..se van eliminado de la lista disponible,
llegará un momento que no haya habitaciones de un tipo..(quieto parado)...eso lo podemos aplicar a un día y luego
ampliarlo a un mes.

Y eso que no quería contarlo todo..me cachis en la mar.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
última edición por Shell el Jueves, 06 Abril 2017, 13:38; editado 1 vez 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Eliminar Un Elemento De Un Array 
 
Shell escribió: [Ver mensaje]
Lo más importante a tener en cuenta es que no podemos eliminar un elemento de un array sobre el cual
estamos iterando.

En este caso podemos.


Shell escribió: [Ver mensaje]
Con lo que necesitamos un segundo array.

No hace falta un segundo array.


Exemplum simplex:
Public Sub Main()
  
  Dim numeros As Integer[] = [1, 7, 2, 34, 8, 7, 2, 5, 14, 22, 92, 48, 76, 15, 7]
  Dim i As Integer
  
   EliminaImpares1(numeros)
  
   For Each i In numeros
     Print i
   Next
 
End

Public Function EliminaImpares1(lista As Integer[])   ' Paso de parametro por dirección
  
  Dim x As Integer
  
   While x < lista.Count
     If lista[x] Mod 2 > 0 Then
       lista.Remove(x)
       Continue
     Endif
     Inc x
   Wend
  
End

 



 
última edición por vuott el Jueves, 13 Abril 2017, 22:44; editado 2 veces 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Eliminar Un Elemento De Un Array 
 
Vuott:

Pero estas eliminando elementos de un array en el cual estas usando un bucle while,
con lo que el número de elementos varía cada vez que eliminas uno. Además de
que eso varia el índice del elemento.

Pues a mi no me gusta eso de que sea mayor que cero.  
Eso le falta depuración, piano piano. (Molto leggermente e precipitare.)

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Eliminar Un Elemento De Un Array 
 
Te recomiendo que uses varias String[], tantas como entidades o propiedades de las mismas necesites.

Por ejemplo:
stxRooms para las habitaciones
stxState para el estado de reserva de las habitaciones, por ejemplo.
stxType para el tipo de habitación.
etc.
Si tenes 80 habitaciones, entonces tenes una lista de 80 estados y 80 tipos. y ya esta, solo con un cursor integer navegas por las matrices para obtener o cambiar el dato que desees.

Saludos.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Eliminar Un Elemento De Un Array 
 
Shell escribió: [Ver mensaje]
Pero estas eliminando elementos de un array en el cual estas usando un bucle while,
con lo que el número de elementos varía cada vez que eliminas uno. Además de
que eso varia el índice del elemento.


No veo porqué monta tanto problema !  
 



 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Eliminar Un Elemento De Un Array 
 
Vuott:

Citar:

No veo porqué monta tanto problema !


Habría que verlo en determinados momentos si se produce error.
Se de sobra que en el videotutorial que tengo del curso de Python, acaba saltándose números.
En Python ocurre por el problema de manejo de índices.
¿ En C no tienes un problema parecido ?. Seria interesante que vieras el vídeo.
Aunque sea de Python no entraña mucha dificultad....jijiji..a ver si pica.  

Pues mira por donde encontré un vídeo sobre listas en el "querido" Python de esos que tanto te gustan.  

Tincho:

Citar:

Si tenes 80 habitaciones, entonces tenes una lista de 80 estados y 80 tipos. y ya esta, solo con un cursor integer navegas por las matrices para obtener o cambiar el dato que desees.


No, estados son dos. O esta cancelada o esta o.k. 80 tipos, Uaaau!. Hombre no es por ser modesto, pero con menos de diez tipo sobra.
Pero es otro tema, que aun no hice por dedicarme. Se puede crear una clase del tipo habitación, una del tipo reserva, tipo cliente, etc,etc..
Suelo mezclar temas.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Eliminar Un Elemento De Un Array 
 
Shell escribió: [Ver mensaje]
Pero estas eliminando elementos de un array...


...el titulo del tu asunto es: " Eliminar Un Elemento De Un Array ".  whistle

Es claro que un "Elemento" del array es una cosa, y el "valor", contenido en un elemento del array, es otra cosa: " Elementum atque Valor: nulla proportio ! "



Shell escribió: [Ver mensaje]
Pues a mi no me gusta eso de que sea mayor que cero.

Bueno, podemos usar esta linea:
If lista[x] And 1 Then
 ......

 



 
última edición por vuott el Sabado, 15 Abril 2017, 00:15; editado 3 veces 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Eliminar Un Elemento De Un Array 
 
Shell escribió: [Ver mensaje]
...No, estados son dos. O esta cancelada o esta o.k. 80 tipos, Uaaau!....

No lo comprendiste, tal vez explique mal. lo que te quiero decir es que como tienes una cantidad de habitaciones fijas te conviene tener la lista de habitaciones en una matriz y la lista de estados en otra, vas a tener el item estado tantas veces como habitaciones tengas en la lista de habitaciones
Como en este ejemplo:
 listas
Hagas lo que hagas en tu programa siempre lo vas a hacer contra una habiracion. Para cambiar el estado cambias el  item en la lista de estados para el indice de la habitacion actual.
Para nada me parece conveniente quitar o poner ítemes en la listas.

Saludos.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Agregar Y Eliminar Contactos estevan6 Bases de Datos 7 Miercoles, 13 Enero 2016, 20:20 Ver último mensaje
v3ctor
No hay nuevos mensajes Eliminar Un Control Ricardo Prieto General 13 Viernes, 14 Octobre 2016, 18:22 Ver último mensaje
tincho
No hay nuevos mensajes Ordenar Array De Array Shell General 1 Sabado, 29 Septiembre 2018, 19:34 Ver último mensaje
Shell
No hay nuevos mensajes Insertar Array Dentro De Un Array Shell General 1 Lunes, 29 Junio 2020, 13:57 Ver último mensaje
vuott
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron