Aula nº 1

Escreva o código das funções seguintes:

OC 98-99 (Exercícios Práticos)


-module(aula1_solucao).
-export([count/1, occur/2, delete/2, append/2, member/2, reverse/1, average/1]).

% COUNT/1  -----------------------------
%
% conta o numero de elementos da lista
%

count([]) -> 0;
count([H|L]) -> count(L) + 1.

% MEMBER/2  ----------------------------
%
% verifica se o elemento pertence 'a lista
%

member(X, [X|_]) -> true;
member(X, [_|L]) -> member(X, L);
member(_, []) -> false.


% OCCURS/2  -----------------------------
%
% conta o numero de ocorrencias
% do elemento na lista
%

occur(_, []) -> 0;
occur(X, [X|L]) -> occur(X, L) + 1;
occur(X, [_|L]) -> occur(X, L).


% DELETE/2  ----------------------------
%
% apaga as diversas ocorrencias
% do elemento na lista
%

delete(_, []) -> [];
delete(X, [X|L]) -> delete(X, L);
delete(X, [A|L]) -> [A|delete(X, L)].


% APPEND/2  ----------------------------
%
% junta duas listas numa unica
%

append([H|L1], L2) -> [H|append(L1, L2)];
append([], L2) -> L2.


% REVERSE/1  ---------------------------
%
% inverte a ordem dos elementos na lista
%

reverse(L) -> reverse(L, []).

reverse([H|L], Reversed) -> reverse(L, [H|Reversed]);
reverse([], Reversed) -> Reversed.


% AVERAGE/1 ---------------------------
%
% calcula a media dos elementos da lista
%

average(L) -> average(L, 0, 0).

average([], N, S) -> S/N;
average([H|L], N, S) -> average(L, N+1, S+H).

Índice


Última actualização: 15 de Março de 1999

OC 98-99 (Exercícios Práticos)