Ajuda sobre total de matrizes (ARRAY)

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Paulo_CPV
Usuário Nível 3
Usuário Nível 3
Mensagens: 178
Registrado em: 07 Mar 2013 10:27
Localização: Jacarei/SP

Ajuda sobre total de matrizes (ARRAY)

Mensagem por Paulo_CPV »

Bom dia!

Gostaria de uma ajuda de vocês para resolver o meu problema. É o seguinte eu
tenho um TEXTBOX que o usuário entra com o seguinte dado: 00 00 00 (estes dadps
são anos meses e dias separados por espaço) Agora quero totalizar as entrados do
usuário. Por exemplo:

Ele digita por exemplo 3 entradas

00 00 10
01 05 12
02 02 20

Pois bem até ai tudo certo, agora que eu estou me confundindo todo, eu tenho que
totalizar a coluna 1,2,3. Como cologar numa GRID os subtotais, por exemplo o
primeiro item é só adicionar na Grid da segunda em diante tenho que somar a
primeira com a segunda e jogar na Grid e até dar o resultado total, não é uma
quantidade exata de itens que o usuário irá entrar. Estou colocando desta
maneira:

Código: Selecionar todos

Function somavetor(p1,p2,p3)

aVetor := {}

aux := ALLTRIM(p1+p2+p3)

a := SUBSTR(p1,1,2)
b := SUBSTR(p2,3,2)
c := SUBSTR(p3,5,2)

AADD(aVetor,{a,b,c})
Como eu faço para aomar as colunas de cada entrada do usuário ? Espero que eu
fui o suficiente objetivo na esplicação do meu problema.

[]'s
Paulo - Jacareí/SP
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Ajuda sobre total de matrizes (ARRAY)

Mensagem por Pablo César »

Oi Paulo, seja bem vindo ao fórum !
Paulo_CPV escreveu:tenho um TEXTBOX que o usuário entra com o seguinte dado: 00 00 00 (estes dados são anos meses e dias separados por espaço)
Eu fosse você, no lugar de usar um TEXTBOX eu usaria um DATEPICKER, que é próprio para controlar a entrada de dados tipo DATAs.
Agora quero totalizar as entrados do usuário. Por exemplo:

Ele digita por exemplo 3 entradas

00 00 10
01 05 12
02 02 20
Estas três são datas ? Pois é estranho valor 00 como ano e mês.
tenho que totalizar a coluna 1,2,3. Como colocar numa GRID os subtotais.
Por exemplo o primeiro item é só adicionar na Grid da segunda em diante tenho que somar a primeira com a segunda e jogar na Grid e até dar o resultado total, não é uma quantidade exata de itens que o usuário irá entrar.
Não entendi direito. Seria você somar a primeira coluna e o resultado somar com a segunda coluna e o resultado somar com a terceira coluna, é isso ? São não for, faça um exemplo e mostre o resultado esperado. Porque as suas palavras não foram o suficiente claras.
Function somavetor(p1,p2,p3)
Que dados contém p1, p2 e p3 ?

Você menciona "como faço para somar" e lembre que o conteúdo de um TextBox é do tipo caracter. E se você for apenas utilizar o sinal de somar "+", ele irá concatenar e não fazer uma soma propriamente dita. Entendeu ? String = cadeia de caracteres e somar operação matemática.

Seja como for, você utilizando TEXTBOX ou DATEPICKER, você terá três desses elementos, certo ?
Então provavelmente você terá um botão que acionará a soma das colunas. Nessa função de somar, você precisa pegar os dados das três colunas, ou seja 9 dados. Para pegar esses dados, você tem nomes diferentes para esses elementos. Portanto você irá colocar numa variável ou 3 vetores ou até mesmo num vetor tridimensional. Depois seria converter esses dados em valor numérico e somar a três variáveis e adicioná-la ao grid, como você mesmo pediu.

Para termos uma melhor inteiração, você deveria postar o seu código, assim fica mais acertado as nossas indicações. Note que pode ser compactados e anexado a sua próxima mensagem.

Espero ter ajudado.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Paulo_CPV
Usuário Nível 3
Usuário Nível 3
Mensagens: 178
Registrado em: 07 Mar 2013 10:27
Localização: Jacarei/SP

Ajuda sobre total de matrizes (ARRAY)

Mensagem por Paulo_CPV »

Bom dia!

Paulo Cesar desde njá obrigado pela sua ajuda, mas eu não fui bem obejtivo, porque os dados que estão entrando já estão convertidos em anos meses e dias, por isso o "00" nos anos, o meu problema esta na totalização das colunas do vetor.

Obrigado pela dica e espero que você me escreva de novo se tiver algo diferente para acrescentar.

[]'s
Paulo - Jacareí/SP
Paulo_CPV
Usuário Nível 3
Usuário Nível 3
Mensagens: 178
Registrado em: 07 Mar 2013 10:27
Localização: Jacarei/SP

Ajuda sobre total de matrizes (ARRAY)

Mensagem por Paulo_CPV »

Tem de somar a coluna 1 separado, coluna 2 separado e depois coluna 3, isto é para n entradas que o usuário desejar entrar e só depois dat o total da coluna 1,2 e 3...e n linhas.
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Ajuda sobre total de matrizes (ARRAY)

Mensagem por Pablo César »

Favor postar o seu código !
Paulo_CPV escreveu:Bom dia!

Paulo Cesar desde
Hoje é a segunda vez que chamam-me de Paulo.

Mi nombre es Pablo. Paulo tambien existe en español !. Asi que por favor, me llame de Pablo. :D
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Ajuda sobre total de matrizes (ARRAY)

Mensagem por alxsts »

Olá!

Mais uma vez, seja bem-vindo!

Creio que a melhor solução é converter tudo em dias, acumular e depois reconverter.

Construí o código abaixo. Adapte-o à sua necessidade e veja se ajuda. Não compilei nem testei.

Código: Selecionar todos

FUNCTION Main()

   LOCAL aTotalTime AS Array
   
   // A cada grupo anos/meses/dias digitado, faça uma chamada à função SomaVetor
   // enviando os valores dos 3 text box como parâmetros 

   SomaVetor ( text1.Text, text2.Text, text3.Text )

   // ...
   
   // Quando o usuário terminar de digitar, chame a função sem parâmetros
   // Retornará um vetor com 3 elementos: total de anos, total de meses e total de dias

   aTotalTime := SomaVetor ( text1.Text, text2.Text, text3.Text )


RETURN

//------------------------------------------------------------------------------

FUNCTION SomaVetor(p1,p2,p3)

   STATIC aVetor    AS Array
   LOCAL aRet       AS Array
   LOCAL nTotalDays AS Numeric
       
   IF PCount() == 3
      IF aVetor == NIL
         aVetor := {}
      ENDIF   
      // acumula valores digitados
      AADD( aVetor,{ Val(p1), Val(p2), Val(p3) } )
   ELSE
      // chamada da função sem parâmetros... totaliza
      // Converte todos os valores para dias, considerando
      // ano com 365 dias e mes com 30 dias
      nTotalDays := 0
      AEval( aVetor, { |e| nTotalDays += ( (e[1] * 365) + (e[2] * 30) + e[3] ) } )

      // Reconverte o total para Anos/Meses/Dias
      aRet := Array( 3 )
      
      aRet[1] := Int( nTotalDays / 365 ) 
      aRet[2] := Int( (nTotalDays % 365 ) / 30 )
      aRet[3] := Int( (nTotalDays % 365 ) % 30 )
                  
      aVetor := NIL   
   ENDIF
   
RETURN aRet
//------------------------------------------------------------------------------
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Ajuda sobre total de matrizes (ARRAY)

Mensagem por Pablo César »

Paulo_CPV escreveu:Tem de somar a coluna 1 separado, coluna 2 separado e depois coluna 3, isto é para n entradas que o usuário desejar entrar e só depois dat o total da coluna 1,2 e 3...e n linhas.
Esses dados das colunas, estão no grid ou textbox ? Mostre seu código, apenas o módulo prg em questão.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Paulo_CPV
Usuário Nível 3
Usuário Nível 3
Mensagens: 178
Registrado em: 07 Mar 2013 10:27
Localização: Jacarei/SP

Ajuda sobre total de matrizes (ARRAY)

Mensagem por Paulo_CPV »

Boa tarde!

Pablo, eu ainda não tenho o modulo pronto só tenho as definições que coloquei para você e não tenho a minima ideia de como fazer. E me desculpe pela troca de seu nome.

[]'s
Paulo - Jacareí/SP
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Ajuda sobre total de matrizes (ARRAY)

Mensagem por Pablo César »

Tudo bem, então. Só explique melhor ou coloque alguma tela de como você deseja que fique tudo isso.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Paulo_CPV
Usuário Nível 3
Usuário Nível 3
Mensagens: 178
Registrado em: 07 Mar 2013 10:27
Localização: Jacarei/SP

Ajuda sobre total de matrizes (ARRAY)

Mensagem por Paulo_CPV »

Que tenha um formulário com 3 TEXTBOX para ano, mês e dias, um grid que mostre os dados que estou entrando e vai me mostrando o subtotal num LABEL. Espero ter sido objetivo na minha explicação.

[]'s
Paulo - Jacareí/SP
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Ajuda sobre total de matrizes (ARRAY)

Mensagem por Pablo César »

Ok, Paulo desculpe ser reiterativo. Agora ficou claro. Mas posso questionar algo ? Esse grid o que irá conter apenas esses 3 datas ? Por quê não utiliza diretamente no próprio grid ? E soma após preenchimento ou após clicar num botão ? A interface com usuário, deve ser o mais claro possível e mais prático também.

Veja se pode ser desta forma:
Tela80.PNG
Tela80.PNG (11.55 KiB) Exibido 2249 vezes
Segue em anexo o executável para apreciação, o arquivo fonte e arquivos para IDE.

Conforme você vai mudando de registro (cada três datas), ele exibirá no StatusBar o resultado da soma que você queria. Espero que tenha gostado da ideia !
Anexos
Teste76.rar
(753.32 KiB) Baixado 153 vezes
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Paulo_CPV
Usuário Nível 3
Usuário Nível 3
Mensagens: 178
Registrado em: 07 Mar 2013 10:27
Localização: Jacarei/SP

Ajuda sobre total de matrizes (ARRAY)

Mensagem por Paulo_CPV »

Boa noite!

Pablo, eu gradeço a sua atenção para comigo e vou testar o que você me postou e depois lhe digo se deu certo.

[]'s
Paulo - Jacareí/SP
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Ajuda sobre total de matrizes (ARRAY)

Mensagem por alxsts »

Olá!
Paulo_CPV escreveu:dados que estão entrando já estão convertidos em anos meses e dias, por isso o "00" nos anos
Pablo, creio que você não entendeu a necessidade do Paulo.

O que ele precisa saber é qual a soma de:

Código: Selecionar todos

    5 Anos  4 Meses  10 Dias +
   12 Anos  1 Meses  22 Dias +
    0 Anos  2 Meses   5 Dias +
    6 Anos  0 Meses   0 Dias 
   ---------------------------
 = 23 Anos  8 Meses   7 Dias
É exatamente o que faz o código que postei (não pude compilar nem testar)...
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Ajuda sobre total de matrizes (ARRAY)

Mensagem por Pablo César »

Ahh obrigado Alexandre ! Agora entendi. Nada como uma ilustração do enunciado.
É exatamente o que faz o código que postei (não pude compilar nem testar)...
Eu a minha própria rotina, o resultado é como você apresentou:
Tela81.PNG
Tela81.PNG (11.6 KiB) Exibido 2244 vezes
Espero que dê certo desta vez.
Anexos
Teste76.rar
(753.19 KiB) Baixado 242 vezes
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Paulo_CPV
Usuário Nível 3
Usuário Nível 3
Mensagens: 178
Registrado em: 07 Mar 2013 10:27
Localização: Jacarei/SP

Ajuda sobre total de matrizes (ARRAY)

Mensagem por Paulo_CPV »

Bom dia!

alxsts, obrigado pela sua dica e obrigado pela sua atenção para tentar solucionar a minha dúvida. Tentei compilar ao seu exemplo, mas esta dando muitos erros se você tiver alguma ideia de como resolver o meu problema, desde já agradeço a sua atenção.

[]'s
Paulo - Jacareí/SP
Responder