#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>

int maxval(int *array, int length) {
		int i, max;
		max = array[0];
		for (i = 1; i < length; i++) if (array[i] > max) max = array[i];
		return max;
}

int minval(int *array, int length) {
		int i, min;
		min = array[0];
		for (i = 1; i < length; i++) if (array[i] < min) min = array[i];
		return min;
}

double meanval(int *array, int length) {
		int i;
		double fin;
		fin = 0;
		for (i = 0; i < length; i++) fin += array[i];
		fin /= length;
		return fin;
}

double stddev(int *array, int length) {
		int i;
		double avg, fin;
		avg = meanval(array, length);
		fin = 0;
		for (i = 0; i < length; i++) 
				fin += (avg - array[i]) * (avg - array[i]);
		fin /= length;
		fin = sqrt(fin);
		return fin;
}

int compare(const void *a, const void *b) {
		return (*(int *)a - *(int *)b);
}

int main(int argc, char *argv[]) {
		int *array, i, elements;
		FILE *out = fopen("algcheck.txt", "w");

		srand(time(0));
		printf("Number of elements? ");
		scanf("%d", &elements);
		array = (int *)malloc(elements * sizeof(int));

		for (i = 0; i < elements; i++) array[i] = rand()%16;

		printf("The highest value is: %d\n", maxval(array, elements));
		printf("The lowest value is: %d\n", minval(array, elements));
		printf("The average value is: %f\n", meanval(array, elements));
		printf("The standard deviation is: %f\n", stddev(array, elements));

		qsort(array, elements, sizeof(int), compare);
		for (i = 0; i < elements; i++) fprintf(out, "%d\t", array[i]);
		printf("The array has been sorted and is available in\n");
		printf("        algcheck.txt for your perusal.\n");

		free(array);
		return 0;
}

