Jump to content


Photo

Problema Na Ordenação De Array


  • Faça o login para participar
2 replies to this topic

#1 gonacts

gonacts

    "Agora eu tb tenho um Tux..." =D

  • Usuários
  • 1030 posts
  • Sexo:Não informado

Posted 08/06/2005, 14:55

Tenho o seguinte código:

<?
$vetor[1][1] = 9;
$vetor[2][1] = 2;//<==
$vetor[3][1] = 8;

$vetor[1][2] = 1;//<==
$vetor[2][2] = 5;
$vetor[3][2] = 3;

$vetor[1][3] = 8;
$vetor[2][3] = 7;
$vetor[3][3] = 3;//<==

$tarefas = 3;
$processadores = 3;

for($i=1;$i<=$tarefas;$i++){
for($y=1;$y<=$processadores;$y++){
  $vet[] = $vetor[$y][$i];  
}
sort($vet);
$menor[] = $vet[0];
}


for($r=0;$r<$tarefas;$r++){
echo"Tarefa ".($r+1)." - $menor[$r]<br>";
}
?>


era para sair o seguinte resultado:
Tarefa 1 - 2
Tarefa 2 - 1
Tarefa 3 - 3
e está saindo esse:
Tarefa 1 - 2
Tarefa 2 - 1
Tarefa 3 - 1

a idéia é pegar os menores tempos das tarefas feita pelos processadores....
Estrutura: $vetor[processador][tarefa] = $tempo;

Edição feita por: gonacts, 08/06/2005, 14:56.

"Ninguém é tão inteligente que não possa aprender e ninguém é tão burro que não possa ensinar.."
"As dúvidas engrandecem nossa sabedoria, mas não basta somente tirá-las, temos que entendê-las"

#2 dlemes

dlemes

    Normal

  • Usuários
  • 73 posts
  • Sexo:Não informado

Posted 08/06/2005, 15:57

cara procura por algoritmos de ordenação na NET, existem vários bastante eficientes, mas o mais simples deles é o bolha, ai é só vc trocar pela sintaxe do php.
--------------------------------------------------
email: dlemes[ARROBA]gmail.com
precisando de um sistema de e-commerce em php?
www.dlemes.com.br/loja25b

#3 lugs

lugs

    Normal

  • Usuários
  • 83 posts
  • Sexo:Não informado
  • Localidade:Capinas - SP

Posted 08/06/2005, 16:37

Resolvido! Testado e aprovado.

Tá meio grande o arquivo mas é pq tá bem organizado:

<h3>Escolhendo menores valores de um vetor bidimensional:</h3><p>
<br>

<?

// descrição do $vetor:
// primeira dimensão: nome do processador
// segunda dimensão: tarefa a ser desempenhada
// valor dessa posição bidimensional: tempo da tarefa em tal processador

$vetor['a'][0] = 2;
$vetor['a'][1] = 30;
$vetor['a'][2] = 6;
$vetor['a'][3] = 46;
$vetor['a'][4] = 25;
$vetor['a'][5] = 32;

$vetor['b'][0] = 5;
$vetor['b'][1] = 2;
$vetor['b'][2] = 65;
$vetor['b'][3] = 34;
$vetor['b'][4] = 53;
$vetor['b'][5] = 54;

$vetor['c'][0] = 42;
$vetor['c'][1] = 8;
$vetor['c'][2] = 63;
$vetor['c'][3] = 34;
$vetor['c'][4] = 23;
$vetor['c'][5] = 96;

?>

<b>Valores desorganizados:</b><br>
<table>
 <tr>
  <td>Nome</td>
  <td>0</td>
  <td>1</td>
  <td>2</td>
  <td>3</td>
  <td>4</td>
  <td>5</td>
 </tr>
<?
// $v1 será o nome do processador
// $v2 será o array da tarefa
// $v3 será o tempo por ela gasto
foreach ($vetor as $v1=>$v2)
{
 echo "<tr><td><small>$v1</small></td>";
 foreach ($v2 as $v3)
 {
  echo "<td><small>$v3</small></td>";
 }
 echo "</tr>";
}

// calculando
// $v1 será o nome do processador
// $v2 será o array da tarefa
// $v3 será o número da tarefa
// $v3 será o tempo por ela gasto

foreach ($vetor as $v1=>$v2)
{
 foreach ($v2 as $v3=>$v4)
 {
  if ($temp[$v3] == false)
   $temp[$v3] = $v4;
  if ($temp[$v3] > $v4)
   $temp[$v3] = $v4;
 }
}

//botando o nome
foreach ($vetor as $v1=>$v2)
{
 foreach ($v2 as $v3=>$v4)
 {
  if ($temp[$v3] == $v4)
   $temp[$v3] = $v1;
 }
}

// mostrando
echo "<tr><td colspan=7><hr size=3></td></tr>";
echo "<tr><td><small>Melhor</small></td>";
foreach ($temp as $v2)
{
 echo "<td><small>$v2</small></td>";
}

// Gustavo Serra Scalet
// gsscalet@yahoo.com.br
?>

t+
"Qndo eu apontar para a Lua, não olhe para o meu dedo"




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq