Ir para o conteúdo
drmnep2

Matriz Haskel

Mensagens Recomendadas

drmnep2

OLa tudo bom? sou novo aqui, gostaria de uma ajuda, estou fazendo um trabalho em que um programa em haskel que recebe numero de linhas e colunas de uma matriz e retorna ela prenchida com 0  tipo matirz 3x3

[ 0 0 0 ]

[ 0 0 0 ]

[ 0 0 0 ]

Quem souber como faz me ajuda ai

vlw falows t++

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HugoDaniel

O Haskell é a minha linguagem de programação favorita.

Para representar uma matriz eu usaria algo do género:

module Mat where

data Matrix = Matrix { x1, y1, z1
                     , x2, y2, z2
                     , x3, y3, z3
                     :: Int }
                    

zeroMatrix = Matrix 0 0 0
                    0 0 0
                    0 0 0

identityMatrix = Matrix 1 0 0
                        0 1 0
                        0 0 1


A descrição da matriz usa ali um "type record", que permite aceder facilmente aos elementos de uma matriz.

Assim para obter o coeficiente de z2 de uma dada matriz usaria algo deste género:

f :: Matrix -> Int
f mat = z2 mat

Dá para ser mais simples ? :P

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Betovsky

Sempre usei listas de listas, mas quando se sabe a partida que o tamanho da matriz é fixa essa via é de facto muito interessante.

Mas acho mais interessante pelo motivo que não demonstraste, que é permitir apenas focar nos valores da matriz que seja de interesse. Por exemplo:

incrementaZ3 matrix@(Matrix {z3 = val}) = matrix { z3 = (val+1)}


"Give a man a fish and he will eat for a day; Teach a man to fish and he will eat for a lifetime. The moral? READ THE MANUAL !"

Sign on a computer system consultant's desk

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Pablo Haoko

Muito fácil.

Use isso:

matrizZero :: Int -> Int -> Array (Int,Int) Int
matrizZero x n = array ((1,1),(x,n)) [((i,j),0)|i<-[1..x],j<-[1..n]]

Servirá para qualquer matriz.

x é linha.

n é coluna.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Betovsky

Ou então, se for para usar arrais, a inicialização fica mais legível assim :P

matrizZero x n = listArray ((1,1),(x,n)) $ repeat 0


"Give a man a fish and he will eat for a day; Teach a man to fish and he will eat for a lifetime. The moral? READ THE MANUAL !"

Sign on a computer system consultant's desk

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.