<br><br><div class="gmail_quote">2010/12/7 Juliana <span dir="ltr">&lt;<a href="mailto:julianalduque@yahoo.com.br" target="_blank">julianalduque@yahoo.com.br</a>&gt;</span><br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">


<table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td style="font: inherit;" valign="top">Olá amigos da lista,<br><br>Estou com dificuldade em implementar um código utilizando um vetor com 2 dimensões.<br><br>

Poderiam me dar uma dica de onde está o erro?<br>
O código segue abaixo:<br><br><br>#abre arquivo de frases, uma frase por linha: frase1: xxxx; frase2: yyyyyy; frase3: zzzzz<br>open(my $frases, &quot;set.txt&quot;) or die &quot;Nao foi possivel abrir o arquivo: $!&quot;;<br>


<br></td></tr></tbody></table></blockquote><div><br>Puxa, ninguém sugeriu o meu artigo sobre isto :&#39;( - <a href="http://sao-paulo.pm.org/artigo/2010/analisedastecnicasparaabrirelerarquivos" target="_blank">http://sao-paulo.pm.org/artigo/2010/analisedastecnicasparaabrirelerarquivos</a><br>


 </div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td style="font: inherit;" valign="top">


<br>my @vetor=$frases;<br></td></tr></tbody></table></blockquote><div><br>Isto não faz o menor sentido, pois vc está atribuindo um elemento a uma array, e este elemento é um file-handle de uma arquivo. Tem certeza que é isto mesmo ?<br>


 </div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td style="font: inherit;" valign="top">


my $pontuacao=0;<br>my $i=0;<br><br>#insiro a frase a pontuacao em um vetor de duas dimensoes: posicao frase e posicao pontuacao<br>while (&lt;$frases&gt;) {<br>$vetor[$i] = [$frases, $pontuacao];<br>$i++;<br>}<br><br></td>


</tr></tbody></table></blockquote><div><br>Olhe isto parece uma confusão de outras linguagem de programação, então vou tentar explicar como funciona uma matriz multidimensional.<br><br>em C, você teria algo assim <br><br>


&lt;code C&gt;<br><span><span style="font-family: Courier New; font-size: 130%;"><pre><span style="font-family: Courier New; font-size: 130%;">#include &lt;stdio.h&gt;<br><br>#define ROW  5</span><span style="font-size: 130%;"><br>

</span><span style="font-family: Courier New; font-size: 130%;">#define COL  5</span><span style="font-size: 130%;"><br><br></span><span style="font-family: Courier New; font-size: 130%;">int main(void) {</span><span style="font-size: 130%;"><br>


</span><span style="font-family: Courier New; font-size: 130%;">  int   i, j;</span><span style="font-size: 130%;"><br></span><span style="font-family: Courier New; font-size: 130%;">  float matrix2D[ROW][COL];</span><span style="font-size: 130%;"> # aqui você um vector com 2 endereço de memória com 5 x o tamanho de um float<br>


</span><span style="font-family: Courier New; font-size: 130%;">  printf(&quot;Entre com os elementos da matriz :&quot;);</span><span style="font-size: 130%;"><br></span><span style="font-family: Courier New; font-size: 130%;">  for (i = 0; i &lt; ROW; i++) {</span><span style="font-family: Courier New; font-size: 130%;"><br>


    for (j = 0; j &lt; COL; j++) {</span><span style="font-size: 130%;"><br></span><span style="font-family: Courier New; font-size: 130%;">      printf(&quot;\nEntre com o elemento [%d][%d] : &quot;, i, j);</span><span style="font-family: Courier New; font-size: 130%;"><br>


      scanf(&quot;%f&quot;, &amp;matrix2D[i][j]);</span><span style="font-size: 130%;"><br></span><span style="font-family: Courier New; font-size: 130%;">  }</span><span style="font-size: 130%;"><br></span><span style="font-family: Courier New; font-size: 130%;">}<br>


</span></pre></span></span>&lt;/code C&gt;<br><br>A idéia básica para criar matriz multi-dimensional é você utilizar espaços de memórias diferentes e associar valores com isto. No caso do exemplo assim, eu estou declaro 2 endereçamento de memórias. O computador (compilador) não tem menor idéia de que isto seja uma matrix multi-dimensional, então você é responsável por criar e manter o relacionamento entre os dados. O exemplo acima é a maneira mais básica de fazer isto.<br>


<br>Para fazer isto em Perl, temos algumas alternativas, podemos fazer da seguinte maneira : <br><br>&lt;perl_1&gt;<br>use strict;<br><br>my @dim_1 = qw(1 2 3);<br>my @dim_2 = qw(um dois tres);<br><br># crio um array de array (AoA) com 2 elementos (o elemento 0 e o elemento 1) que possuem referências para outras array. <br>

my @matriz = ( \@dim_1, \@dim_2);<br><br>say $matriz[0][1]; # resultado será &#39;2&#39;<br>say $matriz[1][1]; # resultado será &#39;dois&#39;<br><br>&lt;/perl_1&gt;<br><br>Claro que existe outras alternativas, mas eu recomendo você dar uma olhada no perllol (perldoc perllol).<br>

 </div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td style="font: inherit;" valign="top">#imprimir todas as frases seguido de sua pontuacao : print $vetor-&gt;[$i], &quot;=&quot;, $vetor-&gt;[$i], &quot;\n&quot;; ????<br>


for my $vetor (@vetor){<br>print $vetor-&gt;[0], &quot;=&quot;, $vetor-&gt;[1], &quot;\n&quot;;<br><br>}<br><br>Aguardo
 contato.<br><br>Obrigada!<br><br>Abraços<br>Juliana<br><br></td></tr></tbody></table><br>



       <br>_______________________________________________<br>
SaoPaulo-pm mailing list<br>
<a href="mailto:SaoPaulo-pm@pm.org" target="_blank">SaoPaulo-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a><br></blockquote></div><br><br clear="all"><br>-- <br>&quot;o animal satisfeito dorme&quot;. - Guimarães Rosa<br>