Mini-teste 2-A, Duração: 45 min, Com Consulta
Nome:
1.
Considere o seguinte procedimento em Scheme:
(define p2 (lambda (lis) (cond ((null? lis) 0) ((pair? (car lis)) (+ (p2 (car lis)) (p2 (cdr lis)))) (else (+ (car lis) (p2 (cdr lis)))))))A.
2.
(define pesos (list 4 3 4 1 1 3 4)) ; a soma dos elementos desta lista deverá ser 20 (define teste (list (list 10 10 2 1 2 1 10) ; aluno 1 (list 10 8 8 4 5 3 7) ; aluno 2 (list 3 5 6 6 10 7 8) ; aluno 3 (list 7 9 8 4 5 3 7) ; aluno 4 (list 10 8 7 4 7 10 7) ; aluno 5 (list 10 7 0 3 7 8 10))) ; aluno 6Um procedimento, com a designação verifica-classificacoes, verifica se todos os alunos, na lista das classificações, tem o mesmo número de alíneas cotadas. Este procedimento
(define verifica-classificacoes ; só verifica se o número de classificações lançadas (lambda (n clas-teste) ; em cada aluno é igual a n. (let ((tudo-bem (verifica-cla-aux n clas-teste))) (if tudo-bem (display "classificacoes correctas") (display "classificacoes incorrectas"))))) (define verifica-cla-aux (lambda (n clas-teste) (cond ((null? clas-teste) #t) ((= (length (car clas-teste)) n) .......................................) (else #f))))A.
Segue-se agora o cálculo das classificações com o procedimento classificacoes, o qual devolve uma lista com as classificações de todos os alunos, numa escala de 0 a 20.
> (classificacoes pesos teste) (12.4 14.2 12.0 13.3 16.1 13.5) (define classificacoes (lambda (pesos-teste clas-teste) (if (null? clas-teste) '() (cons (calcula-cla pesos-teste (car clas-teste)) (classificacoes pesos-teste (cdr clas-teste)))))) (define calcula-cla (lambda ...B.