
Como mover algo en un arreglo
Publicado por tugatime (44 intervenciones) el 28/01/2013 15:00:51
Lo que pasa es lo siguiente, yo tengo un arreglo. Lo dejo aqui (voy a dejar tambien un registro porque el arreglo es del tipo registro):
Como podeis ver, tengo un registro (llamado producto) de un producto, donde se introduce su nombre, su cantidad, su precio y por ultimo si esta o no en la cesta (si esta en la cesta, el campo en_cesta es true, si no esta en la cesta, en campo en_cesta es false). Luego tengo un arreglo (llamado cesta) que es donde se guarda los productos que hay. Se pueden guardar hasta tamxcesta productos, que en este caso tamxcesta es una constante que vale 3, es decir, se pueden guardar hasta 3 productos en la cesta.
Bueno lo que pasa es lo siguiente. En mi programa, hay una opcion para empezar una cesta nueva. En esa opcion lo que yo puedo hacer es añadir productos a la cesta, eliminar productos de la cesta, etc.
Bueno aqui esta mi problema. Lo que pasa es lo siguiente. Mi cesta tiene 3 posiciones. La 1, la 2 y al 3.
Imagina que esto es una tabla:
Posicion 1 ////// Posicion 2 ////// Posicion 3
Nombre: manzanas ////// Nombre: platanos ////// Nombre: fresas
Cantidad: 5 ////// Cantidad: 7 ////// Cantidad:56
Precio: 0.5 ////// Precio: 0.9 ////// Precio:0.25
En_cesta: true ////// En_cesta: true ////// En_cesta: true
Como puedes ver tengo 3 posiciones y en cada posicion tengo un producto con su nombre, su cantidad y su precio. Estos son los 3 productos que yo he añadido a la tabla.
Ahora viene mi problema que esta cuando elimino un producto. Por ejemplo, cuando yo elimino las manzanas, lo que yo quiero es que tanto los platanos como las fresas se muevan un posicion a la izquierda y se quede asi:
Posicion 1 ////// Posicion 2 ////// Posicion 3
Nombre: platanos ////// Nombre: fresas //////
Cantidad: 7 ////// Cantidad: 56 //////
Precio: 0.9 ////// Precio: 0.25 //////
En_cesta: true ////// En_cesta: true //////
Los platanos pasan a estar en la posicion 1, las fresas en la 2 y la posicion 3 se queda vacia sin nada.
Esto es lo que quiero que pase cuando elimino un producto, pero el problema es que no pasa esto. Cuando yo elimino un producto los demas se quedan como estaban asi:
Posicion 1 ////// Posicion 2 ////// Posicion 3
////// Nombre: platanos ////// Nombre: fresas
////// Cantidad: 7 ////// Cantidad:56
////// Precio: 0.9 ////// Precio:0.25
////// En_cesta: true ////// En_cesta: true
Pues yo necesito ayuda para saber como hacer para que cuando elimino un productos los demas se muevan (o vuelvan) una posicion a la izquierda.
Por cierto, dejo estas barras ////// para separar las posiciones.
1
2
3
4
5
6
7
8
9
10
11
12
const
tamxcesta= 3;
var
producto=record
nombre: string;
cantidad: integer;
precio: real:
en_cesta: boolean;
end;
cesta=array[1..tamxcesta] of producto;
Como podeis ver, tengo un registro (llamado producto) de un producto, donde se introduce su nombre, su cantidad, su precio y por ultimo si esta o no en la cesta (si esta en la cesta, el campo en_cesta es true, si no esta en la cesta, en campo en_cesta es false). Luego tengo un arreglo (llamado cesta) que es donde se guarda los productos que hay. Se pueden guardar hasta tamxcesta productos, que en este caso tamxcesta es una constante que vale 3, es decir, se pueden guardar hasta 3 productos en la cesta.
Bueno lo que pasa es lo siguiente. En mi programa, hay una opcion para empezar una cesta nueva. En esa opcion lo que yo puedo hacer es añadir productos a la cesta, eliminar productos de la cesta, etc.
Bueno aqui esta mi problema. Lo que pasa es lo siguiente. Mi cesta tiene 3 posiciones. La 1, la 2 y al 3.
Imagina que esto es una tabla:
Posicion 1 ////// Posicion 2 ////// Posicion 3
Nombre: manzanas ////// Nombre: platanos ////// Nombre: fresas
Cantidad: 5 ////// Cantidad: 7 ////// Cantidad:56
Precio: 0.5 ////// Precio: 0.9 ////// Precio:0.25
En_cesta: true ////// En_cesta: true ////// En_cesta: true
Como puedes ver tengo 3 posiciones y en cada posicion tengo un producto con su nombre, su cantidad y su precio. Estos son los 3 productos que yo he añadido a la tabla.
Ahora viene mi problema que esta cuando elimino un producto. Por ejemplo, cuando yo elimino las manzanas, lo que yo quiero es que tanto los platanos como las fresas se muevan un posicion a la izquierda y se quede asi:
Posicion 1 ////// Posicion 2 ////// Posicion 3
Nombre: platanos ////// Nombre: fresas //////
Cantidad: 7 ////// Cantidad: 56 //////
Precio: 0.9 ////// Precio: 0.25 //////
En_cesta: true ////// En_cesta: true //////
Los platanos pasan a estar en la posicion 1, las fresas en la 2 y la posicion 3 se queda vacia sin nada.
Esto es lo que quiero que pase cuando elimino un producto, pero el problema es que no pasa esto. Cuando yo elimino un producto los demas se quedan como estaban asi:
Posicion 1 ////// Posicion 2 ////// Posicion 3
////// Nombre: platanos ////// Nombre: fresas
////// Cantidad: 7 ////// Cantidad:56
////// Precio: 0.9 ////// Precio:0.25
////// En_cesta: true ////// En_cesta: true
Pues yo necesito ayuda para saber como hacer para que cuando elimino un productos los demas se muevan (o vuelvan) una posicion a la izquierda.
Por cierto, dejo estas barras ////// para separar las posiciones.
Valora esta pregunta


0