lunes, 20 de febrero de 2012

Problemas

Problema

En los datos de entrada aparecen una o más calificaciones de estudiantes  en la escala de 0 a 100, seguidos del valor centinela -999. Determinar y mostrar el total de las calificaciones excluyendo, al centinela.





total:=0;

read(Calif);

WHILE Calif<>-999 DO

BEGIN

total:=total+Calif;

read(Calif)

END;

Write(´El total de las calificaciones es´, total:1)



Obsérvese que se asigna a total el valor inicial 0 antes de la proposición WHILE. Dentro del cuerpo del ciclo, la proposición.



total:=total+Calif;



Calcula los totales parciales de las calificaciones







Completa en los espacios con el identificador o el valor adecuado en el programa siguiente para que también muestre el promedio de las calificaciones





total:=___;                                  (*dar valor inicial al total de calificaciones*)

contador:=0;                               (*contar el número de calificaciones*)

read(Calif);                                 (*capturar la primera calificación*)

WHILE Calif<>____ DO          (*probar el centinela*)

______:=contador+1          (*incrementar el contador*)

total:=______+Calif;           (*sumar la nueva calificación*)

read(____)                                 (*capturar la siguiente calificación*)

END;

Write(´El total de las calificaciones es´, total:1´)

(*Calcular la calificación promedio*)

Promedio:=total/contador;

Writeln(´La calificación promedio es´,promedio:6:2)



Es posible incluir expresiones booleanas compuestas en las proposiciones WHILE de Pascal a través de los operadores booleanos:  AND, OR y NOT. Las variables booleanas se pueden emplear para controlar la ejecución  de una proposición WHILE.





Problema

¿Qué sucede si se prueban todos los enteros entre uno y num  no se encuentra un divisor exacto? La variable indic seguirá teniendo el valor false, pero será preciso terminar el ciclo. Es necesario probar también el cumplimiento de esta condición. Por tanto, la expresión booleana que se usará en la proposición WHILE tendrá dos partes: “NOT ind” y “divisor<num”.



Solución

El siguiente segmento en Pascal muestra la solución:



read(num);

indic:=false;                               (*se supone que todavía no hay divisor exacto*)

divisor:=2;                                   (*se inicia la prueba de división con 2*)

WHILE NOT THEN indic AND (divisor<num) DO

BEGIN

      indic:=num MOD divisor=0;

      divisor:=divisor+1

END;

write(‘El numero’, num:1,’ ‘);

IF indic

THEN writeln(‘Tiene divisor exacto’)

ELSE writeln(‘no tiene divisor exacto’)





La proposición de asignación

indic:=num MOD divisor=0




No hay comentarios:

Publicar un comentario