Código: Selecionar todos
#include "inkey.ch"
FUNCTION Main()
LOCAL nDay, GetList := {}
SetMode( 25,80 ) ; CLS
nDay := Day( Date() )
While Lastkey() != K_ESC
@ 10,10 Say "Informe o dia :" ;
Color "W+/B" ;
Get nDay ;
Color "W+/B, B+/W" ;
Pict "99" ;
VALID nDay > 0 .And. nDay < 32
READ
@ 12,10 Say "Valor encontrado : " + Transform( BuscaVal( nDay ), "@99" ) Color "W+/B"
@ 16,10 Say "Tecle algo..." Color "W+/B"
Inkey(0)
@ 12,10 CLEAR TO 16,70
Enddo
RETURN NIL
//------------------------------------------------------------------------------------------
// Posições em aArray
#define A_DESCRIÇAO 1
#define A_VENCIMENTO 2
#define A_MELHOR_DIA 3
FUNCTION BuscaVal( nDay )
LOCAL aArray, e, nMax
aArray := { { "Lorem ipsum sod", 1, 2 }, ;
{ "ales senectus ", 5, 4 }, ;
{ "donec sociosqu ", 10, 6 }, ;
{ "scelerisque ", 15, 8 }, ;
{ "pharetra primis", 20, 10 }, ;
{ "blandit odio ", 25, 12 }, ;
{ "dui massa ", 30, 14 }, ;
{ "vivamus ", 2, 16 }, ;
{ "himenaeos ", 7, 18 }, ;
{ "euismod ac ", 12, 20 }, ;
{ "semper ", 19, 22 }, ;
{ "facilisis vitae", 26, 24 }, ;
{ "sagittis ", 31, 15 }, ;
{ "faucibus ", 3, 28 }, ;
{ "viverra ", 8, 30 }, ;
{ "vestibulum nisi", 13, 1 }, ;
{ "sodales congue", 18, 3 }, ;
{ "dolor quisque", 23, 5 }, ;
{ "amet", 28, 7 }, ;
{ "gravida augue", 4, 9 }, ;
{ "luctus ut vel", 9, 11 }, ;
{ "tellus potenti", 14, 13 } ;
}
nMax := 0
// Para cada elemento e no aArray...
For Each e In aArray
// Cada elemento também é um array...
// Se a terceira posição do elemento for maior ou igual ao dia em nDay...
If e[ A_MELHOR_DIA ] >= nDay
// Se a segunda posição do elemento for maior que o anterior,
// guarda o valor da segunda posição do elemento
nMax := If( e[ A_VENCIMENTO ] > nMax, e[ A_VENCIMENTO ], nMax )
Endif
Next
RETURN nMax
//------------------------------------------------------------------------------------------