Jump to content
gersonab

função de comparação com multiplos de 5

Recommended Posts

boa tarde

tem como simplificar criando uma função e ou outra forma para se fazer uma comparação dos múltiplos de 5 de 5 a 200 por exemplo ?

assim até funciona mas fica algo .......

////$a = 5, $b = 10 e assim por diante até 200

if ($metros > 5 && $metros <= 10){
	$mtr = bcsub($b, $metros, 3);
	$va01 = $mtr*$valorm;
	} else if ($metros > 10 && $metros <= 15){
	$mtr = bcsub($c, $metros, 3);
	$va01 = $mtr*$valorm;
    +++++++++++++++
	} else if ($metros > 195 && $metros <= 200){
	$mtr = bcsub($d, $metros, 3);
	$va01 = $mtr*$valorm;

 

Share this post


Link to post
Share on other sites

Eu tentei assim:

 

<?php
$metros=7;
$valorm=7;
echo "<table><th>metros<th>mtr<th>va01";
for($i=5;$i<=200;$i=$i+5){
    if ($metros > $i && $metros <= $i+5){
	    $mtr = bcsub($i, $metros, 3);
	    $va01 = $mtr*$valorm;
        echo "<tr><td>".$metros."<td>".$mtr."<td>".$va01;}}

 

Share this post


Link to post
Share on other sites

Olá!
Não fui capaz de entender a questão
 

On 10/15/2023 at 3:51 PM, gersonab said:

if ($metros > 5 && $metros <= 10){

Nesse if, não vai ser considerado o 5, apenas os 6, 7, 8, 9 e 10
e 6, 7, 8, e 9, não são múltiplos de 5

Consegue descrever melhor o que precisa ser feito?

Share this post


Link to post
Share on other sites

preciso fazer uma comparação utilizando múltiplos de 5 tipo :

if ($mtgt > 5 && $mtgt <= 10){
	$mtr = bcsub(10, $mtgt, 3);
	$va01 = $mtr*$valorm;
	} else if ($mtgt > 10 && $mtgt <= 15){
	$mtr = bcsub(15, $mtgt, 3);
	$va01 = $mtr*$valorm;
	} else if ($mtgt > 15 && $mtgt <= 20){
	$mtr = bcsub(20, $mtgt, 3);
	$va01 = $mtr*$valorm;
	} else if ($mtgt > 20 && $mtgt <= 25){
	$mtr = bcsub(25, $mtgt, 3);
	$va01 = $mtr*$valorm;
      // indo até 200 por exemplo, imagina o tamanho ......

se o mtgt for 7 , aí o mtr será igual a 3, se for 171 o mtr vai ser 4 , espero que tenha entendido , pode ter algo mais simples de fazer, mas ainda não encontrei ....

Share this post


Link to post
Share on other sites
16 horas atrás, gersonab disse:

não deu, eu coloquei 171 metros e o resultado foi :

mtr = 1 deveria ser 4
va01 = 7 deveria ser 28


Obrigado por me corrigir, eu mudei o código:

<?php
$metros=171;
$valorm=7;
echo "<table><th>metros<th>mtr<th>va01";
for($i=5;$i<=200;$i=$i+5){
    if ($metros > $i && $metros <= $i+5){
	    $mtr = bcsub($i+5, $metros, 3);
	    $va01 = $mtr*$valorm;
        echo "<tr><td>".$metros."<td>".$mtr."<td>".$va01;}}

 

Share this post


Link to post
Share on other sites

Eu tb não entendi foi nada!
Onde entra o múltiplo de 5? Pra que serve o múltiplo de 5 nesse contexto?
 

15 horas atrás, gersonab disse:

se o mtgt for 7 , aí o mtr será igual a 3, se for 171 o mtr vai ser 4 , espero que tenha entendido

já que 7, 3, 171 e 4 não são múltiplos de 5


e o intervalo

15 horas atrás, gersonab disse:

} else if ($mtgt > 10 && $mtgt <= 15){

vai cobrir os números 11, 12, 13 e 14 q também não são múltiplos de 5

Share this post


Link to post
Share on other sites

funcionou, obrigado.

explicando, em uma obra quantas placas de 5 metros quadrado vou precisar para cobrir 171 metros ?

serão necessárias 35 placas.
e essa sobra de 4 metros quadrados ? vai ser cobrada como ? normal ou preço de custo ?

apenas para definir a sobra de material.

Share this post


Link to post
Share on other sites
1 hora atrás, gersonab disse:

funcionou, obrigado.

explicando, em uma obra quantas placas de 5 metros quadrado vou precisar para cobrir 171 metros ?

serão necessárias 35 placas.
e essa sobra de 4 metros quadrados ? vai ser cobrada como ? normal ou preço de custo ?

apenas para definir a sobra de material.


Valeu pela explicação, eu fiquei preso na função do PHP bcsub( ), ainda não sei como usá-la. A equação que eu montei foi baseada no famoso método da tentativa e erro, assim, eu recomendo fazer mais testes antes de tornar oficial no código. Outro problema do meu código é que ele faz muitos ciclos, ou seja, trata-se de uma gambiarra. Ele não merece o rótulo de acadêmico.

Share this post


Link to post
Share on other sites
<style>
  *{
    font-family: sans-serif;
  }
</style>
<?php

// SCRIPT PARA CALCULAR QUANTAS PLACAS DE Xm² cabem num espaço de Ym²
// e quantas placas adicionais serão necessárias para cobrir o espaço restante, se existir

// plate's size in m²
$platesSize = 5;

// total area to cover in m²
$totalArea = 171;

// calc how many complete plates are needed to cover the area
$completePlatesNeeded = floor($totalArea / $platesSize);

// calc uncovered area
$uncoveredAreaSize = $totalArea % $platesSize;

echo "<p>Área total: <b>{$totalArea}m²</b></p>";
echo "<p>Tamanho de cada placa: <b>{$platesSize}m²</b></p>";
echo "<p>Placas completas necessárias: <b>{$completePlatesNeeded}</b></p>";
echo "<p>Área restante não coberta: <b>{$uncoveredAreaSize}m²</b></p>";

// if unvered area exists, calculate how many plates are needed
if ($uncoveredAreaSize > 0) {
  $adicionalPlatesNeeded = ceil($uncoveredAreaSize / $platesSize);
  echo "<p>Placas adicionais necessárias: <b>{$adicionalPlatesNeeded}</b></p>";
}

4VmxNJvcTCOx3yTuVnj_6Q.png

 

Share this post


Link to post
Share on other sites

Wash, realmente muito bom, porém a área restante ela tem q ser igual a 4 que é o q falta para completar 175 ....  olha só o q fiz aqui agora antes de ver sua resposta ...

$metros=171;
$valorm=7;
$pl = $metros / 5;
echo $pl."<br>";
$px = ceil($pl);
echo $px."<br>";
$pc = $px * 5;
echo $pc."<br>";
$total = $pc - $metros;
echo $total."<br>";
$valsobra = $total*$valorm;
echo $valsobra;

sem laço sem nada e simples.

Share this post


Link to post
Share on other sites
11 horas atrás, gersonab disse:

a área restante ela tem q ser igual a 4 que é o q falta para completar 175

Desculpa me intrometer, mas se a área a ser preenchida é de 171m²
foram usadas 34 placas de 5m²
34 x 5m² = 170m²
logo falta apenas 1m² para completar a área total sugerida de 171m²
Até então 175m² não existia na equação.
Afinal, de onde o sr. tirou esse 175m²???

Ficou meio fora de contexto
 

Share this post


Link to post
Share on other sites

Cada placa tem 5 m², preciso do total de placas utilizadas, o serviço é por metro quadrado, preciso da sobra para um novo cálculo, tipo:
171 m² - cada metro vale R$ 10,00 os 4 de sobra valem R$ 5,00 para compensar a perda.

Share this post


Link to post
Share on other sites
Em 18/10/2023 at 18:54, tetsuo disse:

Desculpa me intrometer, mas se a área a ser preenchida é de 171m²
foram usadas 34 placas de 5m²
34 x 5m² = 170m²
logo falta apenas 1m² para completar a área total sugerida de 171m²
Até então 175m² não existia na equação.
Afinal, de onde o sr. tirou esse 175m²???

Ficou meio fora de contexto
 


Baseado na sua observação, acredito que a melhor equação para calcular a sobra é essa:

 

<?php
$metros=172;
$placa=5;
$numero_placas=intval($metros/$placa)+(fmod($metros,$placa)!==0);
$sobra=$placa-fmod($metros,$placa);
echo "para cobrir $metros metros^2 vai ser preciso $numero_placas <br>
    placas de $placa metros^2, mas vai sobrar $sobra metros^2";

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Carcleo
      Estou começando no Laravel 11 e me deparei com um problema de belongsTo
       
      public function listOfClass(Request $request, StudentDisciplineClassroom $sdc) : ?string {         $all = $sdc::select('student')->with('studentRelation')->where('classroom',$request->classroom)->distinct('student')->get();     dd($all->toArray());     $students = [];     foreach ($all as $student) {             $students[] =$student;     }       return response()->json($students)->getContent();     } isso

      Em studentRelation temos na tabela StudentDisciplineClassroom com os campos

      id(chave primaria)
      ra (chave estrangera que referencia o campo academic_registration na tabela de students)

      e a tabela student tem os campos

      id (chave primária)
      academic_registration (que vai ser refeenciada na tabela StudentDisciplineClassroom

      Mas na hora de fazer
      $sdc::select('student')->with('studentRelation')->where('classroom',$request->classroom)->distinct('student')->get();
      O studentRelation retorna nulo

      Onde eu posso estar errando?
    • By joao b silva
      Tenho uma pequena aplicação em php que gera arquivos pdf com a MPDF e envia email com a PHPMAILER. De repente a app parou de enviar os emails  e apresenta a seguinte mensagem de erro:
       
      Error PHPMailer: SMTP Error: Could not authenticate.
       
      Faço uso de um hotmail para a configuração do PHPMAILER.
    • By violin101
      Caros amigos, saudações.
       
      Gostaria de tirar uma dúvida com os amigos.
       
      Quando programava em DOS. utilizava algumas teclas de atalho para: SALVAR / EDITAR / EXCLUIR / IMPRIMIR.
      Por exemplo:
      Salvar ----> ALT+S
      Editar ----> ALT+E
      Excluir --> ALT+X
      Imprimir -> ALT+I

      no PHP tem como colocar esses ATALHOS nos button, para o usuário trabalhar com esses atalhos e como seria ?

      grato,
       
      Cesar
    • By violin101
      Caros Amigos, saudações.
       
      Por favor, me perdoa em postar uma dúvida.
       
      Preciso criar uma Rotina onde o usuário possa buscar na Base de Dados de Produtos, tanto por Código e Descrição, ou seja:
      - caso o usuário digita o Código, mostra os dados do Produto.
      - caso o usuário digita a Descrição, mostra os dados do Produto
       
      Fiz uma Rotina, onde o usuário digita a DESCRIÇÃO com a função AUTOCOMPLETE.    <=== está funcionando certinho.
       
      Minha dúvida é como faço para DIGITAR o Código e mostrar os dados também.
       
      o meu AutoComplete na MODEL está assim.
      public function autoCompleteProduto($q){ $this->db->select('*' ) ->from('produtos') ->where('produtos.statusProd',1) ->like('descricao', $q) ->limit(5) ->order_by('descricao', 'ASC'); $query = $this->db->get(); if ($query->num_rows() > 0) { foreach ($query->result_array() as $row) { $row_set[] = ['label' => str_pad($row['idProdutos'], '5', '0', STR_PAD_LEFT).' - '.$row['descricao'], 'id' => $row['idProdutos'], 'descricao' => $row['descricao'], 'cod_interno' => $row['cod_interno'], 'prd_unid' => $row['prd_unid'], 'estoque_atual' => $row['estoque_atual'] ]; } echo json_encode($row_set); } }  
       
      no CONTROLLER está assim:
      public function autoCompleteProduto() { $this->load->model('estoque/lancamentos_model'); if (isset($_GET['term'])) { $q = strtolower($_GET['term']); $this->lancamentos_model->autoCompleteProduto($q); } }  
       
      na VIEW está assim:
      <div class="col-md-10"> <label for="idProdutos">Produto:</label> <input type="hidden" name="idProdutos" id="idProdutos"> <input type="text" class="form-control" id="descricao" name="descricao" style="font-size:15px; font-weight:bold;" placeholder="Pesquisar por descrição do produto" disabled> </div>  
      VIEW + JAVASCRIPT
       
      //Função para trazer os Dados pelo o AutoComplete. function resolveAutocomplete() { $("#descricao").autocomplete({ source: "<?php echo base_url(); ?>estoque/lancamentos/autoCompleteProduto/", minLength: 2, select: function (event, ui) { $("#idProdutos").val(ui.item.id); $("#cod_interno").val(ui.item.cod_interno); $("#descricao").val(ui.item.descricao); $("#prd_unid").val(ui.item.prd_unid); $("#estoque_atual").val(ui.item.estoque_atual); $("#qtde").focus(); } }); } // inicia o autocomplete resolveAutocomplete();  
      Grato,
       
      Cesar
    • By belann
      Olá!
       
      Estou tentando criar um projeto laravel e está dando o seguinte erro 
      curl error 60 while downloading https://getcomposer.org/versions: SSL certificate problem: unable to get local issu
        er certificate
      Já tentei atualizar o composer, mas dá o mesmo erro acima.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.