Ejercicios (sin formularios) - if ... elseif ... else ... (1) - Soluciones

En esta página se muestran una parte de las soluciones de los ejercicios if .. elseif ... else ..., concretamente el fragmento PHP, sin el principio ni el final de la página que se puede dejar en un fragmento HTML. La solución completa se puede descargar de la página de soluciones.

if ... elseif ... else ... (1) 1 - Dos dados

<?php
$dado1 = rand(1, 6);
$dado2 = rand(1, 6);

print "  <p>\n";
print "    <img src=\"img/$dado1.svg\" alt=\"$dado1\" title=\"$dado1\" width=\"140\" height=\"140\">\n";
print "    <img src=\"img/$dado2.svg\" alt=\"$dado2\" title=\"$dado2\" width=\"140\" height=\"140\">\n";
print "  </p>\n";
print "\n";

if ($dado1 == $dado2) {
    print "  <p>Ha sacado una pareja de $dado1.</p>\n";
} else {
    print "  <p>No ha sacado pareja. El valor más alto es " . max($dado1, $dado2) . ".</p>\n";
}
?>

if ... elseif ... else ... (1) 2 - Juego: Dado más alto

<?php
$dado1 = rand(1, 6);
$dado2 = rand(1, 6);

print "        <td style=\"padding: 10px; background-color: red;\">";
print "          <img src=\"img/$dado1.svg\" alt=\"$dado1\" title=\"$dado1\" width=\"140\" height=\"140\" />";
print "        </td>\n";
print "        <td style=\"padding: 10px; background-color: blue;\">";
print "          <img src=\"img/$dado2.svg\" alt=\"$dado2\" title=\"$dado2\" width=\"140\" height=\"140\" />";
print "        </td>\n";

if ($dado1 > $dado2) {
    print "        <td>Ha ganado el jugador 1</td>\n";
} elseif ($dado1 < $dado2) {
    print "        <td>Ha ganado el jugador 2</td>\n";
} else {
    print "        <td>Han empatado</td>\n";
}
?>

if ... elseif ... else ... (1) 3 - Juego: Dos dados más altos

<?php
$dado1a = rand(1, 6);
$dado1b = rand(1, 6);
$dado2a = rand(1, 6);
$dado2b = rand(1, 6);

print "        <td style=\"padding: 10px; background-color: red;\">\n";
print "          <img src=\"img/$dado1a.svg\" alt=\"$dado1a\" title=\"$dado1a\" width=\"140\" height=\"140\" />\n";
print "          <img src=\"img/$dado1b.svg\" alt=\"$dado1b\" title=\"$dado1b\" width=\"140\" height=\"140\" />\n";
print "        </td>\n";
print "        <td style=\"padding: 10px; background-color: blue;\">\n";
print "          <img src=\"img/$dado2a.svg\" alt=\"$dado2a\" title=\"$dado2a\" width=\"140\" height=\"140\" />\n";
print "          <img src=\"img/$dado2b.svg\" alt=\"$dado2b\" title=\"$dado2b\" width=\"140\" height=\"140\" />\n";
print "        </td>\n";

if ($dado1a == $dado1b) {
    $pareja1 = $dado1a;
} else {
    $pareja1 = 0;
}

if ($dado2a == $dado2b) {
    $pareja2 = $dado2a;
} else {
    $pareja2 = 0;
}

$total1 = $dado1a + $dado1b;
$total2 = $dado2a + $dado2b;

if ($pareja1 > $pareja2) {
    print "        <td>Ha ganado el jugador 1</td>\n";
} elseif ($pareja1 < $pareja2) {
    print "        <td>Ha ganado el jugador 2</td>\n";
} else {
    if ($total1 > $total2) {
        print "        <td>Ha ganado el jugador 1</td>\n";
    } elseif ($total1 < $total2) {
        print "        <td>Ha ganado el jugador 2</td>\n";
    } else {
        print "        <td>Han empatado</td>\n";
    }
}
?>

El bloque if ... elseif ... else ... se podría haber escrito sin anidamiento:

if ($pareja1 > $pareja2) {
    print "        <td>Ha ganado el jugador 1</td>\n";
} elseif ($pareja1 < $pareja2) {
    print "        <td>Ha ganado el jugador 2</td>\n";
} elseif ($total1 > $total2) {
    print "        <td>Ha ganado el jugador 1</td>\n";
} elseif ($total1 < $total2) {
    print "        <td>Ha ganado el jugador 2</td>\n";
} else {
    print "        <td>Han empatado</td>\n";
}

if ... elseif ... else ... (1) 4 - Tres dados

<?php
$dado1 = rand(1, 6);
$dado2 = rand(1, 6);
$dado3 = rand(1, 6);

print "  <p>\n";
print "    <img src=\"img/$dado1.svg\" alt=\"$dado1\" title=\"$dado1\" width=\"140\" height=\"140\">\n";
print "    <img src=\"img/$dado2.svg\" alt=\"$dado2\" title=\"$dado2\" width=\"140\" height=\"140\">\n";
print "    <img src=\"img/$dado3.svg\" alt=\"$dado3\" title=\"$dado3\" width=\"140\" height=\"140\">\n";
print "  </p>\n";
print "\n";

if ($dado1 == $dado2 && $dado1 == $dado3) {
    print "  <p>Ha sacado un trío de $dado1.</p>\n";
} elseif ($dado1 == $dado2 || $dado1 == $dado3) {
    print "  <p>Ha sacado una pareja de $dado1.</p>\n";
} elseif ($dado2 == $dado3) {
    print "  <p>Ha sacado una pareja de $dado2.</p>\n";
} else {
    print "  <p>El valor más alto es " . max($dado1, $dado2, $dado3) . ".</p>\n";
}
?>

if ... elseif ... else ... (1) 5 - Juego: Tres dados más altos

<?php
$dado1a = rand(1, 6);
$dado1b = rand(1, 6);
$dado1c = rand(1, 6);
$dado2a = rand(1, 6);
$dado2b = rand(1, 6);
$dado2c = rand(1, 6);

print "        <td style=\"padding: 10px; background-color: red;\">\n";
print "          <img src=\"img/$dado1a.svg\" alt=\"$dado1a\" title=\"$dado1a\" width=\"140\" height=\"140\" />\n";
print "          <img src=\"img/$dado1b.svg\" alt=\"$dado1b\" title=\"$dado1b\" width=\"140\" height=\"140\" />\n";
print "          <img src=\"img/$dado1c.svg\" alt=\"$dado1c\" title=\"$dado1c\" width=\"140\" height=\"140\" />\n";
print "        </td>\n";
print "        <td style=\"padding: 10px; background-color: blue;\">\n";
print "          <img src=\"img/$dado2a.svg\" alt=\"$dado2a\" title=\"$dado2a\" width=\"140\" height=\"140\" />\n";
print "          <img src=\"img/$dado2b.svg\" alt=\"$dado2b\" title=\"$dado2b\" width=\"140\" height=\"140\" />\n";
print "          <img src=\"img/$dado2c.svg\" alt=\"$dado2c\" title=\"$dado2c\" width=\"140\" height=\"140\" />\n";
print "        </td>\n";

if ($dado1a == $dado1b && $dado1a == $dado1c) {
    $trio1 = $dado1a;
} else {
    $trio1 = 0;
}

if ($dado2a == $dado2b && $dado2a == $dado2c) {
    $trio2 = $dado2a;
} else {
    $trio2 = 0;
}

if ($dado1a == $dado1b || $dado1a == $dado1c) {
    $pareja1 = $dado1a;
} elseif ($dado1b == $dado1c) {
    $pareja1 = $dado1b;
} else {
    $pareja1 = 0;
}

if ($dado2a == $dado2b || $dado2a == $dado2c) {
    $pareja2 = $dado2a;
} elseif ($dado2b == $dado2c) {
    $pareja2 = $dado2b;
} else {
    $pareja2 = 0;
}

$total1 = $dado1a + $dado1b + $dado1c;

$total2 = $dado2a + $dado2b + $dado2c;

// print "<p>1: Trío $trio1 - Pareja $pareja1 - Total: $total1</p>\n";
// print "<p>2: Trío $trio2 - Pareja $pareja2 - Total: $total2</p>\n";

if ($trio1 > $trio2) {
    print "        <td>Ha ganado el jugador 1</td>\n";
} elseif ($trio1 < $trio2) {
    print "        <td>Ha ganado el jugador 2</td>\n";
} else {
    if ($pareja1 > $pareja2) {
        print "        <td>Ha ganado el jugador 1</td>\n";
    } elseif ($pareja1 < $pareja2) {
        print "        <td>Ha ganado el jugador 2</td>\n";
    } else {
        if ($total1 > $total2) {
            print "        <td>Ha ganado el jugador 1</td>\n";
        } elseif ($total1 < $total2) {
            print "        <td>Ha ganado el jugador 2</td>\n";
        } else {
            print "        <td>Han empatado</td>\n";
        }
    }
}
?>

Como en el ejercicio 3, el bloque if ... elseif ... else ... se podría haber escrito sin anidamiento:

if ($trio1 > $trio2) {
    print "        <td>Ha ganado el jugador 1</td>\n";
} elseif ($trio1 < $trio2) {
    print "        <td>Ha ganado el jugador 2</td>\n";
} elseif ($pareja1 > $pareja2) {
    print "        <td>Ha ganado el jugador 1</td>\n";
} elseif ($pareja1 < $pareja2) {
    print "        <td>Ha ganado el jugador 2</td>\n";
} elseif ($total1 > $total2) {
    print "        <td>Ha ganado el jugador 1</td>\n";
} elseif ($total1 < $total2) {
    print "        <td>Ha ganado el jugador 2</td>\n";
} else {
    print "        <td>Han empatado</td>\n";
}
?>