1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Contagem do número de linhas de ficheiro. - PROLOG

Discussão em 'Programação' iniciada por Machi, 1 de Junho de 2009. (Respostas: 4; Visualizações: 1210)

  1. Boa tarde,
    como o título do tópico diz, ando à procura de uma forma de criar um predicado em prolog com o qual possa fazer a contagem do número de linhas de um ficheiro.

    Já fiz variadas pesquisas na internet, no entanto, sem qualquer resultado prático.

    Caso seja possível, gostaria que me dessem uma ajuda sobre como desenvolver o dito predicado.

    Cumprimentos.
     
  2. blueomega

    blueomega Power Member

    procura maneira de reconhecer os \n (endline)
     
  3. reply

    Olá blueomega, o ficheiro tem linhas do seguinte tipo:

    Já iniciei o predicado, mas no entanto está com alguns erros, não muito agradáveis.:(

    Fica aqui o que já fiz:

    Código:
    contar_contactos:-see('agendamento.pl'),Numero is 1,ler(Numero),seen.
    ler(Valor):-read(X),conta(X,Valor).
    conta(end_of_file,_):-!.
    conta(X,Numero):- N1 is Numero + 1,ler(N1),conta(X,N1).
    
    
    Certamente existirá algo aí menos bem feito e que não estarei a ver bem como resolver.:(
     
  4. blueomega

    blueomega Power Member

  5. Já foi encontrada a solução.

    Após algumas tentativas, eis que surge o pretendido. :P

    Código:
    contar[COLOR=#008080]_agendamentos[/COLOR][COLOR=#339933]:-[/COLOR]see[COLOR=#009900]([/COLOR][COLOR=#0000FF]'agendamento.pl'[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933],[/COLOR][COLOR=#008080]Numero[/COLOR] [URL="http://pauillac.inria.fr/%7Ederansar/prolog/bips.html"][COLOR=#990000]is[/COLOR][/URL] [COLOR=#800080]0[/COLOR][COLOR=#339933],[/COLOR]ler[COLOR=#009900]([/COLOR][COLOR=#008080]Numero[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933],[/COLOR]seen[COLOR=#339933].[/COLOR]
    ler[COLOR=#009900]([/COLOR][COLOR=#008080]Valor[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933]:-[/COLOR][URL="http://pauillac.inria.fr/%7Ederansar/prolog/bips.html"][COLOR=#990000]read[/COLOR][/URL][COLOR=#009900]([/COLOR][COLOR=#008080]X[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933],[/COLOR]conta[COLOR=#009900]([/COLOR][COLOR=#008080]X[/COLOR][COLOR=#339933],[/COLOR][COLOR=#008080]Valor[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933].[/COLOR]
    
    conta[COLOR=#009900]([/COLOR]end[COLOR=#008080]_of_file[/COLOR][COLOR=#339933],[/COLOR][COLOR=#008080]Final[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933]:-[/COLOR][COLOR=#339933]![/COLOR][COLOR=#339933],[/COLOR][URL="http://pauillac.inria.fr/%7Ederansar/prolog/bips.html"][COLOR=#990000]write[/COLOR][/URL][COLOR=#009900]([/COLOR][COLOR=#0000FF]'Total: '[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933],[/COLOR][URL="http://pauillac.inria.fr/%7Ederansar/prolog/bips.html"][COLOR=#990000]write[/COLOR][/URL][COLOR=#009900]([/COLOR][COLOR=#008080]Final[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933].[/COLOR]
    conta[COLOR=#009900]([/COLOR][COLOR=#008080]_[/COLOR][COLOR=#339933],[/COLOR][COLOR=#008080]Numero[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933]:-[/COLOR] [COLOR=#008080]N1[/COLOR] [URL="http://pauillac.inria.fr/%7Ederansar/prolog/bips.html"][COLOR=#990000]is[/COLOR][/URL] [COLOR=#008080]Numero[/COLOR] [COLOR=#339933]+[/COLOR] [COLOR=#800080]1[/COLOR][COLOR=#339933],[/COLOR]ler[COLOR=#009900]([/COLOR][COLOR=#008080]N1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933].[/COLOR]
    
     

Partilhar esta Página