• Viernes 29 de Marzo de 2024, 13:52

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - oakis

Páginas: [1]
1
Pascal / Re:Como borrar un registro en pascal?
« en: Martes 1 de Abril de 2014, 09:41 »
Bueno, no se si te sirva la ayuda ahora, pero para el que la necesite ahi va.


Pre Condicion: Siempre que se trabajen con arreglos hay que llevar la cantidad logica ( o dimension Logica ) de los datos dentro del mismo.

Esto nos ayuda a saber la cantidad efectiva de datos que hay dentro del arreglo, y esto es practico para cuando queremos agregar mas datos al mismo y no pasarnos de la capacidad maxima.

Lo primero es ubicar el registro a eliminar y determinar en que posicion del arreglo ( o Array) se encuentra.

*Si el dato es el ultimo dentro de la dimension Logica del arreglo, lo que debemos hacer es decrementar la dimension Logica en 1, con esto estamos haciendo un borrado logico de los datos. Esto vale como borrado de datos. Ejemplo:

Buscar y borrar el numero '09' en el siguiente arreglo:

Antes del borrado.
Dimension Fisica del arreglo = 8
Dimension Logica = 6

                                   Dato a borrar
                                               ↓
|_01_|_02_|_03_|_05_|_07_|_09_|____|____|
                                               ↑
                                    Dim. Logica

Despues del borrado.

                                          ┌  Datos Basura   ┐
|_01_|_02_|_03_|_05_|_07_|_09_|____|____|
                                      ↑
                               Dim. Logica

A partir de la Posicion siguiente a la Dim. Logica, los datos se consideran invalidos logicamente.

*Si el dato esta en otra parte que no sea en el final de la dimension Logica ( pero siempre comprendido dentro de la misma ), puedes sobreescribir los datos del registro buscado con el ultimo registro de la dimension Logica y luego decrementar la dimension en 1. Esto tambien vale como borrado, pero tendrias que volver a ordenar los datos para tenerlos ordenados de nuevo. Ejemplo:

Buscar y borrar el numero '02' en el siguiente arreglo:

Antes del borrado.
Dimension Fisica del arreglo = 8
Dimension Logica = 6

      Dato a borrar
             ↓
|_01_|_02_|_03_|_05_|_07_|_09_|____|____|
                                               ↑
                                    Dim. Logica

Sobreescribo el dato a borrar con el ultimo dato de la Dim. Logica ( es decir con el '09' ) y decremento en 1 la cantidad de datos.
Dimension Fisica del arreglo = 8
Dimension Logica = 5

   Dato sobreescrito
             ↓                            ┌  Datos Basura  ┐
|_01_|_09_|_03_|_05_|_07_|_09_|____|____|
                                      ↑
                               Dim. Logica


*Por ultimo puedes tambien borrar de la siguiente manera. Determinas la posicion del registro a borrar y lo sobreescribes con el registro de la posicion siguiente, es decir, haces una superposicion de datos desde la posicion del registro a borrar  hasta la dimension logica. Ejemplo sencillo:

Buscar y borrar el numero '05' en el siguiente arreglo:

Dimension Fisica del arreglo = 8
Dimension Logica = 6

                      Dato a borrar
                              ↓
|_01_|_02_|_03_|_05_|_07_|_09_|____|____|

Tip: Puedes usar el indice del dato a borrar ( en este casi su indice es 4) y restarselo a la dim Logica( que es 6), esto te dara la cantidad de corrimientos de datos que debes hacer ( 6 - 4 = 2 corrimientos de datos ), es ideal para usarlo con un "For"

Determino la posicion del numero buscado, como resultado da que esta en la posicion 4.
Entonces desde la posicion 4 voy superponiendo los datos, es decir, en la posicion 4 copio los datos de la posicion 5, en la 5 copio los datos de la 6, y decrementas la dimension Logica en 1. Por lo tanto te quedaria asi el vector resultante

Dimension Fisica del arreglo = 8
Dimension Logica = 5

                         Superposicion de datos
                                  ←    ← 
|_01_|_02_|_03_|_07_|_09_|_09_|____|____|
                                      ↑  └   Datos Basura  ┘
                                      ↑
                          Nueva Dim. Logica

Como se ve en la representacion, queda repetido el '09' dos veces, pero eso es inevitable. Pero tus datos verdaderos son los que estan comprendidos dentro de la dimension logica. Los datos despues de la misma los debes tratar como basura ya que no sirven, y nuevamente aqui estamos aplicando un "Borrado logico de datos".


Bueno, espero que se haya entendido la idea en general que trate de expresar. Tambien espero que te pueda servir de ayuda o a otra persona que este en la misma condicion.

Sin mas me despido, saludos!

2
Pascal / Re:hola, tengo un problema 2
« en: Martes 1 de Abril de 2014, 06:42 »
Es demasiado sencillo, solo debes de agregar una variable mas para el resultado de la suma de los 2 numeros ingresados.
Transforma la function en un procedure y pasa por referencia, en los parametros formales, la variable resultado.
Luego informa los resultados imprimiendo en pantalla n1 + n2 = variable Resultado.

La implementacion no te la dejo, porque sino no tendria gracia.
Pero no te desanimes, el problema es sumamente sencillo.

Saludos.

Páginas: [1]