int16_t arrayMedian50Int(const int16_t *array, const uint8_t length) { int16_t tmpArray[length]; memcpy(tmpArray, array, length * sizeof(int16_t)); sortInteger(tmpArray, length); float m = 0.0, count = 0.0; for(uint8_t i = (length / 4); i < length - (length / 4); i++) // take the average of the middle two quarters { count++; m += (float)tmpArray[i]; } m /= count; return (int16_t)m; }
int main(int argc, char ** argv) { if (argc < 4) { printf("need four file names: type, input, output"); return EXIT_FAILURE; } if (strcmp(argv[1], "i") == 0) /* sort integers */ { int numInteger = 0; int * arrInteger = NULL; arrInteger = readInteger(argv[2], & numInteger); if (numInteger == 0) { return EXIT_FAILURE; } printInteger(arrInteger, numInteger); sortInteger(arrInteger, numInteger); printInteger(arrInteger, numInteger); saveInteger(argv[3], arrInteger, numInteger); freeInteger(arrInteger, numInteger); return EXIT_SUCCESS; } if (strcmp(argv[1], "s") == 0) /* sort strings */ { int numString = 0; char * * arrString = NULL; arrString = readString(argv[2], & numString); if (numString == 0) { return EXIT_FAILURE; } printString(arrString, numString); sortString(arrString, numString); printString(arrString, numString); saveString(argv[3], arrString, numString); freeString(arrString, numString); return EXIT_SUCCESS; } /* unknown type */ return EXIT_FAILURE; }