Last active
November 17, 2017 04:45
-
-
Save gabrielfern/532d393e1043d4a37615b3530a59f80d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include "stdlib.h" | |
// declaracoes das funcoes para por no ".h" | |
double mediana(int, double *); | |
double *moda(int, double *); | |
// ate aqui | |
// definicoes das funcoes | |
// lista_tamanho: quantos elementos o conjunto possui (length) | |
double mediana(int lista_tamanho, double *lista) | |
{ | |
for (int i = 0; i < lista_tamanho - 1; i++) { | |
int minElemIndex = i; | |
for (int j = i; j < lista_tamanho; j++) { | |
if (lista[minElemIndex] > lista[j]) { | |
minElemIndex = j; | |
} | |
} | |
double aux = lista[i]; | |
lista[i] = lista[minElemIndex]; | |
lista[minElemIndex] = aux; | |
} | |
if (lista_tamanho % 2 == 0) { | |
return (lista[lista_tamanho/2 - 1] + lista[lista_tamanho/2]) / 2; | |
} | |
return lista[lista_tamanho/2]; | |
} | |
// lista_tamanho: quantos elementos o conjunto possui (length) | |
// retorna: array de doubles, onde o primeiro elemento diz quantos | |
// elementos sao moda nesse conjunto, a partir do segundo elemento sao as | |
// modas | |
double *moda(int lista_tamanho, double *lista) | |
{ | |
double fila[lista_tamanho]; | |
int fila_tamanho = 0; | |
int contagem[lista_tamanho]; | |
for (int i = 0; i < lista_tamanho; i++) { | |
contagem[i] = 0; | |
} | |
for (int i = 0; i < lista_tamanho; i++) { | |
int repetido = 0; | |
for (int j = 0; j < fila_tamanho; j++) { | |
if (lista[i] == fila[j]) { | |
contagem[j]++; | |
repetido++; | |
} | |
} | |
if (!repetido) { | |
contagem[fila_tamanho]++; | |
fila[fila_tamanho++] = lista[i]; | |
} | |
} | |
int max = 0; | |
for (int i = 0; i < fila_tamanho; i++) { | |
if (contagem[max] < contagem[i]) { | |
max = i; | |
} | |
} | |
int max_count = 0; | |
for (int i = 0; i < fila_tamanho; i++) { | |
if (contagem[max] == contagem[i]) { | |
max_count++; | |
} | |
} | |
double *moda; | |
if (lista_tamanho == fila_tamanho) { | |
moda = (double *) malloc(sizeof (double)); | |
moda[0] = 0; | |
} else { | |
moda = (double *) malloc((max_count + 1) * sizeof (double)); | |
moda[0] = max_count; | |
int moda_index = 1; | |
for (int i = 0; i < fila_tamanho; i++) { | |
if (contagem[max] == contagem[i]) { | |
moda[moda_index++] = fila[i]; | |
} | |
} | |
} | |
return moda; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment