Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Gogol

Impressão em tabela

Recommended Posts

Olá pessoal, sou novo na linguagem Haskell e tive alguns problemas durante a resolução de um exercício da universidade. O negocio é o seguinte, tenho que criar uma função que escreva as colocações dos participantes de uma competição de natação. Será dado como entrada uma lista de tuplas com os nomes dos jogadores e seus respectivos tempos, [(String, Float)].

 

O programa já está pronto, como vocês podem ver, não há nada muito complicado na questão. O meu problema é na hora de escrever o resultado na tela. Como o meu professor leva o visual muito em conta, gostaria de escrever o resultado em forma de uma tabela, com todas as colunas começando no mesmo ponto, como no exemplo abaixo

 

Colocação    Nome                 Tempo
1º           João                 30
2º           Antônio              33
3º           Marcos               35

No entanto, quando eu escrevo o resultado, como provavelmente o tamanho dos nomes dos participantes são diferentes, a minha tabela fica deslocada, mais ou menos como abaixo

 

Colocação    Nome                 Tempo
1º           João                  30
2º           Antônio                  33
3º           Marcos                 35

Então, queria saber se vocês sabem uma maneira de deixar a tabela certinha e bonitinha como está na primeira tabelinha. Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso depende do tamanho de cada coluna.

Não use tabs, mas sim espaços.

 

Algo do tipo:

printColuna :: String -> Int -> IO ()
printColuna _ 0 = return ()
printColuna [] n = do { putChar ' '; printColuna [] (n-1) }
printColuna (c:cs) n = do { putChar c; printColuna cs (n-1) }

Onde o segundo parametro recebe o tamanho máximo da coluna e mesmo após a palavra ter acabado continua jogando espaços na tela até preencher toda a coluna.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.