jamiel Postado Janeiro 24, 2016 Denunciar Share Postado Janeiro 24, 2016 Faça um programa para calcular a seguinte expressão : S = 1/1 + 3/2 + 5/3 ... 99/50 <?php //número ímpar - numerador $num = (2*$i + 1); //denominador $den = ($i + 1); //S começando com zero $s = 0; //soma irá guardar os valores sequenciais $soma = []; for ($i=0; $i <50; $i++) { $s = $s + ($num/$den); $soma[] = $s; } echo array_sum($soma); ?> O resultado tá meio estranho -> soma de todos denominadores e não a soma do resultado de cada divisão Alguém tem alguma dica? Agradeço desde já .. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 wash Postado Janeiro 24, 2016 Denunciar Share Postado Janeiro 24, 2016 (editado) Olá Jamiel! Não sei se entendi... mas segue sugestão para solução: <?php // o total atual é igual a zero: $total = 0; // os números ímpares e o divisor, começam do 1: $impares = $divisor = 1; // maior número ímpar da sequência: $limite = 99; // variável criada apenas para exibição na tela: $display = []; // estrutura que efetuará a repetição, divisão e soma: for ($impares; $impares <= $limite; $impares+=2) { // o incremento de dois em dois, pegará apenas os números ímpares $total+=$impares/$divisor; // guarda uma mostra da operação em formato de string $display[]=$impares.'/'.$divisor; // incremento de $divisor: $divisor++; } echo implode(' + ', $display).'<br>Total: '.$total; Editado Janeiro 24, 2016 por wash Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 jamiel Postado Janeiro 24, 2016 Autor Denunciar Share Postado Janeiro 24, 2016 Rapaz! Você é o cara. Vou estudar essa sua solução. Tinha colocado rapidinho no Excel e lembro que o resultado é esse mesmo. 95 e uns quebradinhos ... Muito obrigado mesmo ... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 jamiel Postado Janeiro 25, 2016 Autor Denunciar Share Postado Janeiro 25, 2016 Deixa ver se entendi : $impares = $divisor = 1; --> começam com 1 cada... $total = 0; --> $impares+=2 --> impares + 2 | incrementa 2 ao anterior $divisor++ --> +1 | incrementa 1 ao anterior $display[]=$impares.'/'.$divisor; | armazena como uma array Ou seja : incrementa no geral sempre 2/1 $divisor++ $total+= $impares / $divisor; $display[]=$impares.'/'.$divisor; 1 - 1/1 | 1/1 2 - $total = 1/1 + 2/1 | 3/2 3 - $total = 3/2 + 2/1 | 5/3 4 - $total = 5/3 + 2/1 | 7/4 e assim por diante .. Correto? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 lowys Postado Janeiro 25, 2016 Denunciar Share Postado Janeiro 25, 2016 Não sr.! O número à esquerda da barra jamais será par. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 jamiel Postado Janeiro 25, 2016 Autor Denunciar Share Postado Janeiro 25, 2016 Rapaz! Não entendi ... Se refere ao "2/1" que se repete? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 wash Postado Janeiro 28, 2016 Denunciar Share Postado Janeiro 28, 2016 (editado) Creio que se refere a qualquer número que esteja à esquerda da barra de divisão nenhum dos números que ficarão à esquerda da barra, será par. À esquerda da barra(de divisão) só terá números ímpares. De acordo com o exemplo postado: S = 1/1 + 3/2 + 5/3 ... 99/50 Editado Janeiro 28, 2016 por wash Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
jamiel
Faça um programa para calcular a seguinte expressão :
S = 1/1 + 3/2 + 5/3 ... 99/50
<?php
//número ímpar - numerador
$num = (2*$i + 1);
//denominador
$den = ($i + 1);
//S começando com zero
$s = 0;
//soma irá guardar os valores sequenciais
$soma = [];
for ($i=0; $i <50; $i++) {
$s = $s + ($num/$den);
$soma[] = $s;
}
echo array_sum($soma);
?>
O resultado tá meio estranho -> soma de todos denominadores e não a soma do resultado de cada divisão
Alguém tem alguma dica?
Agradeço desde já ..
Link para o comentário
Compartilhar em outros sites
6 respostass a esta questão
Posts Recomendados
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.