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: Elanti en 04 de Septiembre 2015, 00:18
-
EJERCICIO 3
Supón que quieres representar lo siguiente: hay 2 equipos españoles, en el primero el portero es Frank, el defensa Pepe, el medio Luis y el delantero Raul. En el segundo, el portero es Tiger, el defensa Mourin, el medio Katz y el delantero Alberto. Hay 1 equipo mexicano, donde el portero es Suarez, el defensa Koltz, el medio Fernandez y el delantero Ramirez. Hay 2 equipos argentinos. En el primero el portero es Higuita, el defensa Mel, el medio Rubens y el delantero Messi. En el segundo el portero es Kostenmeiner, el defensa Lenkins, el medio Marash y el delantero Juanes.
a) Representa los datos usando un array de tres dimensiones con índices numéricos donde el primer índice indica el país, el segundo el equipo y el tercero la posición del jugador. Presenta la información del país, equipo, posiciones y jugadores de cada equipo usando un bucle for.
b) Representa los datos usando un array de tres dimensiones con índices numéricos donde el primer índice indica el país, el segundo el equipo y el tercero la posición del jugador. Presenta la información del país, equipo, posiciones y jugadores de cada equipo usando un bucle for each.
c) Representa los datos usando arrays arrays asociativos donde el primer índice indica el país, el segundo el equipo y el tercero la posición del jugador (un ejemplo de cómo declarar un elemento sería por ejemplo: $equipos['Mexico']['Equipo1']['defensa']="koltz";). A continuación usando un bucle foreach recorre los elementos del array mostrando la información del país, equipo, posiciones y jugadores de cada equipo.
Este ejercicio me resultó extremadamente difícil. Apoyándome en respuestas de otras personas en este foro, logré resolverlo; pero mi solución para la parte "a" sólo funciona parcialmente, debido a que México tiene un solo equipo, y esto hace que mi bucle "for" no funcione del todo bien. Si alguien tiene alguna idea para resolverlo, se agradece. Yo me voy a poner mis neuronas en salmuera.
Solución parte "a":
<?php
$jugadores[0][0][0]="Frank";
$jugadores[0][0][1]="Pepe";
$jugadores[0][0][2]="Luis";
$jugadores[0][0][3]="Raúl";
$jugadores[0][1][0]="Tiger";
$jugadores[0][1][1]="Mourin";
$jugadores[0][1][2]="Katz";
$jugadores[0][1][3]="Alberto";
$jugadores[1][0][0]="Suárez";
$jugadores[1][0][1]="Koltz";
$jugadores[1][0][2]="Fernández";
$jugadores[1][0][3]="Ramírez";
$jugadores[2][0][0]="Higuita";
$jugadores[2][0][1]="Mel";
$jugadores[2][0][2]="Rubens";
$jugadores[2][0][3]="Messi";
$jugadores[2][1][0]="Kostenmeiner";
$jugadores[2][1][1]="Lenkins";
$jugadores[2][1][2]="Marash";
$jugadores[2][1][3]="Juanes";
$paises = array("España", "México","Argentina",);
$equipos = array ("primero", "segundo",);
$posiciones = array("portero", "defensa", "medio", "delantero");
for ($pai=0;$pai<count($jugadores);$pai++){
echo "<strong> Los jugadores de $paises[$pai] son: </strong><br /><br />";
for ($equi=0;$equi<count($equipos);$equi++){
echo " En el equipo $equipos[$equi]: <br/>";
for ($posi=0;$posi<count($posiciones);$posi++){
echo "<ul>";
echo "<li> En la posición $posiciones[$posi]: </li>";
echo " ",$jugadores[$pai][$equi][$posi], "<br />";
echo "</ul>";
}
}
}
?>
Solución parte "b":
<?php
$jugadores[0][0][0]="Frank";
$jugadores[0][0][1]="Pepe";
$jugadores[0][0][2]="Luis";
$jugadores[0][0][3]="Raúl";
$jugadores[0][1][0]="Tiger";
$jugadores[0][1][1]="Mourin";
$jugadores[0][1][2]="Katz";
$jugadores[0][1][3]="Alberto";
$jugadores[1][0][0]="Suárez";
$jugadores[1][0][1]="Koltz";
$jugadores[1][0][2]="Fernández";
$jugadores[1][0][3]="Ramírez";
$jugadores[2][0][0]="Higuita";
$jugadores[2][0][1]="Mel";
$jugadores[2][0][2]="Rubens";
$jugadores[2][0][3]="Messi";
$jugadores[2][1][0]="Kostenmeiner";
$jugadores[2][1][1]="Lenkins";
$jugadores[2][1][2]="Marash";
$jugadores[2][1][3]="Juanes";
foreach ($jugadores as $paises=>$pais){
echo "<strong>";
if ($paises==0){echo "España <br />";}
else if ($paises==1){echo "México <br />";}
else if ($paises==2){echo "Argentina <br />";}
echo "</strong>";
foreach ($pais as $equipos => $equipo){
if ($equipos == 0){echo " Primer equipo: <br />";}
else {echo " Segundo equipo: <br />";}
foreach ($equipo as $posicion => $jugador){
echo "<ul>";
if ($posicion==0){echo "<li>","Portero:", $jugador, "</li>";}
else if ($posicion==1){echo "<li>","Defensa:", $jugador, "</li>";}
else if ($posicion==2){echo "<li>","Medio:", $jugador, "</li>";}
else if ($posicion==3){echo "<li>","Delantero:", $jugador, "</li>";}
echo "</ul>";
}
}
}
?>
Solución parte "c":
<?php
$jugadores["España"]["primero"]["portero"]="Frank";
$jugadores["España"]["primero"]["defensa"]="Pepe";
$jugadores["España"]["primero"]["medio"]="Luis";
$jugadores["España"]["primero"]["delantero"]="Raúl";
$jugadores["España"]["segundo"]["portero"]="Tiger";
$jugadores["España"]["segundo"]["defensa"]="Mourin";
$jugadores["España"]["segundo"]["medio"]="Katz";
$jugadores["España"]["segundo"]["delantero"]="Alberto";
$jugadores["México"]["primero"]["portero"]="Suárez";
$jugadores["México"]["primero"]["defensa"]="Koltz";
$jugadores["México"]["primero"]["medio"]="Fernández";
$jugadores["México"]["primero"]["delantero"]="Ramírez";
$jugadores["Argentina"]["primero"]["portero"]="Higuita";
$jugadores["Argentina"]["primero"]["defensa"]="Mel";
$jugadores["Argentina"]["primero"]["medio"]="Rubens";
$jugadores["Argentina"]["primero"]["delantero"]="Messi";
$jugadores["Argentina"]["segundo"]["portero"]="Kostenmeiner";
$jugadores["Argentina"]["segundo"]["defensa"]="Lenkins";
$jugadores["Argentina"]["segundo"]["medio"]="Marash";
$jugadores["Argentina"]["segundo"]["delantero"]="Juanes";
foreach ($jugadores as $pais => $equipos){
foreach ($equipos as $equipo => $posiciones){
foreach ($posiciones as $posicion => $jugador){
echo "En $pais, en el equipo $equipo, el $posicion titular es: $jugador <br /> ";
}
}
}
?>
-
Hola Elanti, esto si que fue un quebradero de cabeza puff :o :o
Lo realize de esta manera
<?php
//Equipo España
$jugadores[0][0][0]="Frank";
$jugadores[0][0][1]="Pepe";
$jugadores[0][0][2]="Luis";
$jugadores[0][0][3]="Raúl";
$jugadores[0][1][0]="Tiger";
$jugadores[0][1][1]="Mourin";
$jugadores[0][1][2]="Katz";
$jugadores[0][1][3]="Alberto";
//Equipo Mexico
$jugadores[1][0][0]="Suárez";
$jugadores[1][0][1]="Koltz";
$jugadores[1][0][2]="Fernández";
$jugadores[1][0][3]="Ramírez";
//Equipo Argentina
$jugadores[2][0][0]="Higuita";
$jugadores[2][0][1]="Mel";
$jugadores[2][0][2]="Rubens";
$jugadores[2][0][3]="Messi";
$jugadores[2][1][0]="Kostenmeiner";
$jugadores[2][1][1]="Lenkins";
$jugadores[2][1][2]="Marash";
$jugadores[2][1][3]="Juanes";
$paises = array("España", "Mexico", "Argentina");
$posicion = array("Portero", "Defensa", "Medio", "Delantero");
$equipo = array("Equipo Titular", "Equipo Suplente");
for($i = 0; $i < count($jugadores); $i++) {
for($j = 0; $j < count($jugadores[$i]); $j++) {
echo '<strong>Los jugadores de '.$paises[$i]." son:</strong><br />";
echo $equipo[$j];
echo "<ul>";
for($k = 0; $k < count($jugadores[$i][$j]); $k++) {
echo "<li>".$posicion[$k].": ".$jugadores[$i][$j][$k]."</li>";
}
echo "</ul>";
}
}
?>
Presta atención de como lo posicione en la matriz a los jugadores del equipo de mexico. Entonces cuando el bucle este en for($i = 1; $i < count($jugadores); $i++) count($jugadores) me va a retornar 3 por que hay 0,1,2.
Entonces cuando entramos a este bucle for($j = 0; $j < count($jugadores[$i]); $j++) count($jugadores[1]); va a retornarme 1 asi que el bucle dara una sola vuelta, despues entra a este for($k = 0; $k < count($jugadores[$i][$j]); $k++) que count($jugadores[1][0]); me va retornar 4, entonces el bucle me dara cuatro vuelta contando desde 0 hasta 3.
Te pido disculpa por la explicación no es muy buena pero espero que te sirva de ayuda y puedas analizar y resolver el problema.
¡Saludos!
-
¡Perfecto, GonzaH!
Me quedó clarísima tu solución. Viéndolo ya solucionado, parece fácil… pero cuando yo lo intenté, me perdí completamente entre los bucles (y todavía, si me distraigo un segundo, me pierdo). Supongo que será cuestión de seguir practicando, y algún día me va a resultar más fácil.
Saludos.
-
Gracias a ambos por su tiempo y las molestias... Son lo máximo... Un abrazo inmeso...