Boa noite Pessoal... Preciso de uma ajuda com duas questões:

1a. Baseando-se na rotina abaixo: SELECT linresul DELETE ALL PACK APPEND FROM linresul.txt DELIMITED WITH CHARACTER "-" GO vsor-1 SCATTER FIELDS linresul.d01,linresul.d02,linresul.d03,linresul.d04,linresul.d05,linresul.d06,linresul.d07,linresul.d08,linresul.d09,; linresul.d10,linresul.d11,linresul.d12,linresul.d13,linresul.d14,linresul.d15 TO arr01

SELECT lifiltro DELETE ALL PACK APPEND FROM linfingr.txt DELIMITED WITH CHARACTER "-" replace ALL lifiltro.rep WITH 0

SELECT libackup DELETE ALL PACK

SELECT lifiltro SET ORDER TO lifiltro COUNT ALL TO vban GO TOP DO WHILE !EOF() WAIT WINDOW "AGUARDE !!! Separando LINHAS CONFIGURADAS do arquivo em GRUPOS e suas REPETÊNCIAS... Registro "+ALLTRIM(STR(vreg))+" de "+ALLTRIM(STR(vban)) NOWAIT SCATTER FIELDS lifiltro.d01,lifiltro.d02,lifiltro.d03,lifiltro.d04,lifiltro.d05,lifiltro.d06,lifiltro.d07,lifiltro.d08,lifiltro.d09,; lifiltro.d10,lifiltro.d11,lifiltro.d12,lifiltro.d13,lifiltro.d14,lifiltro.d15 TO arr02

FOR i = 1 TO 15 var1 = arr01[i] FOR j = 1 TO 15 var2 = arr02[j] IF var1 = var2 var3 = var3+1 ENDIF ENDFOR ENDFOR

IF var3>0 replace lifiltro.rep WITH var3 ENDIF var1=0 var2=0 var3=0

IF !EOF() SKIP vreg=vreg+1 ELSE EXIT ENDIF ENDDO

Reparem que tenho dois scatter's, ambos criando dois arrays, certo? Nessa rotina, o FOR conta entre os dois arrays, as quantidades iguais, porém, um por um elemento até completar 15 e isso num arquivo com mais de 1 milhão de registros, fica muito demorado. Pergunta: Existe como fazer a contagem dos elementos sem usar o FOR, contando o conjunto por exemplo: ARRAY01 terá os 15 elementos = 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 ARRAY02 terá outros 15 elementos = 01 02 03 04 05 06 07 08 09 10 11 12 13 14 16 Reparem que o FOR contaria os 15 elementos de cada array entre eles, encontrando 14 iguais entre os dois. Tem como contar os elementos dos arrays sem utilizar o FOR, pegaria todo o conjunto do array01 e acharia os iguais no array02? Com o FOR fica muito lento...

2a. Baseando-se que: ARRAY03 terá os 15 elementos = 01 02 03 07 08 10 05 06 09 04 11 12 13 14 15 Como fazer para que esse array fique ordenado como segue = 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15?

perguntou Aug 27 '18 às 23:22

Markleber's gravatar image

Markleber
1

Seja o primeiro a responder a esta pergunta!
mudar para preview

Siga esta pergunta

Por Email:

Uma vez que você entrar você poderá se inscrever para todas as atualizações aqui

Por RSS:

Respostas

Respostas e Comentários

Markdown Básico

  • *italico* ou __italico__
  • **negrito** or __negrito__
  • link:[texto](http://url.com/ "Qual é a sua dúvida?")
  • imagem?![alt texto](/path/img.jpg "Qual é a sua dúvida?")
  • lista numerada: 1. Foo 2. Bar
  • para adicionar uma quebra de linha basta adicionar dois espaços onde você gostaria que a nova linha estivesse.
  • tags HTML básicas também são suportadas

Tags

×4
×3
×2

pergunta feita: Aug 27 '18 às 23:22

pergunta lida: 80 vezes

última alteração: Aug 27 '18 às 23:22