|
Página 1 de 1
|
Eliminar Un Elemento De Un Array
Autor |
Mensaje |
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
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"
|
#1 Jueves, 06 Abril 2017, 13:04 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
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
|
#2 Jueves, 06 Abril 2017, 13:37 |
|
|
vuott
Analista Programador
Registrado: Agosto 2013
Mensajes: 2086
Edad: 60 Ubicación:
|
Re: Eliminar Un Elemento De Un Array
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.
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
|
#3 Jueves, 13 Abril 2017, 22:42 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
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"
|
#4 Viernes, 14 Abril 2017, 08:34 |
|
|
tincho
Analista Programador
Registrado: Noviembre 2014
Mensajes: 2565
Edad: 48 Ubicación:
|
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.
|
#5 Viernes, 14 Abril 2017, 12:55 |
|
|
vuott
Analista Programador
Registrado: Agosto 2013
Mensajes: 2086
Edad: 60 Ubicación:
|
Re: Eliminar Un Elemento De Un Array
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 !
|
#6 Viernes, 14 Abril 2017, 13:48 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
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"
|
#7 Viernes, 14 Abril 2017, 14:25 |
|
|
vuott
Analista Programador
Registrado: Agosto 2013
Mensajes: 2086
Edad: 60 Ubicación:
|
Re: Eliminar Un Elemento De Un Array
Pero estas eliminando elementos de un array...
...el titulo del tu asunto es: " Eliminar Un Elemento De Un Array ".
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 ! "
Pues a mi no me gusta eso de que sea mayor que cero.
Bueno, podemos usar esta linea:
última edición por vuott el Sabado, 15 Abril 2017, 00:15; editado 3 veces
|
#8 Viernes, 14 Abril 2017, 17:54 |
|
|
tincho
Analista Programador
Registrado: Noviembre 2014
Mensajes: 2565
Edad: 48 Ubicación:
|
Re: Eliminar Un Elemento De Un Array
...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:
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.
|
#9 Viernes, 14 Abril 2017, 17:55 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 1
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
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
|
|
|
|
|