Comunidad PHPeros

Otros => Los Retos PHPeros => Mensaje iniciado por: naveda en 31 de Octubre de 2006, 22:43:44 pm

Título: Reto #1 - Dividir Texto
Publicado por: naveda en 31 de Octubre de 2006, 22:43:44 pm
Hola,
Desde PHPeros queremos proponerte un reto de dificultad SENCILLA.

El reto consiste en dividir en oraciones el siguiente texto, mediante PHP:

Citar
Microsoft actualizará su plataforma de juegos Xbox 360 de forma gratuita a través de Internet para permitir entre otras cosas una resolución de 1080 píxeles, considerada de alta definición. La actualización incorpora 85 características nuevas y se puede descargar a partir de este martes a través de una cuenta Xbox Live. Las mejoras van destinadas a la reproducción de vídeo en alta definición, a facilitar la actualización y gestión de los juegos en red Arcade, entre otras posibilidades.

Debes enumerar cada oracion dividida por puntos en el texto. El resultado debería ser:
Citar
1.- Microsoft actualizará su plataforma de juegos Xbox 360 de forma gratuita a través de Internet para permitir entre otras cosas una resolución de 1080 píxeles, considerada de alta definición.
2.- La actualización incorpora 85 características nuevas y se puede descargar a partir de este martes a través de una cuenta Xbox Live.
3.- Las mejoras van destinadas a la reproducción de vídeo en alta definición, a facilitar la actualización y gestión de los juegos en red Arcade, entre otras posibilidades.

Tambien debes mostrar el numero de oraciones que se han dividido, por ejemplo en este caso sería:
Citar
Nº de Oraciones: 3

Pistas:

Cualquier pregunta o duda para crear el codigo no dudes en realizarla ;)
PD. Claramente..., no pidas el codigo ya que serás descalificado.
Título: Re: Reto #1 - Dividir Texto
Publicado por: Raken en 01 de Noviembre de 2006, 02:09:46 am
Bueno... parece que soy el primero en contestar. Esto podría dar muchas pistas a los demás usuarios, aunque espero que no tenga por qué ser así.

En cuanto a la dificultad, no lo calificaría de sencillo. Yo no sé muy bien cómo sería, pero voy a mojarme:


<?
$texto = "Microsoft actualizará su plataforma de juegos Xbox 360 de forma gratuita a través de Internet para permitir entre otras cosas una resolución de 1080 píxeles, considerada de alta definición. La actualización incorpora 85 características nuevas y se puede descargar a partir de este martes a través de una cuenta Xbox Live. Las mejoras van destinadas a la reproducción de vídeo en alta definición, a facilitar la actualización y gestión de los juegos en red Arcade, entre otras posibilidades.";

$division = explode (".", $texto);

$numero = 0;

$numero++;
echo $numero.".- ".$division[$numero-1]."\n";

$numero++;
echo $numero.".- ".$division[$numero-1]."\n";

$numero++;
echo $numero.".- ".$division[$numero-1]."\n";

echo "Nº de Oraciones: ".$numero;
?>

Título: Re: Reto #1 - Dividir Texto
Publicado por: Ishamato en 08 de Noviembre de 2006, 20:50:04 pm
Bueno.. pues voy a intentarlo aunque no se hacer la segunda parte xD

//Creo una variable que contiene el texto que quiero dividir
<?PHP
$texto = "Microsoft actualizará su plataforma de juegos Xbox 360 de forma gratuita a través de Internet para permitir entre otras cosas una resolución de 1080 píxeles, considerada de alta definición. La actualización incorpora 85 características nuevas y se puede descargar a partir de este martes a través de una cuenta Xbox Live. Las mejoras van destinadas a la reproducción de vídeo en alta definición, a facilitar la actualización y gestión de los juegos en red Arcade, entre otras posibilidades.";
$dividir = explode ("$texto");
//Le digo que la variable dividir divida (explode) la variable texto
$numero = 3;
echo "Nº de Oraciones: "$numero;
?>

Bueno aquí dejo mi respuesta, una vez publicada, puedo mejorarla?  :-\ Esque creo que me e dejado varias cosas como separarlo por "." que no se hacerlo.
PDT: Ahora que e visto el de Raken lo entiendo, pero mi código es este, y no es plan de hacer trampas ;)
Título: Re: Reto #1 - Dividir Texto
Publicado por: Raken en 08 de Noviembre de 2006, 21:15:45 pm
Detecto cierto copiar y pegar...  xD

Citar
<?PHP
$texto = "Microsoft actualizará su plataforma de juegos Xbox 360 de forma gratuita a través de Internet para permitir entre otras cosas una resolución de 1080 píxeles, considerada de alta definición. La actualización incorpora 85 características nuevas y se puede descargar a partir de este martes a través de una cuenta Xbox Live. Las mejoras van destinadas a la reproducción de vídeo en alta definición, a facilitar la actualización y gestión de los juegos en red Arcade, entre otras posibilidades.";
$dividir = explode ("$texto");
//Le digo que la variable dividir divida (explode) la variable texto
$numero = 3;
echo "Nº de Oraciones: "$numero;
?>

Para empezar, hay mil formas de hacerlo, no hacía falta que lo hicieses como yo, pero da igual.  ;D

En realidad es incorrecto. 

Citar
$dividir = explode("$texto");

La función explode, recorta el texto en cada "palabra clave". Por ejemplo, yo puse un punto, y entonces recorta cada vez que encuentra un punto. Al final he añadido $texto para decirle que lo aplique ahí.

Citar
$dividir = explode(".", $texto);

El número que yo puse no era el número de recortes que tenía que hacer. Era una variable para mostrar el  1.-  2.- y el 3.- que pedía Naveda en el enunciado. Y además lo usaba para decir qué parte mostrar.

Por ejemplo:

$numero = 1; //El numero es 1 para este ejemplo

echo "$numero"; // 1
echo ".-"; // 1.-
echo $division[$numero];

Hemos dicho que numero era 1. Entonces mostrara la division 1, que es la primera parte del texto (hasta el primer punto). Y así succesivamente.

$numero++;  lo que hace es sumarle 1 al número. Si antes teníamos un 1, ahora tenemos un dos. Y así todo el rato.

----------------

Puede que te preguntes por qué he usado la resta $division[$numero-1], teniendo ya los números 1, 2 y 3.

El número me interesaba que fuese 1, luego 2 y luego 3. Pero para la división del texto... no vale decir parte 1, parte 2 y parte 3. ¿Por qué no? Porque PHP empieza a contar desde 0. Entonces la primera parte es 0. Así que relativamente las partes serían 0, 1 y 2.

Por eso cuando tengo un 1, lo muestro para la frase (1.-) pero luego le resto 1 para poner la parte 0  $division[0];

Y así con cada partición.  ;)


¿Hacía falta usar variables para cada número?

Pues no. Podría haberlo hecho directamente sin variables y sería lo mismo:

<?
$texto = "Microsoft actualizará su plataforma de juegos Xbox 360 de forma gratuita a través de Internet para permitir entre otras cosas una resolución de 1080 píxeles, considerada de alta definición. La actualización incorpora 85 características nuevas y se puede descargar a partir de este martes a través de una cuenta Xbox Live. Las mejoras van destinadas a la reproducción de vídeo en alta definición, a facilitar la actualización y gestión de los juegos en red Arcade, entre otras posibilidades.";

$division = explode (".", $texto);

echo "1.- ".$division[0]."\n";

echo "2.- ".$division[1]."\n";

echo "3.- ".$division[2]."\n";

echo "Nº de Oraciones: 3";
?>



Título: Re: Reto #1 - Dividir Texto
Publicado por: Ishamato en 08 de Noviembre de 2006, 23:44:18 pm
Ok ^^
Muchas gracias :P
PDT: Solo copié el texto que nos dio NaVeDa ;) (Ahora ya entiendo esta funcion :P)
Título: Re: Reto #1 - Dividir Texto
Publicado por: DcK en 10 de Noviembre de 2006, 18:03:22 pm
Al solo ver el reto no tenia ni la mas pvt4 idea de lo que c trataba xD... aunque si conocia la funcion explode pero no sabia que se podian hacer tantas cosas con ella... xD,, weno raken grax... esto nunk c m va a olvidar
Título: Re: Reto #1 - Dividir Texto
Publicado por: Drek en 10 de Noviembre de 2006, 18:39:43 pm
se yo tambien la e entendido :) gracias raken
Título: Re: Reto #1 - Dividir Texto
Publicado por: Pc-Admin en 11 de Noviembre de 2006, 11:06:30 am
Estos retos estan wapos, y como veo sirven de mucho :P:P
Título: Re: Reto #1 - Dividir Texto
Publicado por: Drek en 12 de Noviembre de 2006, 22:33:39 pm
pero que significa "\n"; exactamente? si me lo respondeis mejor :D
Título: Re: Reto #1 - Dividir Texto
Publicado por: Raken en 13 de Noviembre de 2006, 00:02:08 am
Se utiliza \n para hacer saltos de línea.

Por ejemplo tenemos esta frase:

Citar
Microsoft actualizará su plataforma de juegos Xbox 360

Si la pusiéramos así:

Citar
Microsoft actualizará\n su plataforma\n de juegos Xbox 360

El resultado sería:

Citar
Microsoft actualizará
 su plataforma
de juegos Xbox 360
Título: Re: Reto #1 - Dividir Texto
Publicado por: Raken en 13 de Noviembre de 2006, 00:09:13 am
Por cierto, yo puse el código de tal forma que ya sabíamos que iban a ser 3 frases. Pero si no se sabe el número, sería con un bucle:

<?
$texto = "Microsoft actualizará su plataforma de juegos Xbox 360 de forma gratuita a través de Internet para permitir entre otras cosas una resolución de 1080 píxeles, considerada de alta definición. La actualización incorpora 85 características nuevas y se puede descargar a partir de este martes a través de una cuenta Xbox Live. Las mejoras van destinadas a la reproducción de vídeo en alta definición, a facilitar la actualización y gestión de los juegos en red Arcade, entre otras posibilidades.";

$division = explode (".", $texto);

$cuantasfrases = count($division);

$numero = 0;

for ($i=0; $i<=$cuantasfrases; $i++) {

echo $i+1.".- ".$division[$i]."\n";
$numero++;
}

echo "Nº de Oraciones: ".$numero;
?>
Título: Re: Reto #1 - Dividir Texto
Publicado por: BLISZ en 02 de Enero de 2007, 14:27:37 pm
<?
$texto = "Microsoft actualizará su plataforma de juegos Xbox 360 de forma gratuita a través de Internet para permitir entre otras cosas una resolución de 1080 píxeles, considerada de alta definición. La actualización incorpora 85 características nuevas y se puede descargar a partir de este martes a través de una cuenta Xbox Live. Las mejoras van destinadas a la reproducción de vídeo en alta definición, a facilitar la actualización y gestión de los juegos en red Arcade, entre otras posibilidades.";

$division = explode (".", $texto);

for($i=1;$i<count($division);$i++)
echo $i." - ".$division[$i-1]."<br />";
echo $i-1 ." divisiones";
?>

El problema aqui es que el texto termina ocn un punto, entonces al hacer el explode con el simbolo del punto crea al final un elemento nuevo en el array que está vacío. Es la unica "dificultad" por llamarlo así.
Título: Re: Reto #1 - Dividir Texto
Publicado por: FeDe en 07 de Enero de 2007, 02:42:56 am
Bueno me apunto al reto jeje :P

<?

$t = "Microsoft actualizará su plataforma de juegos Xbox 360 de forma gratuita a través de Internet para permitir entre otras cosas una resolución de 1080 píxeles, considerada de alta definición. La actualización incorpora 85 características nuevas y se puede descargar a partir de este martes a través de una cuenta Xbox Live. Las mejoras van destinadas a la reproducción de vídeo en alta definición, a facilitar la actualización y gestión de los juegos en red Arcade, entre otras posibilidades.";

$div = explode(".",$t);

$i = 0;
foreach($div as $frase) {
$i++;
echo "<b>" . $i . "-.</b> " . $frase . "<br>";
}

?>

Bueno he utilizado foreach, que la aprendí a utilizar pero medianamente, creo que va pero probarlo por sí acaso (si quereis ehh :P), foreach es semejante a for pero mira cada division :P

Venga,
Un Saludo,
FeDe.
Título: Re: Reto #1 - Dividir Texto
Publicado por: xmc254 en 07 de Enero de 2007, 18:08:03 pm
nave, yo tambien mapunto al reto, cuando acabe el codigo lo posteare editando este mensaje
Título: Re: Reto #1 - Dividir Texto
Publicado por: Raken en 12 de Enero de 2007, 16:00:04 pm
Bueno me apunto al reto jeje :P

<?

$t = "Microsoft actualizará su plataforma de juegos Xbox 360 de forma gratuita a través de Internet para permitir entre otras cosas una resolución de 1080 píxeles, considerada de alta definición. La actualización incorpora 85 características nuevas y se puede descargar a partir de este martes a través de una cuenta Xbox Live. Las mejoras van destinadas a la reproducción de vídeo en alta definición, a facilitar la actualización y gestión de los juegos en red Arcade, entre otras posibilidades.";

$div = explode(".",$t);

$i = 0;
foreach($div as $frase) {
$i++;
echo "<b>" . $i . "-.</b> " . $frase . "<br>";
}

?>

Bueno he utilizado foreach, que la aprendí a utilizar pero medianamente, creo que va pero probarlo por sí acaso (si quereis ehh :P), foreach es semejante a for pero mira cada division :P

Venga,
Un Saludo,
FeDe.

Está bien, excepto por la variable $i, que empiezas a contar desde 1. Le has asignado el valor 0, pero cuando empieza el bucle foreach lo primero que haces es sumarle uno, con lo cual empiezas desde 0+1=1.

Para mostrar las frases, debes empezar desde la primera partición, que es cero.

NO:  frase[1], frase[2], frase[3]

SI:  frase[0], frase[1], frase[2]
Título: Re: Reto #1 - Dividir Texto
Publicado por: xmc254 en 12 de Enero de 2007, 23:46:08 pm
yo al final me borro del reto porque no creo que valga hacer una variable con cada frase... porque con el tiempo que tengo ultimamente, solo puedo hacer eso yh no puedo pensar en un code con la funcion explode porque no me daria tiempo porque entre el insti... y el ordenador solo lo cojo los fines de semana... no tendria tiempo
Título: Re: Reto #1 - Dividir Texto
Publicado por: BLISZ en 14 de Enero de 2007, 15:41:47 pm
pero si esto se hace en un minuto  :o
Título: Re: Reto #1 - Dividir Texto
Publicado por: xmc254 en 17 de Enero de 2007, 20:46:42 pm
me alegro por ti pero en ese minuto que gasto, puedo hacer algo mejorcomo estudiar... siuncaso, lo hare para la semana blanca en febrero...