[SP-pm] Ajuda com vetor de 2 dimensões
Juliana
julianalduque at yahoo.com.br
Wed Dec 8 06:59:37 PST 2010
Olá amigos,
Agradeço a todos pela resposta.
Renato, se eu utilizar o push de uma array conforme o código abaixo, da forma que está eu consigo alterar a pontuação de um frase dinamicamente? Por exemplo...
Após eu colocar todas as frases e suas respectivas pontuações (que no início estarão todas com as pontuações zeradas), farei o seguinte:
Minha frase (minha linha) que casar com minha expressão regular, irei chamá-lo de minha linha atual, e irei verificar a linha anterior (linhaatual -1) e posterior (linhaatual +1) para casar com outra expressão regular, que dependendo de cada regr, e esta pontuação poderá ser alterada, quando a frase for comparada com outras 2 frases (anterior e posterior a ela).
Dessa forma que está (utilizando hash) eu consigo fazer isso posteriormente?
Ah! E este arquivo de frases não chega a 1MB.
Obrigada
Juliana
--- Em ter, 7/12/10, Renato Santos <renato.cron em gmail.com> escreveu:
De: Renato Santos <renato.cron em gmail.com>
Assunto: Re: [SP-pm] Ajuda com vetor de 2 dimensões
Para: saopaulo-pm em mail.pm.org
Data: Terça-feira, 7 de Dezembro de 2010, 6:51
Amigo,em perl, seria bem mais interessante você utilizar um HASH (ou como eu sou viciado, HASHREF)
Hash é uma lista, mas no lugar de indexs, você tem strings.Por exemplo:$foo = {
eu_sou_uma_chave => 'eu_sou_o_valor'};
Então, voce pode utilizar-se do push de uma array, monta assim, uma array de hash:
open(my $frases, "set.txt") or die "Nao foi possivel abrir o arquivo: $!";
my @vetor = ();
my $pontuacao=0;
while (my $linha = <$frases>) { chomp($linha); # tira o fim de linha
push(@vetor, { linha => $linha,
num_linha => $., pontuacao => $pontuacao
}); # se vc nao passar linha, vai pro $_
}
# aqui talvez tenha um codigo que vai mudar a pontuacao, correto? pois a pontuacao de todos esta zerada!
# e aqui mostra na tela
for my $item (@vetor){
print "$item->{num_linha}: $item->{linha} - $item->{pontuacao}\n";
}
----------------------------Minhas considerações:você não deve sempre ler um arquivo e jogar numa array,
se for fazer isso, você acaba jogando todo o arquivo na memoria, ese o arquivo tiver uns 100~ 300 mb isso não é muito legal!
2010/12/7 Juliana <julianalduque em yahoo.com.br>
Olá amigos da lista,
Estou com dificuldade em implementar um código utilizando um vetor com 2 dimensões.
Poderiam me dar uma dica de onde está o erro?
O código segue abaixo:
#abre arquivo de frases, uma frase por linha: frase1: xxxx; frase2: yyyyyy; frase3: zzzzz
open(my $frases, "set.txt") or die "Nao foi possivel abrir o arquivo: $!";
my @vetor=$frases;
my $pontuacao=0;
my $i=0;
#insiro a frase a pontuacao em um vetor de duas dimensoes: posicao frase e posicao pontuacao
while (<$frases>) {
$vetor[$i] = [$frases, $pontuacao];
$i++;
}
#imprimir todas as frases seguido de sua pontuacao : print $vetor->[$i], "=", $vetor->[$i], "\n"; ????
for my $vetor (@vetor){
print $vetor->[0], "=", $vetor->[1], "\n";
}
Aguardo
contato.
Obrigada!
Abraços
Juliana
_______________________________________________
SaoPaulo-pm mailing list
SaoPaulo-pm em pm.org
http://mail.pm.org/mailman/listinfo/saopaulo-pm
--
Renato Santos
http://www.renatocron.com/blog/
-----Anexo incorporado-----
_______________________________________________
SaoPaulo-pm mailing list
SaoPaulo-pm em pm.org
http://mail.pm.org/mailman/listinfo/saopaulo-pm
-------------- Pr?xima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20101208/7be0bcd2/attachment.html>
More information about the SaoPaulo-pm
mailing list