paulo1205
(usa Ubuntu)
Enviado em 16/04/2020 - 03:56h
Os arquivos estão preordenados, e ambos ordenados com o mesmo citério? Se estiverem, é melhor, porque isso lhe permitirá percorrer os dois simultaneamente.
As três primeiras colunas são, respectivamente, dia, mês e ano? Se forem, você pode ler a próxima linha de cada arquivo, converter a data de cada um dos arquivos para o formato YYYYmmdd e fazer a comparação numérica dessas duas datas. Se a data do arquivo 1 for menor que a data do arquivo 2, imprime uma linha contendo a data, os dados do arquivo 1, e marcando os dados do arquivo 2 como ausentes, e então lê a próxima linha somente do arquivo 1. Se a data do arquivo 2 for menor que a data do arquivo 1, imprime uma linha contendo a data, a indicação de ausência de dados do arquivo 1 e os dados do arquivo 2, e então lê a próxima linha somente do arquivo 2. Se as duas datas forem iguais, imprime a data, os dados do arquivo 1 e os dados do arquivo 2, e lê a próxima linha de ambos os arquivos, e repete esse mecanismo, a partir da conversão do formato das datas, enquanto houver dados em qualquer um dos arquivos.
Em pseudocódigo, seria mais ou menos o seguinte.
arquivos arq1, arq2
variáveis fim_arq1, dia1, mês1, ano1, valor1, data1
variáveis fim_arq2, dia2, mês2, ano2, valor2, data2
abre arq1 para leitura
fim_arq1 recebe falso
abre arq2 para leitura
fim_arq2 recebe falso
lê (dia1, mês1, ano1, valor1) de arq1
se leitura falhou, fim_arq1 recebe verdadeiro
lê (dia2, mês2, ano2, valor2) de arq2
se leitura falhou, fim_arq2 recebe verdadeiro
enquanto fim_arq1 = falso ou fim_arq2 = falso,
se fim_arq1 = falso, data1 recebe formatação("YYYYmmdd", dia1, mês1, ano1)
se fim_arq2 = falso, data2 recebe formatação("YYYYmmdd", dia2, mês2, ano2)
se (fim_arq1 = falso) e ((fim_arq2 = verdadeiro) ou (data1 < data2)),
imprime dia1, mes1, ano1, valor1, NaN
lê (dia1, mês1, ano1, valor1) de arq1
se leitura falhou, fim_arq1 receber verdadeiro
senão, se (fim_arq2 = falso) e ((fim_arq2 = verdadeiro) ou (data1 > data2)),
imprime dia2, mês2, ano2, NaN, valor2
lê (dia2, mês2, ano2, valor2) de arq2
se leitura falhou, fim_arq2 recebe verdadeiro
senão # isto é: data1=data2
imprime dia1, mês1, ano1, valor1, valor2
lê (dia1, mês1, ano1, valor1) de arq1
se leitura falhou, fim_arq1 receber verdadeiro
lê (dia2, mês2, ano2, valor2) de arq2
se leitura falhou, fim_arq2 recebe verdadeiro
fecha arq2
fecha arq1
... Então Jesus afirmou de novo: “(...) eu vim para que tenham vida, e a tenham plenamente.” (João 10:7-10)