Pascal/Turbo Pascal - ejercicios

 
Vista:

ejercicios

Publicado por Diego (5 intervenciones) el 29/09/2009 04:49:18
Necesito ayuda cn este ejercicio:
"Codificar un programa que escriba la calificacion correspondiente a una nota, de acuerdo con el siguiente criterio:
0 a <5.0 Suspenso
5 a <6.5 Aprobado
6.5 a <8.5 Notable
8.5 a <10 Sobresaliente
10 Matricula de Honor
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

RE:ejercicios

Publicado por Diego (5 intervenciones) el 29/09/2009 09:27:01
De este ya lo tengo lo que pasa es q no me salen los msjs bien osea si digito el 5 sale sobresaliente cuando deberia de salir aprobado x ejemplo... o si se digita 3 sale sobresaliente cuando deberia de salir suspenso...
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

RE:ejercicios

Publicado por Diego (5 intervenciones) el 29/09/2009 19:44:24
Program nota
uses
crt;
var
nf: real
Begin
clrscr;
write ('Digite su nota final: ');
readln (nf);
writeln;
if (nf=0) and (nf<5.0) then
begin
writeln ('Su condicion final es Suspenso');
end
else
if (nf=5) and (nf<6.5) then
begin
writeln ('Su condicion final es Aprobado');
end
else
if (nf=6.5) and (nf<8.5) then
begin
writeln ('Su condicion final es Notable');
end
else
if (nf=8.5) and (nf<10) then
begin
writeln ('Su condicion final es Sobresaliente');
end
else
begin
writeln (Su condicion final es Matricula de honor');
end;
readkey;
End.

Eso es lo q tengo....
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

RE:ejercicios

Publicado por Diego Romero (996 intervenciones) el 30/09/2009 05:24:57
Primero que nada, tu código tiene errores de sintaxis, concretamente le faltan un par de punto y coma y una comilla, pero eso lo puedes detectar simplemente compilando el código.

Sobre tu problema específico el error es evidente (bueno, al menos para mí), todas las comparaciones que haces son incorrectas. Por ejemplo, cuando dice que ingresas un 8 y te sale por el else del último if cuando debería hacerse verdadero este if

if (nf=6.5) and (nf<8.5) then

¿cierto?. Falso. 8 sí es menor a 8.5 PERO no es igual a 6.5, por lo tanto la condición "and" no se cumple y por lo tanto sale por el else de ese if. Que aparezca el último mensaje se debe a que ese último "else" funciona como un "catch all", es decir "si no se cumple ninguna de las anteriores entonces se cumple esta.

Para el caso de que ingreses un 5. Llega a este if:

if (nf=5) and (nf<6.5) then

5 es menor a 6.5 Y ADEMÁS es igual a 5, por eso sí se cumple la condición "and".

La solución consiste en cambiar todos los iguales (=) igual o por mayor (=>) así:

if (nf=>5) and (nf<6.5) then

De esa forma estás preguntando si "nf" está entre los valores indicados en el intervalo [5,6.5) (intervalo abierto por la derecha).
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