PHP - while

 
Vista:
sin imagen de perfil
Val: 80
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

while

Publicado por Alejandro (37 intervenciones) el 06/04/2020 19:42:27
No consigo que funcione el while aquí:

Calcular las calificaciones de un grupo de alumnos. La nota final de cada alumno se calcula según el siguiente criterio: la parte práctica vale el 10%; la parte de problemas vale el 50% y la parte teórica el 40%. El algoritmo leerá el nombre del alumno, las tres notas, escribirá el resultado y volverá a pedir los datos del siguiente alumno hasta que el nombre sea una cadena vacía. Las notas deben estar entre 0 y 10, si no lo están, no imprimirá las notas, mostrará un mensaje de error y volverá pedir otro alumno.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
if (isset($_POST['envi'])){
  $alumno=$_POST['d'];
  $prac=$_POST['e'];
  $prob=$_POST['f'];
  $teo=$_POST['g'];
  while ($alumno==""){
    if (($prac<=10 && $prac>=0) && ($prob<=10 && $prob>=0) && ($teo<=10 && $teo>=0)){
        echo "El alumno ".$alumno;
        echo "La nota práctica es ".$prac;
        echo "La nota de problemas es ".$prob;
        echo "La nota teórica es ".$teo;
        $prac=$prac*0.1;
        $prob=$prob*0.5;
        $teo=$teo*0.4;
        $tot=$prac+$prob+$teo;
        echo "La nota final es ".$tot;
    }else{ echo "Has escrito una nota errónea, vuelve a escribirla.";
    }echo "Escribe el nombre de otro alumno";
  }
}
?>
<form method="post" action="pract5.php">
<label>Escribe el nombre del alumno: </label>&nbsp;
<input type="text" name="d">
<br>
<label>Escribe la nota práctica: </label>&nbsp;
<input type="text" name="e">
<br>
<label>Escribe la nota de problemas: </label>&nbsp;
<input type="text" name="f">
<br>
<label>Escribe la nota teórica: </label>&nbsp;
<input type="text" name="g">
&nbsp;&nbsp;
<input type="submit" name="envi" value="enviar">
</form>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Julio
Val: 2.007
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

while

Publicado por Julio (830 intervenciones) el 06/04/2020 20:59:07
Hola.

A no consigues que funcione el while, ¿te refieres a...? De todas formas, ese while que tú tienes va a ser siempre cierto mientras el alumno sea la cadena vacía, justo al contrario de lo que te piden. Supongo que por eso no te funciona como quieres.

-----------------------------
Aprende la programación desde una perspectiva básica y simplista en Programación Básica
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 80
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

while

Publicado por Alejandro (37 intervenciones) el 06/04/2020 21:22:00
Cierto, he descubierto que la negación es con <>, mi problema ahora es que entra en un bucle interminable, ¿cómo lo puedo solucionar?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
if (isset($_POST['envi'])){
  $alumno=$_POST['d'];
  $prac=$_POST['e'];
  $prob=$_POST['f'];
  $teo=$_POST['g'];
  while ($alumno<>""){
    if (($prac<=10 && $prac>=0) && ($prob<=10 && $prob>=0) && ($teo<=10 && $teo>=0)){
        echo "El alumno ".$alumno;
        echo "La nota práctica es ".$prac;
        echo "La nota de problemas es ".$prob;
        echo "La nota teórica es ".$teo;
        $prac=$prac*0.1;
        $prob=$prob*0.5;
        $teo=$teo*0.4;
        $tot=$prac+$prob+$teo;
        echo "La nota final es ".$tot;
    }else{ echo "Has escrito una nota errónea, vuelve a escribirla.";
    }echo "Escribe el nombre de otro alumno";
  }
}
?>
<form method="post" action="pract5.php">
<label>Escribe el nombre del alumno: </label>&nbsp;
<input type="text" name="d">
<br>
<label>Escribe la nota práctica: </label>&nbsp;
<input type="text" name="e">
<br>
<label>Escribe la nota de problemas: </label>&nbsp;
<input type="text" name="f">
<br>
<label>Escribe la nota teórica: </label>&nbsp;
<input type="text" name="g">
&nbsp;&nbsp;
<input type="submit" name="envi" value="enviar">
</form>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Julio
Val: 2.007
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

while

Publicado por Julio (830 intervenciones) el 06/04/2020 22:26:47
Lee el enunciado, te está diciendo cuándo para el while y ya lo tienes, además...

-----------------------------
Aprende la programación desde una perspectiva básica y simplista en Programación Básica
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Julio
Val: 2.007
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

while

Publicado por Julio (830 intervenciones) el 07/04/2020 14:30:03
¿Qué ocurre si dejas la variable alumno sin ningún texto escrito?

-----------------------------
Aprende la programación desde una perspectiva básica y simplista en Programación Básica
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Julio
Val: 2.007
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

while

Publicado por Julio (830 intervenciones) el 07/04/2020 18:57:05
¿Y el problema está entonces en...?

-----------------------------
Aprende la programación desde una perspectiva básica y simplista en Programación Básica
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 80
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

while

Publicado por Alejandro (37 intervenciones) el 07/04/2020 19:08:04
En que me da un bucle infinito así:


El alumno pepeLa nota práctica es 7La nota de problemas es 7La nota teórica es 7La nota final es 7Escribe el nombre de otro alumnoEl alumno pepeLa nota práctica es 0.7La nota de problemas es 3.5La nota teórica es 2.8La nota final es 2.94Escribe el nombre de otro alumnoEl alumno pepeLa nota práctica es 0.07La nota de problemas es 1.75La nota teórica es 1.12La nota final es 1.33Escribe el nombre de otro alumnoEl alumno pepeLa nota práctica es 0.007La nota de problemas es 0.875La nota teórica es 0.448La nota final es 0.6174Escribe el nombre de otro alumnoEl alumno pepeLa nota práctica es 0.0007La nota de problemas es 0.4375La nota teórica es 0.1792La nota final es 0.2905Escribe el nombre de otro alumnoEl alumno pepeLa nota práctica es 7.0E-5La nota de problemas es 0.21875La nota teórica es 0.07168La nota final es 0.138054Escribe el nombre de otro alumnoEl alumno pepeLa nota práctica es 7.0E-6La nota de problemas es 0.109375La nota teórica es 0.028672La nota final es 0.066157Escribe el nombre de otro alumnoEl alumno pepeLa nota práctica es 7.0E-7La nota de problemas es 0.0546875La nota teórica es 0.0114688La nota final es 0.03193134Escribe el nombre de otro alumnoEl alumno pepeLa nota práctica es 7.0E-8La nota de problemas es 0.02734375La nota teórica es 0.00458752La nota final es 0.01550689Escribe el nombre de otro alumnoEl alumno pepeLa nota práctica es 7.0E-9La nota de problemas es 0.013671875La nota teórica es 0.001835008La nota final es 0.0075699414Escribe el nombre de otro alumnoEl alumno pepeLa nota práctica es 7.0E-10La nota de problemas es 0.0068359375La nota teórica es 0.0007340032La nota final es 0.0037115701Escribe el nombre de otro alumnoEl alumno pepeLa nota práctica es 7.0E-11La nota de problemas es 0.00341796875La nota teórica es 0.00029360128La nota final es 0.001826424894Escribe el nombre de otro alumnoEl alumno pepeLa nota práctica es 7.0E-12La nota de problemas es 0.001708984375La nota teórica es 0.000117440512La nota final es 0.000901468393Escribe el nombre de otro alumnoEl alumno pepeLa nota práctica es 7.0E-13La nota de problemas es 0.0008544921875La nota teórica es 4.69762048E-5La nota final es 0.00044603657574Escribe el nombre de otro alumnoEl alumno pepeLa nota práctica es 7.0E-14La nota de problemas es 0.00042724609375La nota teórica es 1.879048192E-5La nota final es 0.00022113923965Escribe el nombre de otro alumnoEl alumno pepeLa nota práctica es 7.0E-15La nota de problemas es 0.000213623046875La nota teórica es 7.516192768E-6La nota final es 0.0001098180005454Escribe el nombre de otro alumnoEl alumno pepeLa nota práctica es 7.0E-16La nota de problemas es 0.0001068115234375La nota teórica es 3.0064771072E-6La nota final es 5.46083525617E-5Escribe el nombre de otro alumnoEl alumno pepeLa nota práctica es 7.0E-17La nota de problemas es 5.340576171875E-5La nota teórica es 1.20259084288E-6La nota final es 2.7183917196534E-5Escribe el nombre de otro alumnoEl alumno pepeLa nota práctica es 7.0E-18La nota de problemas es 2.6702880859375E-5La nota teórica es 4.81036337152E-7La nota final es 1.3543854964549E-5Escribe el nombre de otro alumnoEl alumno pepeLa nota práctica es 7.0E-19La nota de problemas es 1.3351440429688E-5La nota teórica es 1.924145348608E-7La nota final es 6.7526860287881E-6Escribe el nombre de otro alumnoEl alumno pepeLa nota práctica es 7.0E-20La nota de problemas es 6.6757202148438E-6La nota teórica es 7.696581394432E-8La nota final es 3.3686464329996E-6Escribe el nombre de otro alumnoEl alumno pepeLa nota práctica es 7.0E-21La nota de problemas es 3.3378601074219E-6La nota teórica es 3.0786325577728E-8La nota final es 1.681244583942E-6Escribe el nombre de otro alumnoEl alumno pepeLa nota práctica es 7.0E-22La nota de problemas es 1.6689300537109E-6La nota teórica es 1.2314530231091E-8La nota final es 8.3939083894791E-7Escribe el nombre de otro alumnoEl alumno pepeLa nota práctica es 7.0E-23La nota de problemas es 8.3446502685547E-7La nota teórica es 4.9258120924365E-9La nota final es 4.1920283826471E-7Escribe el nombre de otro alumnoEl alumno pepeLa nota práctica es 7.0E-24La nota de problemas es 4.1723251342773E-7La nota teórica es 1.9703248369746E-9La nota final es 2.0940438664866E-7Escribe el nombre de otro alumnoEl alumno pepeLa nota práctica es 7.0E-25La nota de problemas es 2.0861625671387E-7La nota teórica es 7.8812993478984E-10La nota final es 1.0462338033085E-7Escribe el nombre de otro alumnoEl alumno pepeLa nota práctica es 7.0E-26La nota de problemas es 1.0430812835693E-7La nota teórica es 3.1525197391594E-10La nota final es 5.2280164968033E-8Escribe el nombre de otro alumnoEl alumno pepeLa nota práctica es 7.0E-27La nota de problemas es 5.2154064178467E-8La nota teórica es 1.2610078956637E-10La nota final es 2.612747240506E-8Escribe el nombre de otro alumnoEl alumno pepeLa nota práctica es 7.0E-28La nota de problemas es 2.6077032089233E-8La nota teórica es 5.044031582655E-11La nota final es
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Julio
Val: 2.007
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

while

Publicado por Julio (830 intervenciones) el 07/04/2020 19:16:58
Mmmm, no entiendo. A ver, un bucle infinito sólo puede ser si entra dentro del bucle. Si el alumno tiene cadena vacía, no va a entrar en el while, luego no tiene sentido un bucle infinito ahí.

¿Cuando le pones un alumno sin nombre empieza a imprimir todo eso? Porque veo que siempre es pepe el alumno.

-----------------------------
Aprende la programación desde una perspectiva básica y simplista en Programación Básica
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 80
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

while

Publicado por Alejandro (37 intervenciones) el 07/04/2020 19:27:35
Claro, el problema es que al poner un nombre de alumno y las notas me aparece ese bucle infinito.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Julio
Val: 2.007
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

while

Publicado por Julio (830 intervenciones) el 07/04/2020 19:30:54
Ah, eso es otra cosa bien distinta y es normal. ¿Ese while tiene alguna condición de parada? No, siempre que entre, seguirá hasta el infinito.

Es que ahí no va un while, va un simple if. Ese while no te es útil, elimínalo. Lo que tienes que hacer es mostrar el formulario sólo si entra en ese if y no mostrarlo cuando el alumno es "".

P.D.: ¿Por qué abres otro hilo con la misma pregunta?

-----------------------------
Aprende la programación desde una perspectiva básica y simplista en Programación Básica
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de joel
Val: 3.828
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

while

Publicado por joel (1269 intervenciones) el 06/04/2020 21:22:06
Hola Alejandro, solo entrara en el bucle si la variable $alumno esta vacía!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de joel
Val: 3.828
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

while

Publicado por joel (1269 intervenciones) el 07/04/2020 19:22:24
El problema Alejandro, es que la variable $alumno, siempre tiene valor, por lo que el bucle finaliza cuando $alumno=="" y eso no se da nunca!!

Porque haces un bucle mientras la variable $alumno tenga contenido???
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de joel
Val: 3.828
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

while

Publicado por joel (1269 intervenciones) el 07/04/2020 21:38:11
Ok, perfecto!!! nos puedes mostrar como ha quedado al final?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 80
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

while

Publicado por Alejandro (37 intervenciones) el 07/04/2020 22:39:30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
if (isset($_POST['envi'])){
  $alumno=$_POST['d'];
  $prac=$_POST['e'];
  $prob=$_POST['f'];
  $teo=$_POST['g'];
  if ($alumno<>""){
    if (($prac<=10 && $prac>=0) && ($prob<=10 && $prob>=0) && ($teo<=10 && $teo>=0)){
        echo "El alumno es ".$alumno."."."<br>";
        echo "La nota práctica es ".$prac."."."<br>";
        echo "La nota de problemas es ".$prob."."."<br>";
        echo "La nota teórica es ".$teo."."."<br>";
        $prac=$prac*0.1;
        $prob=$prob*0.5;
        $teo=$teo*0.4;
        $tot=$prac+$prob+$teo;
        echo "La nota final es ".$tot."."."<br>";
    }else{ echo "Has escrito una nota errónea, vuelve a escribirla.";
    }echo "Escribe el nombre de otro alumno".".";
  }
}
?>
<form method="post" action="pract5.php">
<br>
<label>Escribe el nombre del alumno: </label>&nbsp;
<input type="text" name="d">
<br>
<label>Escribe la nota práctica: </label>&nbsp;
<input type="text" name="e">
<br>
<label>Escribe la nota de problemas: </label>&nbsp;
<input type="text" name="f">
<br>
<label>Escribe la nota teórica: </label>&nbsp;
<input type="text" name="g">
&nbsp;&nbsp;
<input type="submit" name="envi" value="enviar">
</form>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar