ej2_pract1

3
accion SubjectFailed1quarterAL () const FTRIB: entero = 0; FSEC: entero = -1; fconst var { Declaramos las variables } idChair, idSubject, numEst, idEst: entero; marks: float; found: booleano; k, n, suspensos, bestStudent: entero; bestMarks: float; fvar { Inicializo las variables } found := false; suspensos := 0; bestMarks := 0.0; idChair := readInteger(); /* leo el primer elemento y preparo la secuencia */ { Inicio el tratamiento } {Pre: El apuntador se encuentra ahora en el primer elemento de la secuencia, aun no hemos tratado ningun elemento} mientras no(idChair = FSEQ) hacer idsubject := readInteger(); n:=0; { Esta sera mi marca que me indicara si idChair ya se ha escrito una vez por pantalla } mientras no(idSubject=FTRIB) y no(found) hacer

Upload: pedro-abel-diaz

Post on 15-Sep-2015

213 views

Category:

Documents


0 download

DESCRIPTION

eje 2 pac 1 fp

TRANSCRIPT

accion SubjectFailed1quarterAL ()constFTRIB: entero = 0;FSEC: entero = -1;fconstvar{ Declaramos las variables }idChair, idSubject, numEst, idEst: entero;marks: float;found: booleano;k, n, suspensos, bestStudent: entero;bestMarks: float;fvar{ Inicializo las variables }found := false;suspensos := 0;bestMarks := 0.0;idChair := readInteger(); /* leo el primer elemento y preparo la secuencia */{ Inicio el tratamiento }{Pre: El apuntador se encuentra ahora en el primer elemento de la secuencia, aun no hemos tratado ningun elemento} mientras no(idChair = FSEQ) haceridsubject := readInteger();n:=0; { Esta sera mi marca que me indicara si idChair ya se ha escrito una vez por pantalla }mientras no(idSubject=FTRIB) y no(found) hacernumEst := readInteger();para k:=1 hasta numEst haceridEst := readInteger();marks := readFloat();si (marks < 5.0) entoncessuspensos := suspensos+1;fsisi (marks >= bestMarks) entoncesbestMarks := marks;bestStudent := idEst;fsifpara{ Actualizamos found }found := (integerToFloat(numEst)/4.0 < = integerToFloat(suspensos));si (found) entonces{Para evitar que cada vez que encuentre una asignatura me vuelva a escribir el idChair, le pongo un contador para que solo me lo imprima la primera vez cuando n=0}si n:=0 entonces writeInteger(idChair);fsiwriteInteger(idSubject);aprobados := integerToFloat(numEst suspensos);writeFloat(aprobados*100.0/integerToFloat(numEst));wirteInteger(bestStudent);writeFloat(bestMark);n:=n+1;fsiidsubject :=readInteger();{Debemos recordar en este punto que si en esta lectura de TRIB encontramos alguna asignatura que cumpla nuestras condiciones, debemos acabar la la impresion por pantalla con FTRIB, en este caso 0, para ello: }si (idsubject=FTRIB) y no(n=0) entonces{Puesto que anteriormente pusimos un contador en idChair para ver si lo escribiamos por pantalla o no, ahora aprovechamos ese contador para decirle a la accion que si se escribio un idChair, deemos cerrar la busqueda imprimiento un FTRIB }writeInteger(FTRIB);fsibestMark=0.0;found:=false;fmientras

idChair : = readInteger(); {Leemos un nuevo idChair y comenzamos el tratamiento de nuevo hasta que este sea igual a FSEC }

fmientraswriteInteger(FSEC); {Por ultimo, imprimimos por pantalla la marca de fin de secuencia FSEC }

faccion