Eliminar Un Elemento De Un Array


Objetivo: 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

Objetivo: 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

última edición por Shell el Jueves, 06 Abril 2017, 13:38; editado 1 vez
Objetivo: 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
Perfil MP  
Objetivo: 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

Objetivo: 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.

Perfil MP  
Objetivo: 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 !

Perfil MP  
Objetivo: 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

Objetivo: 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
Perfil MP  
Objetivo: 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.

Perfil MP  

Página 1 de 1


  
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

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 4.4744s (PHP: -95% SQL: 195%)
Consultas SQL: 48 - Debug off - GZIP Activado