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

Dúvidas em Haskell

Discussão em 'Programação' iniciada por Joao-M, 20 de Dezembro de 2007. (Respostas: 10; Visualizações: 2267)

  1. Oi techzianos. :001:

    Fiz o seguinte programa em Haskell:

    Rapidamente criei o seguinte programa:
    Código:
    zero1 :: Float -> Float -> Float -> Float
    zero1 a b c = (-b - sqrt(b^2 - 4 * a * c))/2*a
    Quando corro o programa com os valores recomendados do enunciado, obtenho o valor desejado, mas porque qualquer motivo não consigo que o programa seja aceite pelo Mooshak. Já falei com colegas e eles não sabem o que fazer.

    O professor da cadeira disse-me que estava bem programado e aconselhou-me a submeter o programa pelo Mooshak que deve dar tudo bem. Infelizmente não o fiz pois já era muito tarde e podia fazê-lo em casa.

    O Mooshak não é um sistema 100% infalível, e o pior de tudo é perdermos dias à volta de um programa que está bem programado, mas que pensamos que ainda falta alguma coisa. Ainda ontem um colega meu perdeu um dia inteiro num programa que estava 100% correcto (o próprio professor admitiu), mas o sistema por capricho recusava-se a aceitá-lo.

    Outra pequena dúvida. O meu professor criou o seguinte programa na aula:
    Código:
    divisor :: Int -> Int -> Int
    divisor x 
        | mod x y == 0 = y
        | otherwise divisor x(y-1)
    Contudo quando tentei fazer o mesmo em casa, obti a seguinte mensagem de erro:
    Achei estranho o erro e fui ao Google e encontrei esta explicação:
    Fiquei completamente à nora com esta explicação, e só posso perguntar a um professor no início do próximo ano. Perguntei a uns colegas, mas eles não sabiam.

    (Devia era fazer como o resto do pessoal e fazer os testes e projectos individuais(!) em grupo também. Já começo a entender porque existe muito engenheiro informático e programadores mal formados. :P)

    Obrigado pela ajuda.
     
  2. souto

    souto To fold or to FOLD?

    Esse erro das chaveta tem a ver com o alinhamento das definições das tuas funções.
    Implicitamente, quando indentas o teu código, crias chavetas. Se uma linha tiver ligeiramente atrás da anterior, um bloco é implicitamente terminado com }.
     
  3. Obg pela a ajuda.

    Pois, nós tivemos esse problema antes. Mas já rescrevi o programa, está tudo (aparentemente) perfeitamente alinhado e ainda continuo a ter erro. Foi o programa que o prof. correu na aula, logo não devia dar erro sequer.

    Mas lá vou tentar outra vez.

    Estou a começar a detestar esta linguagem. Perco mais tempo a descobrir os truques disto, do que a aprender a matéria. :p
     
  4. Baderous

    Baderous Banido

    O gajo que inventou o Mooshak devia levar um tiro! :mad:
    Eu também já passei por isso...
     
  5. Tyran

    Tyran Power Member

    Então quando ele enpancava nos testes é que era gira lool enviar os programas por mail e tal, sem sequer saber se aquilo ia bem, enfim, ao menos por sorte nunca passei por isso :)

    JoãoM, epah não confies assim tanto nos profs, eles também se enganam, e por vezes bastante mais do que deviam, mas também ah profs, e ah PROFS ;)

    Quanto a isso se ele diz que está bem, e já andas a perder demasiado tempo nisso se calhar é melhor fazeres outras coisas mais importantes não sei, só uma opinião ;)

    Cumpzz e boa sorte

    P.S. Nunca gostei de Haskell pahhh =S xD
     
  6. Morais

    Morais Power Member

    Já alguma vez conheceste o Ganesh?
    Aquele grande programa no qual bastava alguém correr um ciclo infinito para o servidor de testes ir à vida e, com ele, os programas de todos na sala?
     
  7. Pois, hoje foi outra.

    O pessoal estava todo enrascado num programa durante uma carrada de tempo. Para fazer um história longa curta, a solução para pormos o programa a funcionar era adicionar uma linha em branco no final deste.

    Se um desgraçado faltasse a aula de hoje e ninguém o avisar até amanhã (último dia de aulas) não fazem o projecto da cadeira por causa desde pequeno "truque".

    Bom, siga lá mais uma ronda de WinHugs. :sad:
     
  8. Morais

    Morais Power Member

    WinHugs? Dios Mio, não usam Linux ai?!
     
  9. p3dro

    p3dro Power Member

    Na função divisor tens mesmo erros de sintaxe, por ex. no otherwise e na função mesmo, por ex, olhando para a assinatura da função recebes 2 Int e devolves 1 Int, porém depois na função só defines 1:

    Código:
    divisor :: Int -> Int -> Int
    divisor x [falta aqui qualquer coisa] 
    Acho que o correcto será:

    Código:
    divisor :: Int -> Int -> Int
    divisor x y
      | mod x y == 0 = y
      | otherwise = divisor x (y-1)
     
  10. BlocoDaBarra

    BlocoDaBarra Power Member

    Pela tua conversa deves ser meu colega,só não falas com um prof senão quiseres eles estão lá todos os dias e podes sempre mandar mail pró moodle que algum de nós ou o guerreiro te responde de certeza!
     
  11. A linha em branco no final ('\n'), não é um truque, é uma boa norma de programação! Como garantes ao compilador, que o ficheiro está completo, sem uma linha em branco?

    Se estás com problemas na disciplina, segue o conselho do BlocoDaBarra, e queixa-te no fórum da mesma, no Altek, no mooshak, manda email, ou fala directamente com o professor. Não é que este fórum, não sirva para esclarecer dúvidas, mas esses problemas que tiveste já muita gente os teve. E se o desgraçado falta às aulas, e não entrega os programas a tempo, burrice dele.
     

Partilhar esta Página