Jump to content
Fórum Script Brasil
  • 0

if dentro de foreach - contar resultados


jamiel
 Share

Question

<form action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="post">
 
  
 
  <label id="lista02">Valor 1</label>
   <input type="txt" name="valor1" /> <br>
 
   <label id="lista02">Valor 2</label>
   <input type="txt" name="valor2" /> <br>
 
    <label id="lista02">Valor 3</label>
   <input type="txt" name="valor3" /> <br>
 
    <label id="lista02">Valor 4</label>
   <input type="txt" name="valor4" /> <br>
 
    <label id="lista02">Valor 5</label>
   <input type="txt" name="valor5" /> <br>
 
    <label id="lista02">Valor 6</label>
   <input type="txt" name="valor6" /> <br>
 
    <label id="lista02">Valor 7</label>
   <input type="txt" name="valor7" /> <br>
 
    <label id="lista02">Valor 8</label>
   <input type="txt" name="valor8" /> <br>
 
    <label id="lista02">Valor 9</label>
   <input type="txt" name="valor9" /> <br>
 
    <label id="lista02">Valor 10</label>
   <input type="txt" name="valor10" /> <br>
 
 
 
 
 
<p>
   <input type="submit" value="Calcular" name="calcular">
</p>
 
</form>
 
<hr>
 
 
=====================================================
 
<?php
 
$calc = $_POST["calcular"];
 
 
$valor1 = $_POST["valor1"];
$valor2 = $_POST["valor2"];
$valor3 = $_POST["valor3"];
$valor4 = $_POST["valor4"];
$valor5 = $_POST["valor5"];
$valor6 = $_POST["valor6"];
$valor7 = $_POST["valor7"];
$valor8 = $_POST["valor8"];
$valor9 = $_POST["valor9"];
$valor10 = $_POST["valor10"];
 
 
$valor[1] = $valor1;
$valor[2] = $valor2;
$valor[3] = $valor3;
$valor[4] = $valor4;
$valor[5] = $valor5;
$valor[6] = $valor6;
$valor[7] = $valor7;
$valor[8] = $valor8;
$valor[9] = $valor9;
$valor[10] = $valor10;
 
$soma = array_sum($valor);
 
if ($calc) {
 
 
 
                
          
          echo "<b><br>e) Quantos e quais valores s&atilde;o maiores que a m&eacute;dia.</b><br>";  
               
   
 
             
            foreach ($valor as $fibo) {
                
 
               if ($fibo > $soma/10) {
 
 
                   echo "Valores maiores que a m&eacute;dia : ".$fibo."<br>";
 
                     
 
               }
 
            }
            
 
 
}

 

 

 

Explicando:

 

1. Há dez campos para inserir números

2. A questão tem 5 opções e uma delas pede o seguinte : "e) imprima quantos e quais dos valores são maiores que a média desses valores."

3. Com esse código que está aí, que fiz, consigo que só apareçam os números maiores que a MÉDIA. A soma é feita e tudo mais.

4. A parte de contar quantos números SÃO MAIORES QUE A MÉDIA é que não estou conseguindo. 

 

Já tentei de tudo. Consigo até contar. Mas, apenas dentro do loop e mesmo contando apenas por linha. Ou seja, a cada de resultado aparece a quantidade igual 1. É até meio que óbvio, visto que vai quebrando linha e mostrando os resultado.

 

Ex:

Digamos que os 5 primeiros números foram 10, 9, 8, 7 e 6. Com esse código, apenas eles são mostrados. Até porque são os únicos maiores que determinada MÉDIA. Gostaria de contar esse resultado. Tipo:5 números. 

 

Se alguém puder ajudar, agradeço desde já ...

Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 0

Oi Jamiel!
O HTML5 teve sua primeira especificação anunciada no início de 2008!
Pois é... em alguns dias, teremos gente usando html5 há 9 anos!!!
Segundo a W3C, mantenedora do HTML, id é igual identidade de gente mesmo. Não podem existir duas iguais!
Veja em http://www.w3.org/TR/2011/WD-html5-20110525/elements.html#the-id-attribute
Não existe type="txt"! Veja em: http://www.w3.org/TR/html-markup/input.html
Para entrada de números, use o type="number" e em html5 não se usa mais aquela barrinha no final das tags: />
Veja exemplos em: http://www.w3schools.com/html/html_form_input_types.asp

scriptBrasil.JPG.0e93b4d9ed936ea1f47410b

Segue sugestão de solução:

<meta charset="utf-8">
<form action="<?= $_SERVER['REQUEST_URI']; ?>" method="post">
    <?php
    $numInputs = 10; // define quantos campos de entrada de número serão criados
    $inputs = null; // inicia uma variável para guardar os inputs
    for ($i = 1; $i <= $numInputs; $i++) { // estrutura de repetição para gerar os inputs
        // adiciona os inputs com seus respectivos labels à variável $inputs
        $inputs .= "<label>Valor $i</label> <input type='number' placeholder='Valor $i' title='Digite o valor $i' name='valor$i'><br>";
    }
    echo $inputs; // exibe os inputs na tela
    ?>
    <p>
        <input type="submit" value="Calcular">
    </p>

</form>
<hr>=====================================================

<?php
if (sizeof($_POST)) {
    $valores = $_POST;

    $soma = array_sum($valores); // soma os valores

    echo '<h3>e) Quantos e quais valores são maiores que a média.</h3>';
    
    foreach ($valores as $fibo) {
        if ($fibo > $soma / $numInputs) {
            $maioresQueAMedia[] = $fibo; // guarda os valores maiores que a média em um array
        }
    }
    if (isset($maioresQueAMedia)) { // se a variável $maioresQueAMedia existir, existem valores maiores que a média
        echo '<p>Quantidade de valores maiores que a média: ' . sizeof($maioresQueAMedia) . '</p>';
        echo '<p>Valores maiores que a média: ' . implode(', ', $maioresQueAMedia) . '</p>';
    }
}

Link to comment
Share on other sites

  • 0
13 minutos atrás, lowys disse:

Oi Jamiel!
O HTML5 teve sua primeira especificação anunciada no início de 2008!
Pois é... em alguns dias, teremos gente usando html5 há 9 anos!!!
Segundo a W3C, mantenedora do HTML, id é igual identidade de gente mesmo. Não podem existir duas iguais!
Veja em http://www.w3.org/TR/2011/WD-html5-20110525/elements.html#the-id-attribute
Não existe type="txt"! Veja em: http://www.w3.org/TR/html-markup/input.html
Para entrada de números, use o type="number" e em html5 não se usa mais aquela barrinha no final das tags: />
Veja exemplos em: http://www.w3schools.com/html/html_form_input_types.asp

scriptBrasil.JPG.0e93b4d9ed936ea1f47410b

Segue sugestão de solução:

<meta charset="utf-8">
<form action="<?= $_SERVER['REQUEST_URI']; ?>" method="post">
    <?php
    $numInputs = 10; // define quantos campos de entrada de número serão criados
    $inputs = null; // inicia uma variável para guardar os inputs
    for ($i = 1; $i <= $numInputs; $i++) { // estrutura de repetição para gerar os inputs
        // adiciona os inputs com seus respectivos labels à variável $inputs
        $inputs .= "<label>Valor $i</label> <input type='number' placeholder='Valor $i' title='Digite o valor $i' name='valor$i'><br>";
    }
    echo $inputs; // exibe os inputs na tela
    ?>
    <p>
        <input type="submit" value="Calcular">
    </p>

</form>
<hr>=====================================================

<?php
if (sizeof($_POST)) {
    $valores = $_POST;

    $soma = array_sum($valores); // soma os valores

    echo '<h3>e) Quantos e quais valores são maiores que a média.</h3>';
    
    foreach ($valores as $fibo) {
        if ($fibo > $soma / $numInputs) {
            $maioresQueAMedia[] = $fibo; // guarda os valores maiores que a média em um array
        }
    }
    if (isset($maioresQueAMedia)) { // se a variável $maioresQueAMedia existir, existem valores maiores que a média
        echo '<p>Quantidade de valores maiores que a média: ' . sizeof($maioresQueAMedia) . '</p>';
        echo '<p>Valores maiores que a média: ' . implode(', ', $maioresQueAMedia) . '</p>';
    }
}

Rapaz! Você mitou no infinito ...rsrssrs

Vou estudar bem esse seu código. Simplificação monstra ...

Muito obrigado!

Link to comment
Share on other sites

  • 0

Não entendi algumas coisas nesse código:

 

<?php
if (sizeof($_POST)) {
    $valores = $_POST;

    $soma = array_sum($valores); // soma os valores

    echo '<h3>e) Quantos e quais valores são maiores que a média.</h3>';
    
    foreach ($valores as $fibo) {
        if ($fibo > $soma / $numInputs) {
            $maioresQueAMedia[] = $fibo; // guarda os valores maiores que a média em um array
        }
    }
    if (isset($maioresQueAMedia)) { // se a variável $maioresQueAMedia existir, existem valores maiores que a média
        echo '<p>Quantidade de valores maiores que a média: ' . sizeof($maioresQueAMedia) . '</p>';
        echo '<p>Valores maiores que a média: ' . implode(', ', $maioresQueAMedia) . '</p>';
    }
}

Obs: Putz! Ali foi sem querer querendo (type=txt (text))!

1. sizeof($_POST)

2. $valores = $_POST (é como se fosse um ARRAY?)

3. $maioresQueAMedia[] = $fibo; (é como se pegasse esses valores e armzanasse nessa nova variável ($maioresQueAMedia)?)

4. sizeof($maioresQueAMedia) (não entendi)

5. implode (também não entendi)

Agradeço desde já ,.....

Link to comment
Share on other sites

  • 0

Oi Jamiel!

No php.net você tem a oportunidade de encontrar o manual completasço do php. E grande parte já está traduzida para o português-br.

Lá você terá a possibilidade de ler um pouco sobre sizeof: http://php.net/manual/pt_BR/function.sizeof.php

$_POST: http://php.net/manual/pt_BR/reserved.variables.post.php

Arrays: http://php.net/manual/pt_BR/function.array.php

Implode: http://php.net/manual/pt_BR/function.implode.php

bons estudos!

Link to comment
Share on other sites

  • 0
Em 18/12/2015 at 17:53, lowys disse:

Oi Jamiel!

No php.net você tem a oportunidade de encontrar o manual completasço do php. E grande parte já está traduzida para o português-br.

Lá você terá a possibilidade de ler um pouco sobre sizeof: http://php.net/manual/pt_BR/function.sizeof.php

$_POST: http://php.net/manual/pt_BR/reserved.variables.post.php

Arrays: http://php.net/manual/pt_BR/function.array.php

Implode: http://php.net/manual/pt_BR/function.implode.php

bons estudos!

Obrigado!

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.6k
    • Total Posts
      646.2k
×
×
  • Create New...