Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Jonathan Ramos en 19 de Febrero 2016, 02:12
-
Respuesta al apartado b) del ejercicio CU00836B del curso php desde cero.
Aqui esta la función para obtener la suma, me tarde en poder encontrar una forma para validar que los valores fueran numeros. ctype_digit no me daba los valores esperados.
<?php
// Funcion que busca el fichero asignado y suma los elementos numericos. Devuelve error en caso contrario
// Coded by: Jonathan Ramos, jonathanramos@gmail.com.
function obtenerSuma($ruta){
$suma = 0;
$aux = 0;
//Se revisa si existe el archivo
// Esto puede hacerse tambien asi
// $fp = fopen($ruta,"r")
// or exit("ERROR!. No se puede encontrar el archivo ($ruta)")
if (file_exists ($ruta) ){
$fp = fopen($ruta,"r"); // Asignamos el archivo al file pointer
while( !feof($fp) ){ // Se leen los los numeros del archivo
$aux = fgets($fp); // Se obtiene la linea del archivo
//Checamos si es un numero con preg_match. Intente usar ctype_digit pero no validaba correctamente
// if( ctype_digit($aux) ){ no funciono
if( preg_match("/^[0-9]+$/",$aux) ){
$suma += $aux;
} else {
echo "ERROR! Se encontro un valor NO numerico, no se puede realizar la suma. ";
fclose($fp);
return 0;
}
}
fclose($fp);
return $suma;
} else {
echo "ERROR!. No se puede encontrar el archivo: ".$ruta;
return 0;
}
}
?>
A continuación el codigo que llama a la función:
<?php
// Lectura de datos numericos de un archivo para realizar una suma.
// Coded by: Jonathan Ramos, jonathanramos@gmail.com.
$ruta = "datos_suma.txt";
include 'obtenerSuma.php';
echo ('Suma de los datos encontrados en archivo "'.$ruta.'". Dichos datos deben estar en uno en cada linea.<br/>');
echo ('El resultado de la suma es:'.obtenerSuma($ruta) );
?>
Aqui esta la pagina mostrando como funciona el codigo: http://utilities.byethost3.com/cursoPHP/archivo_ejercicio2.php
-
Hola Jonathan, el código es correcto
Para poder localizar los ejercicios y poder revisarlos otras personas es importante incluir en el título del tema del foro el código del ejercicio, en este caso CU00836B, junto con las sentencias principales que se usan, en este caso fopen, etc. esto facilita todo.
También es de interés que se incluya todo el código que constituye la respuesta a los ejercicios y a todos los puntos del ejercicio, de ese modo se puede revisar punto por punto sin tener que estar saltando.
Esto permite también comparar cómo ha resuelto un ejercicio (completo) con cómo lo ha resuelto otra persona (completo) y poder extraer buenas ideas de los ejercicios resueltos por distintas personas
Saludos