FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Buscar Valores en una Grillla
Hola, quiero buscar valores en un tstringgrid de la siguiente manera y no se como:
Tengo una columna con los Valores de los cheques.... Por ejemplo: 1.00 9.22 11.01 31.31 32.35 34.74 Y yo tengo que pagar por ejemplo por $50, y quiero que busque los cheques que mas se aproximen, cuantos mas cheques sean mejor. En este caso, me deberia devolver los siguientes: 1.00 9.22 31.31 ------ 41.53 Se entiende? Alguien hizo algo similar? Le agradezco de antemano, porque no se me ocurre nada. |
#2
|
||||
|
||||
Hola peripla,
según entiendo lo que tienes que saber es con cuáles "cheques" te tienes que quedar cuya suma se aproxime lo máximo sin pasarse al dato que buscas. Si los datos en la "grilla" los tienes ordenados es bastante fácil. Los recorres uno a uno en bucle y accedes a cada elemento con : StringGrid1.Cells[ACol,ARow] vas sumando los datos y paras cuando te pases. Un saludo.
__________________
Hay gente que esta demasiado educada para hablar con la boca llena pero no les importa hacerlo con la cabeza hueca. |
#3
|
|||
|
|||
Gracias Hermes, asi lo tengo pensado...
El tema es que son al menos 50 cheques en una grilla, y yo tengo que buscar 6 que sumen la cantidad elegida. Es decir cual es la mejor combinación del 6 cheques dentro de los 50 que se aproxime a la cantidad elegida. Las veces que realiza operaciones es 50 a la sexta (50*50*50*50*50*50) y me da mas de 312 millones. Esto solo con la de 6 cheques, si quiero hacerlo con las de 5 tambien, debo sumarle 50 a la quinta, lo que me se me hace imposible calcular tanto, ponele que le ponga algunos limites, pero igual tarda una barbaridad. Existe algun metodo para hacerlo mas facil? |
#4
|
||||
|
||||
Bueno, creo que si se me ocurre una manera pero solo es válida si la lista está ordenada.
Lo primero de todo sería localizar el valor más proximo sin pasarte que estás buscando en el grid. A partir de localizarlo vas haciendo sumas de los 6 elementos anteriores hasta que localices la combinación más optima. Es decir. Imagina una lista con n elementos: a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ... an Primero localizamos el elemento más proximo al valor buscado en la lista ordenada. Imagina que es el elemento a10. A partir de ahí vamos sumando los 6 anteriores. Sería sumar a10+a9+a8+a7+a6+a5. Si se pasa pues sumamos a9+a8+a7+a6+a5+a4 y así sucesivamente hasta encontrar la combinación más optima. No se si siempre tiene que haber una combinación posible pero esto es otro tema. Espero que sea lo que buscas.
__________________
Hay gente que esta demasiado educada para hablar con la boca llena pero no les importa hacerlo con la cabeza hueca. |
#5
|
||||
|
||||
Ordenalos de menor a mayor y los sumas hasta llegar a la cifra que mas se aproxime. Es un grid o dbgrid? si es dbgrid es facil podes hacerlo recorriendo el dataset.
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Restaurar los valores del BDE | golf2008 | Conexión con bases de datos | 3 | 29-07-2008 12:11:41 |
Valores distintos | trex2000 | SQL | 0 | 03-10-2006 17:12:31 |
Obtener los valores de un .doc | zugazua2001 | Varios | 1 | 21-05-2006 17:38:15 |
Valores de un checkbox | Ivan_25 | C++ Builder | 3 | 07-11-2005 10:42:49 |
Redondeo de valores | JODELSA | Varios | 1 | 23-08-2003 18:33:50 |
|