c - average function returning nan -
i made program order data sets , display max, min, average, , median. had in main, decided clean bit making functions. average function working fund after adding few more value returned average in 'nan. suggestions? in advance guys
#include <stdio.h> int findsize(); double findaverage(int size, double num[]); double findmedian(int size, double num[]); void findlowtohigh(int size, double num[]); void findhightolow(int size, double num[]); int main() { while(1) { int size = findsize(); if(size <= 1) { return 0; } double num[size]; double holder; double lowest; double highest; double average; double median; fprintf(stdout, "\n"); for(int = 0; <= size - 1; i++) { int j = i+1; fprintf(stdout, "please enter number %d: ", j); fscanf(stdin, "%lf", &num[i]); } if(size > 1) { for(int y = 0; y < size - 1; y++) { for(int k = 0; k < size - 1; k++) { if(num[k] > num[k+1]) { holder = num[k]; num[k] = num[k+1]; num[k+1] = holder; } } } } findlowtohigh(size, num); findhightolow(size, num); average = findaverage(size, num); median = findmedian(size, num); fprintf(stdout, "\n\nlowest value: %3.4f", num[0]); fprintf(stdout, "\nhighest value: %3.4f", num[size-1]); fprintf(stdout, "\n\naverage value: %3.4f\n", average); fprintf(stdout, "median value: %3.4f", median); fprintf(stdout, "\n"); } } int findsize() { int size; fprintf(stdout, "\nplease enter size of array: "); scanf("%d", &size); return size; } void findlowtohigh(int size, double num[]) { fprintf(stdout, "\nfrom least greatest: "); for(int x = 0; x <= size - 1; x++) { fprintf(stdout, "%3.2f ", num[x]); } } void findhightolow(int size, double num[]) { fprintf(stdout, "\nfrom greatest least: "); int reverse = size - 1; while(reverse != -1) { fprintf(stdout, "%3.2f ", num[reverse]); reverse--; } } double findaverage(int size, double num[]) { double average; for(int = 0; <= size - 1; a++) { average = average + num[a]; } average = average / size; return average; } double findmedian(int size, double num[]) { double median; if(size % 2 == 0) { median = (num[size/2 - 1] + num[size/2])/2; } else { median = num[size/2]; } return median; }
you have initialize average
. change to
double average=0;
Comments
Post a Comment