<?php
/*
1)La siguiente página Web le permite a una persona ingresar una cadena:
<html>
<head>
<title>Recuperatorio</title>
</head>
<body>
<h1>Ingrese una cadena</h1>
<form action="tres.php" method="get">
<input type="text" name="x">
<input type="submit" value="Enviar">
</form>
</body>
</html>
Realizar un programa en php que verifique que la cadena corresponda a un número hexadecimal. Una cadena es un número hexadecimal si todos sus caracteres son: dígitos o bien las letras A, B, C, D, E, o F mayúsculas. Eliminar los espacios en blanco al comienzo o el final de la cadena ingresada.
En un comentario, indicar cómo se llama el archivo.
Ejemplos de salida:
Ud ingresó la cadena 40D8AC3. Es un número hexadecimal.
Ud. ingresó la cadena 3AJ4Ñ2L. No es un número hexadecimal.
*/
//El archivo se llama tres.php
$cadena = trim($_GET['x']);
$caracteresValidos = '0123456789ABCDEF';
//Recorremos la cadena carácter por carácter:
for($i=0; $i<strlen($cadena); $i++) {
//El caracter actual, ¿NO esta entre los caracteres validos?
if(strpos($caracteresValidos,$cadena[$i]) === false) {
echo "Ud. ingresó la cadena $cadena. No es un número hexadecimal.<br>";
//Si ya encontramos un carácter no válido, no tiene sentido seguir buscando:
break;
}
}
//Si *no* salió por el "break", entonces debería haber llegado al final de la cadena:
if ($i == strlen($cadena) ) {
echo "Ud. ingresó la cadena $cadena. Es un número hexadecimal.<br>";
}
?>
<?php
//Otra forma, de manera exhaustiva:
$cadena = trim($_GET['x']);
$esValido = true;
//Recorremos la cadena carácter por carácter:
for($i=0; $i<strlen($cadena); $i++) {
switch($cadena[$i]) {
case 'A':
case 'B':
case 'C':
case 'D':
case 'E':
case 'F':
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
break;
default:
$esValido = false;
break 2; //Interrumpe el switch y también el for.
}
}
if($esValido) {
echo "Ud. ingresó la cadena $cadena. Es un número hexadecimal.<br>";
}
else {
echo "Ud. ingresó la cadena $cadena. No es un número hexadecimal.<br>";
}
?>
<?php
/*
2) Se tiene un array indexado llamado $datos. Cada uno de los elementos de ese array es a su vez un array asociativo de tres elementos, cuyas claves son ['ciudad'] (contiene el nombre de la ciudad),['capital'] (contiene TRUE si la ciudad es capital de provincia y FALSE si no lo es) y ['poblacion'] (contiene la población de la ciudad). Se desea conocer:
* Cuál es la ciudad más poblada del array.
* Cuánto suma el total de los habitantes de las ciudades que son capital de provincia.
Un ejemplo de cómo podría ser el array está publicado en http://www.escuelaurquiza.edu.ar/jmarquez/prog2/recup.html
*/
//COPIADO DE LA CONSIGNA, DESDE AQUI...
$datos = array(
array('ciudad'=> 'Santa Fe', 'capital'=>true,'poblacion'=>500),
array('ciudad'=> 'Rosario', 'capital'=>false,'poblacion'=>1325),
array('ciudad'=> 'Paraná', 'capital'=>true,'poblacion'=>247),
array('ciudad'=> 'Rafaela', 'capital'=>false,'poblacion'=>83),
array('ciudad'=> 'Victoria', 'capital'=>false,'poblacion'=>32),
array('ciudad'=> 'Corrientes', 'capital'=>true,'poblacion'=>342),
array('ciudad'=> 'Resistencia', 'capital'=>true,'poblacion'=>452),
array('ciudad'=> 'Goya', 'capital'=>false,'poblacion'=>66),
array('ciudad'=> 'Formosa', 'capital'=>true,'poblacion'=>234),
array('ciudad'=> 'Clorinda', 'capital'=>false,'poblacion'=>47)
);
//La población está expresada en miles de personas.
//Para mostrarlo:
foreach ($datos as $unaCiudad) {
echo $unaCiudad['ciudad'] . ' - ';
var_dump($unaCiudad['capital']);
echo ' - ' .$unaCiudad['poblacion'] . '<br>';
}
// ...HASTA AQUI.
$max=0;
$suma=0;
foreach($datos as $unaCiudad) {
//Si la ciudad actual es capital, entonces la sumo:
if($unaCiudad['capital']) {
$suma += $unaCiudad['poblacion'];
}
if($unaCiudad['poblacion'] > $max) {
$max = $unaCiudad['poblacion'];
$nombreMax = $unaCiudad['ciudad'];
}
}
echo "El total de habitantes de las capitales es $suma, y la ciudad más poblada es $nombreMax";
?>