Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Cabanota en 20 de Junio 2015, 22:25
-
Hola colegas. No se si esta bien mi solución para el ejercicio CU00836B del curso de programación web con PHP. Espero sus comentarios. Gracias.
EJERCICIO
Crea las siguientes funciones en PHP:
a) Una función (tipo procedimiento, no hay valor devuelto) denominada escribirTresNumeros que reciba tres números enteros como parámetros y proceda a escribir dichos números en tres líneas en un archivo denominado datosEjercicio.txt. Si el archivo no existe, debe crearlo.
b) Una función denominada obtenerSuma (tipo función, devolverá un valor numérico) que reciba una ruta de archivo como parámetro, lea los números existentes en cada línea del archivo, y devuelva la suma de todos esos números.
c) Una función denominada obtenerArrNum (tipo función, devolverá un array de valores numéricos) que reciba una ruta de archivo como parámetro, lea los números existentes en cada línea del archivo, y devuelva un array cuyo índice 0 contendrá el número existente en la primera línea, cuyo índice 1 contendrá el número existente en la segunda línea y así sucesivamente.
d) Crea código php donde a través de la función escribirTresNumeros escribas en el fichero los números 2, 8, 14. Luego, mediante la función obtenerSuma muestra por pantalla el resultado de sumar los números existentes en el archivo. Finalmente, mediante la función obtenerArrNum obtén el array, recórrelo y muestra cada uno de los elementos del array.
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8">
</head>
<body>
<?php
function escribirTresNumeros($num1, $num2, $num3)
{
$fp = fopen("fichero.txt", "w");
fputs($fp, $num1 . "\n" . $num2 . "\n" . $num3 . "\n");
fclose($fp);
}
function obtenerSuma($ruta)
{
$resul = 0;
$aux = 0;
$linea = array();
$fp = fopen($ruta, "r");
while (!feof($fp)) {
$linea[$aux] = fgets($fp);
$aux++;
}
for ($i=0; $i < count($linea); $i++) {
$resul = $resul + $linea[$i];
}
fclose($fp);
return $resul;
}
function obtenerArrNum($ruta)
{
$array = array();
$cont = 0;
$fp = fopen($ruta, "r");
while (!feof($fp)) {
$array[$cont] = fgets($fp);
$cont++;
}
for ($i=0; $i < count($array) - 1; $i++) {
echo $array[$i] . ", ";
}
fclose($fp);
}
escribirTresNumeros(2, 8, 14);
echo "Suma: " . obtenerSuma("fichero.txt");
echo "<br/>";
obtenerArrNum("fichero.txt");
?>
</body>
</html>
-
Hola Cabanota, el apartado a) perfecto.
El apartado b) perfecto.
Para el apartado c) el enunciado pide que la función devuelva el array pero no dice nada de que la función deba recorrer el array ni mostrar su contenido, por ello es preferible no meter ese recorrido dentro de la función. Si es una función debe tener un return, eso es lo que te ha faltado.
El código con ese cambio para que la función obtenerArrNum devuelva un array y que el recorrido se haga fuera de la función quedaría así:
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8">
</head>
<body>
<?php
function escribirTresNumeros($num1, $num2, $num3)
{
$fp = fopen("ficheroBorrar.txt", "w");
fputs($fp, $num1 . "\n" . $num2 . "\n" . $num3 . "\n");
fclose($fp);
}
function obtenerSuma($ruta)
{
$resul = 0;
$aux = 0;
$linea = array();
$fp = fopen($ruta, "r");
while (!feof($fp)) {
$linea[$aux] = fgets($fp);
$aux++;
}
for ($i=0; $i < count($linea); $i++) {
$resul = $resul + $linea[$i];
}
fclose($fp);
return $resul;
}
function obtenerArrNum($ruta)
{
$array = array();
$cont = 0;
$fp = fopen($ruta, "r");
while (!feof($fp)) {
$array[$cont] = fgets($fp);
$cont++;
}
fclose($fp);
return $array;
}
escribirTresNumeros(2, 8, 14);
echo "Suma: " . obtenerSuma("ficheroBorrar.txt");
echo "<br/>";
$arrayObtenido = obtenerArrNum("ficheroBorrar.txt");
echo "<br/>Elementos del array obtenido con la función: </br>";
for ($i=0; $i < count($arrayObtenido) - 1; $i++) {
echo $arrayObtenido[$i] . ", ";
}
?>
</body>
</html>
Salu2