Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Lorenzo31 en 18 de Febrero 2016, 18:33
-
Dejo la solución a mi ejercicio.
<!DOCTYPE html>
<html>
<head> <meta charset="utf-8"/> </head>
<body>
<?php
$alumnos[0] = array(1, 14, 8, 3);
$alumnos[1] = array(6, 19, 7, 2);
$alumnos[2] = array(3, 13, 4, 1);
for($i=0;$i<3;$i++){
switch($i){
case 0: echo 'Nivel básico: '; break;
case 1: echo '<br/>Nivel medio: '; break;
case 2: echo '<br/>Nivel de perfeccionamiento: '; break;
}
for($x = 0; $x < 4; $x++){ echo $alumnos[$i][$x].' '; }
}
$alumnos = array( array(1, 14, 8, 3),
array(6, 19, 7, 2),
array(3, 13, 4, 1) );
echo '<br/>';
for($i=0;$i<3;$i++){
switch($i){
case 0: echo 'Nivel básico: '; break;
case 1: echo '<br/>Nivel medio: '; break;
case 2: echo '<br/>Nivel de perfeccionamiento: '; break;
}
for($x = 0; $x < 4; $x++){ echo $alumnos[$i][$x].' '; }
}
$alumnos[0][0] = 1; $alumnos[0][1] = 14; $alumnos[0][2] = 8; $alumnos[0][3] = 3;
$alumnos[1][0] = 6; $alumnos[1][1] = 19; $alumnos[1][2] = 7; $alumnos[1][3] = 2;
$alumnos[2][0] = 3; $alumnos[2][1] = 13; $alumnos[2][2] = 4; $alumnos[2][3] = 1;
echo '<br/>';
for($i=0;$i<3;$i++){
switch($i){
case 0: echo 'Nivel básico: '; break;
case 1: echo '<br/>Nivel medio: '; break;
case 2: echo '<br/>Nivel de perfeccionamiento: '; break;
}
for($x = 0; $x < 4; $x++){ echo $alumnos[$i][$x].' '; }
}
?>
</body>
</html>
-
Buenas tardes, introducir un switch dentro de un bucle for utilizando el contador como elemento discriminante para el switch... la verdad es que es raro ver algo así (yo diría que es más común usar if y el operador módulo), pero en el fondo no veo nada incorrecto, y si te funciona...
Aquí hay una respuesta un poco rústica pero más convencional, https://www.aprenderaprogramar.com/foros/index.php?topic=1893.0
Saludos
-
Buenas Mario, if con operador modulo? a que te refieres, con if te refieres a 3 if o hay alguna forma de hacerlo mas corto con el modulo ese switch que puse.
-
Buenos días, mencioné el operador módulo pensando que era necesario realizar un conteo del tipo 0-1-2-3 y volver a empezar 0-1-2-3 varias veces, eso te lo permite hacer el operador módulo. Pero mirándolo con calma tampoco es necesario. El código de lo que creo sería una solución más estándar (sin usar el switch... ni siquiera if; también he ordenado por apartados) sería este:
<meta charset="utf-8">
<!DOCTYPE html>
<html>
<head> <meta charset="utf-8"/> </head>
<body>
<?php
$idioma[0]='Inglés'; $idioma[1]='Francés'; $idioma[2]='Alemán'; $idioma[3]='Ruso';
$nivel[0]='Nivel Básico'; $nivel[1]='Nivel Medio'; $nivel[2]='Nivel Perfeccionamiento';
echo '<h2> Apartado a) Ejercicio </h2>';
$alumnosA[0][0] = 1; $alumnosA[0][1] = 14; $alumnosA[0][2] = 8; $alumnosA[0][3] = 3;
$alumnosA[1][0] = 6; $alumnosA[1][1] = 19; $alumnosA[1][2] = 7; $alumnosA[1][3] = 2;
$alumnosA[2][0] = 3; $alumnosA[2][1] = 13; $alumnosA[2][2] = 4; $alumnosA[2][3] = 1;
for($i=0;$i<3;$i++){
for($j = 0; $j < 4; $j++){
echo $nivel[$i]. " - ". $idioma[$j] .": ". $alumnosA[$i][$j]. " alumnos <br/>";
}
}
echo '<br/><br/><br/>';
echo '<h2> Apartado b) Ejercicio </h2>';
$alumnosB = array( array(1, 14, 8, 3),
array(6, 19, 7, 2),
array(3, 13, 4, 1) );
for($i=0;$i<3;$i++){
for($j = 0; $j < 4; $j++){
echo $nivel[$i]. " - ". $idioma[$j] .": ". $alumnosB[$i][$j]. " alumnos <br/>";
}
}
echo '<br/><br/><br/>';
echo '<h2> Apartado c) Ejercicio </h2>';
$alumnosC[0] = array(1, 14, 8, 3);
$alumnosC[1] = array(6, 19, 7, 2);
$alumnosC[2] = array(3, 13, 4, 1);
for($i=0;$i<3;$i++){
for($j = 0; $j < 4; $j++){
echo $nivel[$i]. " - ". $idioma[$j] .": ". $alumnosC[$i][$j]. " alumnos <br/>";
}
}
?>
</body>
</html>
Saludos
-
Me parece una solucion muy buena.
Otra podria ser:
for($i=0;$i<3;$i++){
echo $nivel = (($i=0) ? 'Nivel bajo: ' : (($i=1) ? 'nivel medio: ' : 'nivel alto: ')); }
for($x = 0; $x < 4; $x++){ echo $alumnos[$i][$x].' '; }
}