Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

rikardo_92

Somar certos valores

Mensagens Recomendadas

rikardo_92

Eu tenho uma caixa de texto, faço explode ao conteudo de modo a ficar com tudo separado por um espaço. Tenho a contagem de quantos pedaços me dá o explode.

Fico com algo deste tipo:

123 456 745 6753 57554 45 354

Sendo cada um dos pedaços obtidos do explode um número, eu agora queria somar os numeros desta forma:

1 + 4 + 7 + 10 + ...

2 + 5 + 8 + 11 + ...

3 + 6 + 9 + 12 + ...

O que tenho até agora é:

$resunproc = $_POST['resources'];
$resnl = str_replace("\n", " ", $resunproc);
$resxplode = explode(" ", $resnl);
$resno = count($resxplode);

Agradece-se ajuda :P

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
scorch

http://pt2.php.net/manual/en/function.substr.php

http://pt2.php.net/manual/en/function.count-chars.php

Primeiro obténs o número de caracteres por cada índice do array, e depois, usas a função substr para isolar o que queres. Depois soma-los.

Ou então, separa-los logo todos para um array, por exemplo:

//123 456 745 6753 57554 45 354
$rexplode[0][0] = 1;
$rexplode[0][1] = 2;
$rexplode[0][2] = 3;

$rexplode[1][0] = 4;
$rexplode[1][1] = 5;
//...


scorch_pp.png

PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
rikardo_92

Se calhar expliquei-me mal. Eu não sei o que vai ser introduzido na caixa de texto. Tenho mesmo que funcionar com as coisas divididas pelo espaço do explode.

Se eu tiver algo como isto:

567 586 684 234 784 978 295 978 678

Eu quero somar:

567 + 234 + 295 = X

586 + 784 + 978 = Y

684 + 978 + 678 = Z

E no final fazer echo ao X, Y e ao Z.

Mas esses números podem ter N digitos. Eu não sei o que vão lá por.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
scorch

Sim eu percebi. Mas com a função substr crias um array com aquele aspecto, para depois poderes somar.


scorch_pp.png

PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
MasterGipy

Se fores pelo caminho fácil da questão:

<form method="post" action="index2.php">
<textarea name="valores" cols="40" rows="5"></textarea>
<br>
<input type="submit" value="Calcular" />
</form>


<?php

// Metemos os valores a zeros
$woodtotal = 0;
$loamtotal = 0;
$irontotal = 0;

$valores = $_POST['valores']; 
$resultado = str_replace("\n", " ", $valores);

list($res1, $res2, $res3, $res4, $res5, $res6, $res7, $res8, $res9, $res10, $res11, $res12, $res13, $res14, $res15, $res16, $res17, $res18, $res19, $res20, $res21) = explode(" ", $resultado);

$woodtotal = ($res1 + $res4 + $res7 + $res10 + $res13 + $res16 + $res19);
$loamtotal = ($res2 + $res5 + $res8 + $res11 + $res14 + $res17 + $res20);
$irontotal = ($res3 + $res6 + $res9 + $res12 + $res15 + $res18 + $res21);
?>


<?echo "Madeira : ".$woodtotal;?>
<br>
<?echo "Argila : ".$loamtotal;?>
<br>
<?echo "Ferro : ".$irontotal;?>

Eu sei estas variáveis pois tive acesso ao codigo base do rikardo_92

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
rikardo_92

Bem, eu andei a ler a substr e não entendi onde aquilo pode entrar. Eu strings e arrays nunca usei antes, tive a ler os basicos mas não consegui lá chegar.

É suposto eu usar a substr para isolar cada um dos números? Mas como é que faço isso? :s

O código é o seguinte:

<?php

$resunproc = $_POST['resources'];
$resnl = str_replace("\n", " ", $resunproc);
$resxplode = explode(" ", $resnl);
$resno = count($resxplode);

$woodtotal = 0;
$loamtotal = 0;
$irontotal = 0;

$p = $_GET['p'];

?>

<html>
<head>
</head>

<body>
<br><br>
Calculadora de recursos saqueados
<br>
<br>
<br>
<form method="post" action="index.php?p=calc">
<textarea name="resources" cols="40" rows="5">
<? echo $resunproc; ?>
</textarea><br>
<input type="submit" value="Calcular" />
</form>
<br>

<?
if($p == 'calc') {
echo "Madeira : ".$woodtotal;?><br><?echo "Argila : ".$loamtotal;?><br><?echo "Ferro : ".$irontotal;
}
?>

</body>
</html>

Obrigado :P

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
infopc

então deixa ver, tens um campo te texto que pode ter quebra de linha "\n".

o texto vem no seguinte modo :

123 45 2347

e queres que fique do tipo

123 + 45 + 2347 = x

$x = 0;
$POST["caixatexto"] = str_replace ("\n", " ", $POST["caixatexto"]);
$nums = explode (" ", $POST["caixatexto"]);
foreach ($nums as $num) {
    if (is_numeric($num)) {
        $x += $num;
    }

echo "A soma dos numeros é {$x}";

é isto?


O que não tem solução, solucionado esta...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
MasterGipy

É quase isso:

Exemplo:

122 212 344 343 349 767 878 456 678

Primeira soma: 122 + 343 + 878 = X

Segunda soma: 212 + 349 + 456 = Y

Terceira soma: 344 + 767 + 678 = Z

echo X

echo Y

echo Z

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
sc0rpion

Mas tu vais ter sempre a mesma quantidade de números (9) na caixa de texto?

E o salto entre os números (3) é sempre o mesmo ou depende de quantos números tens? É que se tiveres por exemplo 5 números não tens forma de fazer isso.

Tens que especificar bem o que queres porque senão é difícil ajudarem-te. Eu próprio já vim ver o tópico várias vezes e não consegui perceber na totalidade o que queres.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
rikardo_92

Imagina que isto é a caixa de texto com possiveis valores:

126 9886 59849 
6 88 356 
969 474 9899 
355 7834 475 

O que eu quero fazer é somar o 126 + 6 + 969 + 355, depois o 9886 + 88 + 474 + 7834 e o 59849 + 356 + 9899 + 475

Os numeros são sempre inserido na caixa de texto daquela forma, tanto podem haver 10 linhas como 20 ou 30.

Cada linha tem 3 números diferentes, cada um desses números eu não sei a quantidade de algarismos que ele pode ter.

Isto é para o tribalwars, eu quero uma ferramenta que some os recursos roubados, como há três recursos diferentes quero que ele some casa recurso.

É daí que eu quero que ele some de três em três.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
sc0rpion

Então e tens uma textarea tal e qual como nesse exemplo que deste, ou cada linha desse exemplo corresponde a uma caixa de texto diferente?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
MasterGipy

Vai tudo para uma caixa de texto...

<form method="post" action="index.php?p=calc">
<textarea name="resources" cols="40" rows="5">
</textarea><br>
<input type="submit" value="Calcular" />
</form>

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
MasterGipy

Não percebo o que se está a tentar fazer, a não ser que seja um sistema à parte do tribalwars ..

Isto é para o tribalwars, eu quero uma ferramenta que some os recursos roubados, como há três recursos diferentes quero que ele some cada recurso.

É daí que eu quero que ele some de três em três.

É para uso próprio...é a parte...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
MasterGipy

Não acredito que seja à parte se ele vai ler um txt .. Mas posso estar enganado.

Não...

ele vai ler o que se insere na caixa de texto...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
sc0rpion

Bem, feito assim um bocado à pressão mas presumo que seja algo tipo isto:

<?php
if(isset($_POST['submit'])){

$array = preg_split("/(\r\n|\n)/", $_POST['resources']);

for($i = 0 ; $i < sizeof($array) ; $i++){

	$array[$i] = explode(" ", $array[$i]);

}

$resultado = array();

for($i = 0 ; $i < sizeof($array) ; $i++){

	for($j = 0 ; $j < sizeof($array[$i]) ; $j++){

		$resultado[$j] += $array[$i][$j];

	}

}
for($i = 0 ; $i < sizeof($resultado) ; $i++){

	echo "<br/>Resultado {$i}: {$resultado[$i]}";

}

}

?>

<form method="post" action="">
<textarea name="resources" cols="40" rows="5">
</textarea><br/>
<input type="submit" name="submit" value="Calcular" />
</form>

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.