Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; Se requiere una aplicación para administrar la historia academica de
- ; estudiantes de la universidad. El historial viene desde archivo y tiene
- ; la siguiente información
- ;
- ; Código - Curso - Nota - Número creditos
- ;
- ; 1956001 750080M 3.5 4
- ; 2045612 750081M 2.0 2
- ;
- ; Se desea realizar funciones
- ; 1) Que retorne los cursos por estudiante
- ; 2) Que calcule el promedio ponderado de un estudiante
- ; 3) Que ordene los estudiantes de acuerdo a su promedio ponderado.
- ;;Crear un archivos datos.txt
- ;1956001 750080M 3.5 4
- ;2045612 750081M 2.0 2
- ;1956001 111050M 4.2 4
- ;1920000 750080M 4.5 4
- ;2045612 111050M 3.4 4
- ;;Vale la pena usar una estructura para los estudiantes
- (define-struct estudiante (codigo curso nota creditos))
- ;;Cargar mis datos
- (define datos (read-words/line "datos.txt"))
- ;;Función para transformar la lista de listas en listas de estudiantes
- ;;transformar-datos: lista de listas de string -> lista de estudiantes
- (define (transformar-datos lsst)
- (cond
- [(empty? lsst) '()]
- [else
- (cons
- ;;Elemento
- (make-estudiante
- (first (first lsst))
- (first (rest (first lsst)))
- (string->number (first (rest (rest (first lsst)))))
- (string->number (first (rest (rest (rest (first lsst)))))))
- (transformar-datos (rest lsst))
- )]))
- ;;lista de estructuras estudiante
- (define lista-estudiantes (transformar-datos datos))
- ;;Punto 1
- ;;Vamos hacer un filtro y vamos a retornar los que tenga el mismo código
- ;;Autor: Carlos A Delgado
- ;;Fecha: 18 de Septiembre de 2020
- ;;Contrato: cursos-estudiante: lista de estudiantes, (string->booleano) -> lista de estudiantes
- ;;Propósito: Filtrar de un grupo de estudiante-cursos los cursos de un estudiante
- ;;Ejemplos
- (define (filtro-estudiantes lst f)
- (cond
- [(null? lst) '()]
- [else
- (local
- (
- (define primero (first lst))
- (define resto (filtro-estudiantes (rest lst) f))
- )
- (cond
- [(f primero) (cons primero resto)]
- [else resto])
- )]))
- ;;Filtrar
- (filtro-estudiantes lista-estudiantes (lambda (x) (equal? (estudiante-codigo x) "1956001")))
- (define (lista-estudiantes-por-codigo codigo-estudiante)
- (filtro-estudiantes lista-estudiantes (lambda (x) (equal? (estudiante-codigo x) codigo-estudiante)))
- )
- (define (lista-estudiantes-por-asignatura codigo-asignatura)
- (filtro-estudiantes lista-estudiantes (lambda (x) (equal? (estudiante-curso x) codigo-asignatura)))
- )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement