santamariense 0 Denunciar post Postado Setembro 7, 2016 Dada uma matriz (exemplo: ), reorganize as linhas de modo que a partir do trecho 1, seu primeiro elemento seja igual ao último do trecho anterior. Resultado final para a matriz dada como exemplo: . Já fiz de tudo quanto é jeito mas não consigo criar um programa em php para isso que funcione. Alguém consegue resolver? Compartilhar este post Link para o post Compartilhar em outros sites
DSerma 19 Denunciar post Postado Setembro 7, 2016 Poste seu código feito até o momento, e o erro que ocorre.A galera irá te ajudar a sanar a dúvida, mas acho que ninguém irá fazer o trabalho para você.... Compartilhar este post Link para o post Compartilhar em outros sites
santamariense 0 Denunciar post Postado Setembro 8, 2016 Pois vamos lá... Eu tinha pensado em não influenciar ninguém em uma determinada direção, mas enfim... Este array... Array ( [0] => Array ( [0] => 0 [1] => 0 [2] => 3797121530 ) [1] => Array ( [0] => 0 [1] => 1 [2] => 3721261637 ) [2] => Array ( [0] => 0 [1] => 2 [2] => 3797063106 ) [3] => Array ( [0] => 1 [1] => 0 [2] => 3797121528 ) [4] => Array ( [0] => 1 [1] => 1 [2] => 3797121529 ) [5] => Array ( [0] => 1 [1] => 2 [2] => 3797121530 ) [6] => Array ( [0] => 2 [1] => 0 [2] => 3797121528 ) [7] => Array ( [0] => 2 [1] => 1 [2] => 3797063106 ) ) por meio deste código... for ($aa=0;$aa<count($lNdT);$aa++) { if ($aa==0){ $lista_refNd[0]=$lNdT[0][2]; } elseif ($lNdT[$aa][1]>$lNdT[$aa-1][1]) { $lista_refNd[$aa]=$lNdT[$aa][2]; } elseif ($lNdT[$aa][2] == $lNdT[$aa - 1][2]) { $lista_refNd[$aa] = $lNdT[$aa][2]; } else { //Em caso de estar desordenado: //pega o último valor obtido para procurá-lo na lista for ($ee=0;$ee<count($lNdT);$ee++) { if ($lista_refNd[$aa-1]==$lNdT[$ee][2] #Se encontrou a ID && $lNdT[$aa-1][1] != $lNdT[$ee][1]){ #E ela não for do mesmo trecho $trecho = $lNdT[$ee][0]; $tamTrecho = $lNdT[$ee][1]; //echo "<br>Tamanho do trecho = ".$tamTrecho."<br>"; //Reordena o trecho citado como em desordem $lProv = array(array()); # Lista provisória for($ii=0;$ii<count($lNdT);$ii++){ if ($lNdT[$ii][0] == $trecho) {#Ao encontrar o trecho desordenado for ($oo=$ii;$oo==$ii+$tamTrecho;$oo++) { #Reordena for ($uu=$ii+$tamTrecho;$uu==$ii;$uu--){ $lProv[0] = $lNdT[$oo]; $lNdT[$oo] = $lNdT[$uu]; $lNdT[$uu] = $lProv[0]; } } //Adiciona a lista final na ordem $uu = $aa; for ($oo=0;$oo==$tamTrecho;$oo++){ $lista_refNd[$uu++] = $lNdT[$oo][2]; } break; } } } } } } Isto dá como resultado... Array ( [0] => 3797121530 [1] => 3721261637 [2] => 3797063106 [3] => 3797063105 [4] => 3797121529 [5] => 3797121530 [6] => 3797121530 [7] => 3797063106 ) Quando queria que estivesse resultando em.. Array ( [0] => 3797121530 [1] => 3721261637 [2] => 3797063106 [3] => 3797063106 [4] => 3797121528 [5] => 3797121528 [6] => 3797121529 [7] => 3797063130 ) Eu acho que enquanto estou pensando, minha cabeça entra em loop infinito e funde. :D Tenho pouca experiência em php. E o que é pior... para começar, não estou entendendo por que que do array 3 ao 5 está-se modificando o próprio valor.... Compartilhar este post Link para o post Compartilhar em outros sites