[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