Ejercicios (sin formularios) - Variables (0) - Soluciones

En esta página se muestran una parte de las soluciones de los ejercicios Variables (0), concretamente el fragmento PHP, sin el principio ni el final de la página que se pueden dejar en fragmentos HTML.

Si lo prefiere, puede descargar unas posibles soluciones completas de estos ejercicios.

Variables (0) 1 - Media de dos números

Podemos resolver este ejercicio usando tres variables, dos para cada uno de los valores aleatorios y otra para la media.

<?php
$a     = rand(0, 100);
$b     = rand(0, 100);
$media = ($a + $b) / 2;

print "  <p>La media aritmética de $a y $b es $media.</p>\n";
?>

También podemos resolverlo con sólo dos variables, una para cada uno de los valores aleatorios. En ese caso, deberíamos concatenar el cálculo del resultado al escribir la frase.

<?php
$a = rand(0, 100);
$b = rand(0, 100);

print "  <p>La media aritmética de $a y $b es " . ($a + $b) / 2 . ".</p>\n";
?>

Variables (0) 2 - Cálculo del Índice de la Masa Corporal (IMC)

Podemos resolver este ejercicio usando tres variables, dos para cada uno de los valores aleatorios y otra para el IMC.

<?php
$peso   = rand(50, 100);
$altura = rand(150, 200) / 100;
$imc    = round($peso / $altura ** 2, 1);

print "  <p>Con un peso de $peso kg y una altura de $altura m, el IMC es $imc.</p>\n";
?>

También podemos resolverlo con sólo dos variables, una para cada uno de los valores aleatorios. En ese caso, deberíamos concatenar el cálculo del resultado al escribir la frase.

<?php
$peso   = rand(50, 100);
$altura = rand(150, 200) / 100;

print "  <p>Con un peso de $peso kg y una altura de $altura m, el IMC es " . round($peso / $altura ** 2, 1) . ".</p>\n";
?>

Variables (0) 3 - Convertidor de horas, minutos y segundos a segundos

Podemos resolver este ejercicio usando cuatro variables, tres para cada uno de los valores aleatorios y otra para el número de segundos total.

<?php
$horas    = rand(0, 150);
$minutos  = rand(0, 150);
$segundos = rand(0, 150);
$total    = $horas * 3600 + $minutos * 60 + $segundos;

print "  <p>$horas horas, $minutos minutos y $segundos segundos son $total segundos.</p>\n";
?>

También podemos resolverlo con sólo tres variables, una para cada uno de los valores aleatorios. En ese caso, deberíamos concatenar el cálculo del resultado al escribir la frase.

<?php
$horas    = rand(0, 150);
$minutos  = rand(0, 150);
$segundos = rand(0, 150);

print "  <p>$horas horas, $minutos minutos y $segundos segundos son " . $horas * 3600 + $minutos * 60 + $segundos . " segundos.</p>\n";
?>

Variables (0) 4 - Convertidor de segundos a minutos y segundos

La operación a realizar es la siguiente:

segundos a convertir 934 segundos por minuto 60 34 resto de segundos 934 % 60 15 minutos intdiv(934, 60) 934 = 60 * 15 + 34

Al tratarse de números enteros, para obtener el cociente y el resto de la división podemos utilizar la función intdiv() y el operador %.

Podemos resolver este ejercicio usando tres variables, una para el número aleatorio de segundos y dos para el número de minutos y segundos correspondientes.

<?php
$segundosTotales = rand(0, 1000);
$minutos         = intdiv($segundosTotales, 60);
$segundos        = $segundosTotales % 60;

print "  <p>$segundosTotales segundos son $minutos minutos y $segundos segundos.</p>\n";
?>

También podemos resolverlo con sólo una variable, el número aleatorio de segundos. En ese caso, deberíamos concatenar los dos cálculos de minutos y segundos al escribir la frase.

<?php
$segundos = rand(0, 1000);

print "  <p>$segundos segundos son " . intdiv($segundos, 60) . " minutos y " . $segundos % 60 . " segundos.</p>\n";
?>

Variables (0) 5 - Convertidor de segundos a horas, minutos y segundos

Las operaciones a realizar son las siguientes:

segundos a convertir 12345 segundos por hora 3600 1545 primer resto de segundos 12345 % 3600 3 horas intdiv(12345, 3600) primer resto de segundos 1545 segundos por minuto 60 45 segundos 1545 % 60 25 minutos intdiv(1545, 60) 12345 = 3600 * 3 + 60 * 25 + 45

Al tratarse de números enteros, para obtener el cociente y el resto de la división podemos utilizar la función intdiv() y el operador %.

Podemos resolver este ejercicio usando cinco variables, una para el número aleatorio de segundos inicial, dos para el cociente y el resto de la división de este número inicial por 3600 y dos más para el cociente y el resto de la división del primer resto por 60.

<?php
$segundos  = rand(0, 10_000);
$horas     = intdiv($segundos, 3600);
$segundos2 = $segundos % 3600;
$minutos   = intdiv($segundos2, 60);
$segundos3 = $segundos2 % 60;

print "  <p>$segundos segundos son $horas horas, $minutos minutos y $segundos3 segundos.</p>\n";
?>

También podemos resolverlo con sólo una variable, el número aleatorio de segundos. En ese caso, deberíamos concatenar los dos cálculos de minutos y segundos al escribir la frase.

<?php
$segundos  = rand(0, 10_000);

print "  <p>$segundos segundos son " . intdiv($segundos, 3600) . " horas, " . intdiv($segundos % 3600, 60) . " minutos y " . $segundos % 3600 % 60 . " segundos.</p>\n";
?>

Podemos simplificar el último cálculo puesto que el resto entre 60 da el mismo resultado aunque no se haga antes el resto entre 3600.

<?php
$segundos  = rand(0, 10_000);

print "  <p>$segundos segundos son " . intdiv($segundos, 3600) . " horas, " . intdiv($segundos % 3600, 60) . " minutos y " . $segundos % 60 . " segundos.</p>\n";
?>

Variables (0) 6 - Convertidor de pies y pulgadas a centímetros

Podemos resolver este ejercicio usando tres variables, dos para el número aleatorio de pies y pulgadas iniciales, y uno para el resultado total en centímetros.

<?php
$pies        = rand(0, 10);
$pulgadas    = rand(0, 10);
$centimetros = ($pies * 12 + $pulgadas) * 2.54;

print "  <p>$pies pies y $pulgadas pulgadas son $centimetros cm.</p>\n";
?>

También podemos resolverlo con sólo dos variables, los números aleatorios de pies y pulgadas iniciales. En ese caso, deberíamos concatenar el cálculo de centímetros al escribir la frase.

<?php
$pies     = rand(0, 10);
$pulgadas = rand(0, 10);

print "  <p>$pies pies y $pulgadas pulgadas son " . ($pies * 12 + $pulgadas) * 2.54 . " cm.</p>\n";
?>

Variables (0) 7 - Convertidor de yardas, pies y pulgadas a centímetros

Podemos resolver este ejercicio usando cuatro variables, tres para el número aleatorio de yardas, pies y pulgadas iniciales, y uno para el resultado total en centímetros.

<?php
$yardas      = rand(0, 10);
$pies        = rand(0, 10);
$pulgadas    = rand(0, 10);
$centimetros = ($yardas * 36 + $pies * 12 + $pulgadas) * 2.54;

print "  <p>$yardas yardas, $pies pies y $pulgadas pulgadas son $centimetros cm.</p>\n";
?>

También podemos resolverlo con sólo tres variables, los números aleatorios de yardas, pies y pulgadas iniciales. En ese caso, deberíamos concatenar el cálculo de centímetros al escribir la frase.

<?php
$yardas   = rand(0, 10);
$pies     = rand(0, 10);
$pulgadas = rand(0, 10);

print "  <p>$yardas yardas, $pies pies y $pulgadas pulgadas son " . ($yardas * 36 + $pies * 12 + $pulgadas) * 2.54 . " cm.</p>\n";
?>

Variables (0) 8 - Convertidor de centímetros a pies y pulgadas

Las operaciones a realizar son las siguientes:

centímetros a convertir 1234 centímetros por pie 30.48 14.8 primer resto de centímetros fmod(1234, 30.48) 40 pies floor(1234 / 30.48) primer resto de centímetros 14.8 centímetros por pulgada 2.54 5.82677... pulgadas round(14.8 / 2.54, 1)

Al tratarse de números decimales, para obtener el cociente y el resto de la división podemos utilizar la función floor() de la división y la función fmod().

Para obtener el número de pulgadas con 1 decimal podemos utilizar la función round()

Podemos resolver este ejercicio usando tres variables, una para el número aleatorio de centímetros y dos para el número de pies y pulgadas correspondientes.

<?php
$centimetros  = rand(0, 1_000_000) / 100;
$pies         = floor($centimetros / 30.48);
$centimetros2 = fmod($centimetros, 30.48);
$pulgadas     = round($centimetros2 / 2.54, 1);

print "  <p>$centimetros centímetros son $pies pies y $pulgadas pulgadas.</p>\n";
?>

También podemos resolverlo con sólo una variable, el número aleatorio de centímetros. En ese caso, deberíamos concatenar los dos cálculos de pies y pulgadas al escribir la frase.

Como la instrucción que escribe la frase es bastante larga, la podemos partir en dos instrucciones print para mejorar la legibilidad del código.

<?php
$centimetros = rand(0, 1_000_000) / 100;

print "  <p>$centimetros centímetros son " . floor($centimetros / 30.48) . " pies y ";
print round(fmod($centimetros, 30.48) / 2.54, 1) . " pulgadas.</p>\n";
?>

Variables (0) 9 - Convertidor de centímetros a yardas, pies y pulgadas

Las operaciones a realizar son las siguientes:

centímetros a convertir 1234 centímetros por yarda 91.44 45.28 primer resto de centímetros fmod(1234, 91.44) 13 yardas floor(1234 / 91.44) primer resto de centímetros 45.28 centímetros por pie 30.48 14.8 segundo resto de centímetros fmod(45.28, 30.48) 1 pies floor(45.28 / 30.48) segundo resto de centímetros 14.8 centímetros por pulgada 2.54 5.82677... pulgadas round(14.8 / 2.54, 1)

Al tratarse de números decimales, para obtener el cociente y el resto de las divisiones podemos utilizar la función floor() de la división y la función fmod().

Para obtener el número de pulgadas con 1 decimal podemos utilizar la función round()

Podemos resolver este ejercicio usando seis variables, una para el número aleatorio de centímetros, dos para el cociente y el resto de la división de este número inicial por 91.44 (los centímetros que mide una yarda), dos más para el cociente y el resto de la división del primer resto por 30.48 (los centímetros que mide un pie) y una variable para la conversión del segundo resto a centímetros.

<?php
$centimetros  = rand(0, 5_000_000) / 100;
$yardas       = floor($centimetros / 91.44);
$centimetros2 = fmod($centimetros, 91.44);
$pies         = floor($centimetros2 / 30.48);
$centimetros3 = fmod($centimetros, 30.48);
$pulgadas     = round($centimetros3 / 2.54, 1);

print "  <p>$centimetros centímetros son $yardas yardas, $pies pies y $pulgadas pulgadas.</p>\n";
?>

También podemos resolverlo con sólo una variable, el número aleatorio de centímetros. En ese caso, deberíamos concatenar los tres cálculos de yardas, pies y pulgadas al escribir la frase.

Como la instrucción que escribe la frase es bastante larga, la podemos partir en varias líneas para mejorar la legibilidad del código.

<?php
$centimetros = rand(0, 5_000_000) / 100;

print "  <p>$centimetros centímetros son " . floor($centimetros / 91.44) . " yardas, "
    . floor(fmod($centimetros, 91.44) / 30.48) . " pies y "
    . round(fmod(fmod($centimetros, 91.44), 30.48) / 2.54, 1) . " pulgadas.</p>\n";
?>

El cálculo del número de pulgadas se puede simplificar teniendo en cuenta que si en dos divisiones sucesivas los divisores son múltiplos entre sí, el resto final tras las dos divisiones es el mismo que el resto de la división por el menor de los divisiores. Es decir:

x a r1 primer resto r1 = fmod(x, a) ... r1 b r2 segundo resto r2 = fmod(r1, b) r2 = fmod(fmod(x, a), b) ... Si a es múltiplo de b: x b r2 segundo resto r2 = fmod(x, b) ...

Como en este caso 91.44 es múltiplo de 30.48 (1 yarda son 3 pies), el segundo resto se puede calcular a partir de la cantidad de centímetros inicial, lo que nos permite simplificar la expresión que calcula las pulgadas.

<?php
$centimetros = rand(0, 5_000_000) / 100;

print "  <p>$centimetros centímetros son " . floor($centimetros / 91.44) . " yardas, "
    . floor(fmod($centimetros, 91.44) / 30.48) . " pies y "
    . round(fmod($centimetros, 30.48) / 2.54, 1) . " pulgadas.</p>\n";
?>