En esta página se muestran una parte de las soluciones de los ejercicios Matrices (1), concretamente el fragmento PHP, sin el principio ni el final de la página que se puede dejar en un fragmento HTML. La solución completa se puede descargar de la página de soluciones.
<?php
$numeroValores = rand(5, 15);
print " <h2>Datos iniciales</h2>\n";
print "\n";
print " <p>Número de valores en la matriz: $numeroValores</p>\n";
print "\n";
print " <p>Valores elegidos al azar entre 0 y 10.</p>\n";
print "\n";
// Crea la matriz inicial
$matriz = [];
for ($i = 0; $i < $numeroValores; $i++) {
$matriz[] = rand(0, 10);
}
print " <h2>Matriz de valores</h2>\n";
print "\n";
print " <pre>\n"; print_r($matriz); print "</pre>\n";
print "\n";
?>
<?php
function recoge($var, $m = "")
{
if (!isset($_REQUEST[$var])) {
$tmp = (is_array($m)) ? [] : "";
} elseif (!is_array($_REQUEST[$var])) {
$tmp = trim(htmlspecialchars($_REQUEST[$var], ENT_QUOTES, "UTF-8"));
} else {
$tmp = $_REQUEST[$var];
array_walk_recursive($tmp, function (&$valor) {
$valor = trim(htmlspecialchars($valor, ENT_QUOTES, "UTF-8"));
});
}
return $tmp;
}
$numeroMinimo = recoge("numeroMinimo");
$numeroMaximo = recoge("numeroMaximo");
$valorMinimo = recoge("valorMinimo");
$valorMaximo = recoge("valorMaximo");
$valoresOk = false;
if ($numeroMinimo == "" || $numeroMaximo == "" || $valorMinimo == "" || $valorMaximo == "") {
print " <p class=\"aviso\">No ha escrito alguno(s) de los valores.</p>\n";
print "\n";
} elseif (!is_numeric($numeroMinimo) || !is_numeric($numeroMaximo) || !is_numeric($valorMinimo) || !is_numeric($valorMaximo)) {
print " <p class=\"aviso\">No ha escrito alguno(s) de los valores como número.</p>\n";
print "\n";
} elseif (!ctype_digit($numeroMinimo) || !ctype_digit($numeroMaximo) || !ctype_digit($valorMinimo) || !ctype_digit($valorMaximo)) {
print " <p class=\"aviso\">No ha escrito alguno(s) de los valores como número entero.</p>\n";
print "\n";
} elseif ($numeroMinimo < 1 || $numeroMaximo < 1 || $valorMinimo < 0 || $valorMaximo < 0) {
print " <p class=\"aviso\">Alguno de los valores no está en el rango previsto.</p>\n";
print "\n";
} else {
$valoresOk = true;
}
if ($valoresOk) {
$numeroValores = rand($numeroMinimo, $numeroMaximo);
print " <h2>Datos iniciales</h2>\n";
print "\n";
print " <p>Número de valores en la matriz: $numeroValores</p>\n";
print "\n";
print " <p>Valores elegidos al azar entre $valorMinimo y $valorMaximo</p>\n";
print "\n";
// Crea la matriz inicial
$matriz = [];
for ($i = 0; $i < $numeroValores; $i++) {
$matriz[] = rand($valorMinimo, $valorMaximo);
}
print " <h2>Matriz de valores</h2>\n";
print "\n";
print " <pre>\n";
print_r($matriz);
print "</pre>\n";
print "\n";
}
?>
<?php
function recoge($var, $m = "")
{
if (!isset($_REQUEST[$var])) {
$tmp = (is_array($m)) ? [] : "";
} elseif (!is_array($_REQUEST[$var])) {
$tmp = trim(htmlspecialchars($_REQUEST[$var], ENT_QUOTES, "UTF-8"));
} else {
$tmp = $_REQUEST[$var];
array_walk_recursive($tmp, function (&$valor) {
$valor = trim(htmlspecialchars($valor, ENT_QUOTES, "UTF-8"));
});
}
return $tmp;
}
$numeroMinimo = recoge("numeroMinimo");
$numeroMaximo = recoge("numeroMaximo");
$valorMinimo = recoge("valorMinimo");
$valorMaximo = recoge("valorMaximo");
$orden = recoge("orden");
$valoresOk = false;
if ($numeroMinimo == "" || $numeroMaximo == "" || $valorMinimo == "" || $valorMaximo == "") {
print " <p class=\"aviso\">No ha escrito alguno(s) de los valores.</p>\n";
print "\n";
} elseif (!is_numeric($numeroMinimo) || !is_numeric($numeroMaximo) || !is_numeric($valorMinimo) || !is_numeric($valorMaximo)) {
print " <p class=\"aviso\">No ha escrito alguno(s) de los valores como número.</p>\n";
print "\n";
} elseif (!ctype_digit($numeroMinimo) || !ctype_digit($numeroMaximo) || !ctype_digit($valorMinimo) || !ctype_digit($valorMaximo)) {
print " <p class=\"aviso\">No ha escrito alguno(s) de los valores como número entero.</p>\n";
print "\n";
} elseif ($numeroMinimo < 1 || $numeroMaximo < 1 || $valorMinimo < 0 || $valorMaximo < 0) {
print " <p class=\"aviso\">Alguno de los valores no está en el rango previsto.</p>\n";
print "\n";
} elseif ($orden != "" && $orden != "directo" && $orden != "inverso") {
print " <p class=\"aviso\">El orden indicado no es correcto.</p>\n";
print "\n";
} else {
$valoresOk = true;
}
if ($valoresOk) {
$numeroValores = rand($numeroMinimo, $numeroMaximo);
print " <h2>Datos iniciales</h2>\n";
print "\n";
print " <p>Número de valores en la matriz: $numeroValores</p>\n";
print "\n";
print " <p>Valores elegidos al azar entre $valorMinimo y $valorMaximo</p>\n";
print "\n";
// Crea la matriz inicial
$matriz = [];
for ($i = 0; $i < $numeroValores; $i++) {
$matriz[] = rand($valorMinimo, $valorMaximo);
}
print " <h2>Matriz inicial de valores</h2>\n";
print "\n";
print " <pre>\n";
print_r($matriz);
print "</pre>\n";
print "\n";
// Ordena la matriz inicial
if ($orden == "directo") {
asort($matriz);
print " <h2>Matriz ordenada de valores (orden directo)</h2>\n";
print "\n";
print " <pre>\n";
print_r($matriz);
print "</pre>\n";
print "\n";
} elseif ($orden == "inverso") {
arsort($matriz);
print " <h2>Matriz ordenada de valores (orden inverso)</h2>\n";
print "\n";
print " <pre>\n";
print_r($matriz);
print "</pre>\n";
print "\n";
} else {
print " <h2>Matriz ordenada de valores</h2>\n";
print "\n";
print " <p>No se ha solicitado ordenar la matriz</p>\n";
print "\n";
}
}
?>
<?php
function recoge($var, $m = "")
{
if (!isset($_REQUEST[$var])) {
$tmp = (is_array($m)) ? [] : "";
} elseif (!is_array($_REQUEST[$var])) {
$tmp = trim(htmlspecialchars($_REQUEST[$var], ENT_QUOTES, "UTF-8"));
} else {
$tmp = $_REQUEST[$var];
array_walk_recursive($tmp, function (&$valor) {
$valor = trim(htmlspecialchars($valor, ENT_QUOTES, "UTF-8"));
});
}
return $tmp;
}
$numeroMinimo = recoge("numeroMinimo");
$numeroMaximo = recoge("numeroMaximo");
$valorMinimo = recoge("valorMinimo");
$valorMaximo = recoge("valorMaximo");
$eliminar = recoge("eliminar");
$valoresOk = false;
if ($numeroMinimo == "" || $numeroMaximo == "" || $valorMinimo == "" || $valorMaximo == "") {
print " <p class=\"aviso\">No ha escrito alguno(s) de los valores.</p>\n";
print "\n";
} elseif (!is_numeric($numeroMinimo) || !is_numeric($numeroMaximo) || !is_numeric($valorMinimo) || !is_numeric($valorMaximo) || !is_numeric($eliminar)) {
print " <p class=\"aviso\">No ha escrito alguno(s) de los valores como número.</p>\n";
print "\n";
} elseif (!ctype_digit($numeroMinimo) || !ctype_digit($numeroMaximo) || !ctype_digit($valorMinimo) || !ctype_digit($valorMaximo) || !ctype_digit($eliminar)) {
print " <p class=\"aviso\">No ha escrito alguno(s) de los valores como número entero.</p>\n";
print "\n";
} elseif ($numeroMinimo < 1 || $numeroMaximo < 1 || $valorMinimo < 0 || $valorMaximo < 0 || $eliminar < 0) {
print " <p class=\"aviso\">Alguno de los valores no está en el rango previsto.</p>\n";
print "\n";
} else {
$valoresOk = true;
}
if ($valoresOk) {
$numeroValores = rand($numeroMinimo, $numeroMaximo);
print " <h2>Datos iniciales</h2>\n";
print "\n";
print " <p>Número de valores en la matriz: $numeroValores</p>\n";
print "\n";
print " <p>Valores elegidos al azar entre $valorMinimo y $valorMaximo</p>\n";
print "\n";
// Crea la matriz inicial
$matriz = [];
for ($i = 0; $i < $numeroValores; $i++) {
$matriz[] = rand($valorMinimo, $valorMaximo);
}
print " <h2>Matriz inicial de valores</h2>\n";
print "\n";
print " <pre>\n";
print_r($matriz);
print "</pre>\n";
print "\n";
// Elimina los valores que coinciden con el indicado
print " <h2>Matriz con valor eliminado</h2>\n";
print "\n";
if ($eliminar == "") {
print " <p>No se ha solicitado ordenar la matriz</p>\n";
print "\n";
} elseif (!in_array($eliminar, $matriz)) {
print " <p>Valor a eliminar: $eliminar</p>\n";
print "\n";
print " <p>El valor indicado no se encuentra en la matriz</p>\n";
print "\n";
} else {
for ($i = 0; $i < $numeroValores; $i++) {
if ($matriz[$i] == $eliminar) {
unset($matriz[$i]);
}
}
$matriz = array_values($matriz);
print " <p>Valor a eliminar: $eliminar</p>\n";
print "\n";
print " <p>Se han eliminado " . ($numeroValores - count($matriz)) . " valor(es).</p>\n";
print "\n";
print " <pre>\n";
print_r($matriz);
print "</pre>\n";
print "\n";
}
}
?>