#ifndef ISLA_EDA_ARRAY_OF_DOUBLES_HH_INCLUDED
#define ISLA_EDA_ARRAY_OF_DOUBLES_HH_INCLUDED
array_of_doubles.h – Utilitários para arrays de doubleEste é o ficheiro de cabeçalho ou de interface correspondente ao ficheiro de
implementação array_of_double.c. Ambos
correspondem ao módulo físico array_of_double, cujo objectivo é fornecer um
conjunto de ferramentas para lidar com arrays de double.
Note que optámos por não incluir comentários de documentação Doxygen em nenhum dos módulos deste programa.
A usual protecção contra os efeitos nefastos da inclusão múltipla.
#ifndef ISLA_EDA_ARRAY_OF_DOUBLES_HH_INCLUDED
#define ISLA_EDA_ARRAY_OF_DOUBLES_HH_INCLUDED
Incluímos o ficheiro de interface stdbool.h para podermos usar o tipo
bool e os seus dois valores true e false.
#include <stdbool.h>
Para podemos calcular a partir de arrays de double, de uma só vez, todas
as estatísticas em que estamos interessados, é conveniente usar uma estrutura
para as representar.
struct double_statistics {
A média e o desvio padrão.
double average;
double stddev;
A mediana, o valor mínimo e o valor máximo.
double median;
double minimum;
double maximum;
};
Rotina que cria um novo array com length items double, todos por
inicializar. Devolve um ponteiro para o novo array. Devolve NULL em caso
de erro.
double *new_double_array_of(long length);
Rotina que redimensiona um array de double items recebido como
argumento de modo a passar a conter new_length itens. Devolve um ponteiro
para o array redimensionado. O ponteiro devolvido pode ser igual ao
ponteiro recebido como argumento, mas o é necessariamente. Se o array
crescer, os novos itens estarão por inicializar. Devolve NULL em caso de
erro. O valor de new_length não pode ser negativo. O valor de items pode
ser NULL. Nesse caso admite-se que o array a dimensionar tem zero itens.
double *resize_double_array_to(double *items, long new_length);
Rotina que lê todos os double que conseguir a partir do ficheiro cujo nome
é passado como argumento e os guarda num array. Devolve o array com os
valores lidos do ficheiro. Devolve NULL em caso de erro. Em caso de
sucesso, altera o inteiro apontado por length para o número de double
lidos. Os valores de file_name e de length não podem ser NULL.
double *read_double_array_from(const char *file_name, long *length);
Procedimento que copia todos os length itens do array de double
original para o array de double copy. Ambos os arrays têm de conter
pelo menos length items. O valor de length tem de ser não negativo. Os
valores de original e de copy podem ser nulos, mas apenas se length
tiver o valor zero.
void copy_double_array(long length, double copy[length],
const double original[length]);
Predicado que devolve true se os primeiros length itens dos arrays de
double first e second forem iguais. Devolve false no caso contrário.
O valor de length não pode ser negativo. Os valores de first e second
podem ser NULL, mas apenas se o valor de length for zero.
bool double_arrays_equal(long length, const double first[length],
const double second[length]);
Função que devolve o valor médio dos primeiros length itens do array de
double items. O valor de length não pode ser negativo. Devolve o valor
especial NaN se length for zero. O valor de items pode ser NULL, mas
apenas se length for zero.
double double_array_average(long length, const double items[length]);
Função que devolve o desvio padrão dos primeiros length itens do array de
double items. O valor de length não pode ser negativo. Devolve o valor
especial NaN se length for zero. O valor de items pode ser NULL, mas
apenas se length for zero.
double double_array_stddev(long length, const double items[length]);
Função que devolve o valor mediano dos primeiros length itens do array de
double items. O valor de length não pode ser negativo. Devolve o valor
especial NaN se length for zero. O valor de items pode ser NULL, mas
apenas se length for zero.
double double_array_median(long length, const double items[length]);
Função que devolve o valor mínimo dos primeiros length itens do array de
double items. O valor de length não pode ser negativo. Devolve o valor
∞ se length for zero. O valor de items pode ser NULL, mas
apenas se length for zero.
double double_array_minimum(long length, const double items[length]);
Função que devolve o valor máximo dos primeiros length itens do array de
double items. O valor de length não pode ser negativo. Devolve o valor
-∞ se length for zero. O valor de items pode ser NULL, mas
apenas se length for zero.
double double_array_maximum(long length, const double items[length]);
Função que devolve uma instância da estrutura struct double_statistics
contendo várias estatísticas dos primeiros length itens do array de
double items. O valor de length não pode ser negativo. Se length for
zero, a média, o desvio padrão e a mediana têm o valor especial NaN, o mínimo
tem o valor ∞ e o máximo tem o valor -∞. O valor de items pode ser
NULL, mas apenas se length for zero.
struct double_statistics double_array_statistics(long length,
const double items[length]);
Fecho da protecção contra os efeitos perversos da inclusão múltipla.
#endif // ISLA_EDA_ARRAY_OF_DOUBLES_HH_INCLUDED