#include "high_scores.h"
int32_t latest(const int32_t *scores, size_t scores_len){
return *(scores + scores_len - 1);
}
int32_t personal_best(const int32_t *scores, size_t scores_len){
int32_t big = -1, cur = 0;
for(size_t i = 0; i < scores_len; i++){
cur = *(scores + i);
if(cur > big) big = cur;
}
return big;
}
void insertSwap(int32_t** out, size_t* len, int32_t element){
size_t i;
for(i = 0; i < (*len); i++){
if(element >= (*out)[i]) break;
}
if(element < (*out)[i - 1] && (*len) < 3){ /* SMALLEST */
(*len)++; (*out) = (int32_t*) realloc((*out), (*len) * sizeof(int32_t));
(*out)[i + 1] = element;
return;
}
if((*len) < 3){
(*len)++; (*out) = (int32_t*) realloc((*out), (*len) * sizeof(int32_t));
}
for(size_t j = (*len) - 1; j > i; j--){
(*out)[j] = (*out)[j - 1];
}
(*out)[i] = element;
}
size_t personal_top_three(const int32_t *scores, size_t scores_len, int32_t *output){
output = (int32_t*) malloc(sizeof(int32_t));
output[0] = (*scores); size_t outlen = 1; int32_t cur;
for(size_t i = 1; i < scores_len; i++){
cur = *(scores + i);
insertSwap(&output, &outlen, cur);
}
return outlen;
}
I am struggling to get if my method is way too convoluted or if my memory management is wrong.