PHP - Acumular un resultado y que vaya multiplicándose 10 veces mas

   
Vista:
Imágen de perfil de Fernando

Acumular un resultado y que vaya multiplicándose 10 veces mas

Publicado por Fernando (5 intervenciones) el 01/05/2017 22:35:57
Hola, mi problema es que tengo que ingresar 2 valores, por ejemplo el ingreso quedaría asi, a=7, x=9
resulta que al multiplicar a * x me da 63, ese resultado, el 63 debe volver a multiplicarse por x, quedaría 441, ese mismo multiplicaría por 7 otra vez, en un total de 10 veces, lo he intentado a hacer con el for, pero se repite un mismo resultado por ejemplo el 63 me desglosa 10 veces, me pueden ayudar como se hace?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de kip

Acumular un resultado y que vaya multiplicándose 10 veces mas

Publicado por kip (862 intervenciones) el 02/05/2017 00:51:08
Hola, esta parte creo que estas explicandola mal:

Tenemos:

1
2
$a = 7;
$x = 9;

Multiplicamos ambos, quedaria 63 tal como dices:

1
2
$resultado = $a * $x;
// 63

Ahora bien dices que aquel resultado debe ser multiplicado de nuevo por $x (esta variable vale 9) no ?

1
2
$resultado = $resultado * $x;
// 63 * 9 = 567

El resultado que colocas no coincide con el resultado que da la operacion, dices que es 441 y cuando yo lo hago da 567....

Aunque si lo multiplico por $a (esta variable vale 7) si que se ajusta a lo que dices 441 !

Entonces intentemoslo asi:

1
2
3
4
5
6
7
8
9
10
$a = 7;
$x = 9;
$resultado = $a * $x;
 
for ($i = 0; $i < 1; $i++) {
    $resultado *= $a;
    $resultado *= $x ;
}
 
echo $resultado;

La linea $resultado *= $a; es lo mismo que $resultado = $resultado * $a;

Si ejecuto esto, basandome en el orden del 441 (aunque en este caso el orden de los factores no va a alterar el producto), me da como resultado 3969 pero si te fijas solo he declarado en el for que el ciclo se ejecute mientras $i sea menor que 1, entonces se ejecutara una sola vez ya que al inicio tiene un valor de 0 y al reiniciarse el bucle ya vale 1....

Teniendo esto mas o menos claro podrias darle el limite que desees al for:

1
2
3
4
5
6
7
8
9
10
$a = 7;
$x = 9;
$resultado = $a * $x;
 
for ($i = 0; $i < 10; $i++) {
    $resultado *= $a;
    $resultado *= $x ;
}
 
echo $resultado;

Esta vez le he dado un limite y que pare cuando sea menor a 10 que es lo que buscas.

1
3.9091883284788E+21

Da como resultado una cifra muy grande, pruebalo y espero sea lo que busques.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Fernando

Acumular un resultado y que vaya multiplicándose 10 veces mas

Publicado por Fernando fersland@outlook.es (5 intervenciones) el 02/05/2017 01:59:54
Si perdona, el 63 multiplica por a, no por x, error mio.
El problema es mas complejo de lo que he expuesto, voy a ponerlo tal y como me lo pidieron.

El valor de A = 7, X = 9 MOD = 173

Entonces A multiplica por X da 63, este valor se divide por MOD, da 0.36, se escoge el primer valor de la division, por tanto el 0, este cero se resta por la primera multiplicación, 63, que da el mismo resultado osea 63. esta es la primera linea de la tabla
la siguiente seria el valor de a = 7 pero ahora el valor de x ha cambiado ahora es 63

Este seria el resultado que necesito que se muestre en mi tabla

7 x 9 = 63 = 63
7 x 63 = 441 = 95
7 x 95 = 665 = 146
7 x 146 = 1022 = 157
7 x 157 = 1099 = 61

así hasta 10 veces, el ultimo valor de x debe ser 29

1
2
3
4
5
6
7
8
for ($i=0; $i < 10; $i++) {
       $multi= ($valor_a * $valor_x); // 63
       $div = $multi/ $valor_mod; // 0.36
       $residuo = number_format($div, 0, '.', ','); //  se extrae el 0
       $rs = $residuo - $multi; // 0 - 63 = 63
	echo $valor_a.' * '. $multi. ' = '. $rs.'<br>';
// este es el que yo tenia,  me repite el mismo resultado 10 veces, pero no como quiero en la tabla anterior de muestra
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip

Acumular un resultado y que vaya multiplicándose 10 veces mas

Publicado por kip (862 intervenciones) el 02/05/2017 02:55:54
En ese caso, quedaria asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$a = 7;
$x = 9;
$mod = 173;
$br = '<br>';
 
//Primer bloque
$resultado = $a * $x;
echo $a . ' * ' . $x . ' = ' . $resultado;
$resultado = $resultado % $mod;
echo ' MOD ' . $mod . ' = ' . $resultado . $br;
 
//Segundo bloque, repeticion de operaciones
for ($i = 1; $i < 10; $i++) {
    echo $a . ' * ' . $resultado . ' = ';
    $resultado *= $a;
    echo $resultado;
    $resultado = $resultado % $mod;
    echo ' MOD ' . $mod . ' = ' . $resultado . $br;
}
 
echo 'RESULTADO ' . $resultado;

Ejecutando el código:

1
2
3
4
5
6
7
8
9
10
11
7 * 9 = 63 MOD 173 = 63
7 * 63 = 441 MOD 173 = 95
7 * 95 = 665 MOD 173 = 146
7 * 146 = 1022 MOD 173 = 157
7 * 157 = 1099 MOD 173 = 61
7 * 61 = 427 MOD 173 = 81
7 * 81 = 567 MOD 173 = 48
7 * 48 = 336 MOD 173 = 163
7 * 163 = 1141 MOD 173 = 103
7 * 103 = 721 MOD 173 = 29
RESULTADO 29

Recuerda que obtener el MOD en PHP es sencillo, simplemente el % basta.
http://php.net/manual/es/language.operators.arithmetic.php
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Fernando

Acumular un resultado y que vaya multiplicándose 10 veces mas

Publicado por Fernando fersland@outlook.es (5 intervenciones) el 02/05/2017 03:16:59
Impresionante, he estado desde el jueves queriendo resolver esto, hasta termine con el cerebro fundido haciendo un for horrible, muchas gracias por tu ayuda, me has resuelto el problema.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Revisar política de publicidad