Ir para conteúdo
Fórum Script Brasil
  • 0

Calculo inexato


Alex A.P.

Pergunta

Olá pessoal.

Sou novo aqui no fórum, por isso gostaria de inicialmente agradecer a possibilidade de compartilhar meu trabalho com vocês.

Pessoal, estou desenvolvendo um sistema que faz calculo de peso de fardos de algodão, e surgiu um grande problema, vou relatar abaixo um exemplo para que vocês entendam melhor:

Temos um container com 24 mil Kg (24 toneladas), nesse container temos 124 fardos (pacotes) de algodão. Preciso que seja calculado o peso de cada fardo, dessa forma seria: 24.000 / 124, correto? PORÉM, é impossível que todos os fardos tenham o mesmo peso, por isso preciso que a divisão seja inexata, ou seja, um fardo tenha 200Kg, outro 198Kg, outro 201Kg, e por aí vai, logicamente trabalhando com uma porcentagem aceitável, 4% por exemplo.

Alguém tem uma idéia? Se tiverem, favor explicarem detalhadamente, por favor.

Agradeço desde já.

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0
O que da para você fazer é criar uma margem de erro, dai exibir 2 resultados, o minimo e o maximo

Desculpa, mas não entendi o que quis dizer.

Pra mim isso não faz sentido.

Se a variância é baixa, porque você não trabalha com a média?

MrReisGuilherme, na verdade eu quero que cada fardo tenha um peso, logicamente vários terão o mesmo peso, mas não quero que todos tenham o mesmo, entende?

Link para o comentário
Compartilhar em outros sites

  • 0

Então faça assim.

<?php

$media = 24000 / 124;

$minimo = $media-(0.04*$media);
$maximo = $media+(0.04*$media);

for($i=0;$i<123;$i++){
echo rand($minimo, $maximo)."<br>";
}

?>
Calcule em cima da media um valor maximo e minimo tendo 4% da media como variância. Depois faça um loop com a função rand passando essa variação como parâmetro. Resultado:
189
201
198
191
192
190
194
190
193
189
193
185
192
186
193
193
201
192
200
.
.
.

Link para o comentário
Compartilhar em outros sites

  • 0

Não entendi o por quê disso pois não estará pesando os sacos e sim gerando valores aleatórios para eles ( :D ) mas, considerando que os valores do peso do container, do nº de sacos e da variação do peso possam ser alterados, cira um form como o abaixo:

<form action="calcula.php" method="post">

<p>Inserir peso total:</p>
<input type="text" name="total" />

<p>Inserir número de sacos:</p>
<input type="text" name="sacos" />

<p>Inserir variação do peso:</p>
<input type="text" name="delta" />

<input type="submit" value="calcular" />

</form>
Considerando apenas pesos inteiros (em Kg), faz o seguinte para o calcula.php:
<?php
$total=$_POST['total'];
$sacos=$_POST['sacos'];
$delta=$_POST['delta'];

$controle=false;
while($controle = false)
{
  $media=$total%$sacos;  //pega o valor inteiro da divisão

  $dif=$delta*2; //quantidade de pesos diferentes possíveis

  $min=$media-$delta;
  $max=$media+$delta;
  $resto=$total;

  $primeiros=$sacos-5; //para gerar o peso do total de sacos - 5 a fim possibilitar o controle;

  for($i=0;$i<$primeiros;$i++)
  {
    $valor[$i]=rand($min,$max);
    $resto=$resto-$valor[$i];
  }

  $restomin=$min*5;
  $restomax=$max*5;

  if($total > $restomin AND $total < $restomax)
  {
    $mediafinal=$resto%5;

    //vai gerar os 5 ultimos valores sempre com a mesma padronização de variação
    $difmax=$maximo-$mediafinal;
    $difmin=$mediafinal-$minimo;
    if($difmax < $difmin)
    {
      $delta=$difmax;
    }
    else
    {
      $delta=$difmin;
    }

    $i=$primeiros;
    $valor[$i]=$mediafinal-$delta;
    $i++;
    $valor[$i]=$mediafinal;
    $i++;
    $valor[$i]=$mediafinal+$delta;
    $i++;
    $valor[$i]=$mediafinal;
    $i++;
    $valor[$i]=$mediafinal;
    $controle=true;
  }
}
?>

Creio que já quebre um galho.

Sugeri o código acima porque usando somente o rand() não garantirá que a soma do peso final gerado dê igual ao peso do container.

Link para o comentário
Compartilhar em outros sites

  • 0

Agradeço imensamente aos dois, vou testar o código e posto aqui pra dizer se funcionou corretamente, mas pela lógica acredito que sim.

Só pra explicar o porque disso, é que aqui no Brasil não tem balança nos terminais pra pesar os fardos, somente o container cheio, portanto, usamos um peso próximo a media dos fardos (200Kg), pois quando chegar lá fora, os 4% de diferença são aceitos, pois cada balança tem uma precisão. Entenderam?

Mais uma vez obrigado, e desculpem qualquer coisa.

Link para o comentário
Compartilhar em outros sites

  • 0

Agradeço imensamente aos dois, vou testar o código e posto aqui pra dizer se funcionou corretamente, mas pela lógica acredito que sim.

Só pra explicar o porque disso, é que aqui no Brasil não tem balança nos terminais pra pesar os fardos, somente o container cheio, portanto, usamos um peso próximo a media dos fardos (200Kg), pois quando chegar lá fora, os 4% de diferença são aceitos, pois cada balança tem uma precisão. Entenderam?

Mais uma vez obrigado, e desculpem qualquer coisa.

Link para o comentário
Compartilhar em outros sites

  • 0

Pelo o que entendi, ele não tem um formulário para receber os campos, ele só queria fazer um calculo com valores variando 4% da média. Como ele não vai ter uma balança para medir cada um, então o único jeito é jogar valores aleatórios dentro desta faixa.

Editado por MrReisGuilherme
Link para o comentário
Compartilhar em outros sites

  • 0

Os 2 scripts me atenderam muito bem. Agora estou precisando de alguém pra me ajudar em um script de exportação para XLS ou XML (tem que abrir no Excel), só que com formatação.

Se vocês entenderem disso, por favor me adicionem no MSN, ele segue abaixo (acho que pode mandar né?). Não estou pedindo favor, vou pagar.

alex_ap85@hotmail.com

No aguardo URGENTE,

Alex

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...