From 12993b517ff2f8ec6608c2deaf3e988c64f7f164 Mon Sep 17 00:00:00 2001 From: Michael Abed Date: Sat, 3 Mar 2012 23:24:06 -0500 Subject: finished for now --- get_mode.cpp | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 get_mode.cpp (limited to 'get_mode.cpp') diff --git a/get_mode.cpp b/get_mode.cpp new file mode 100644 index 0000000..edf0958 --- /dev/null +++ b/get_mode.cpp @@ -0,0 +1,56 @@ + +#include "statistics.h" + +using namespace std; + +float get_mode(const char *filename) +{ + ifstream in; + in.open(filename); + + unsigned size = 1024; + int *data = new int[size]; + + int i = 0; + int max = 0; + + while (!in.eof()) { + in >> data[i]; + if (data[i] > max) + max = data[i]; + i++; + + if (i >= size) { // have to reallocate array if we get too big + size *= 2; + int *newdata = new int[size]; + for (int j = 0; j <= i; j++) + newdata[j] = data[j]; + delete data; + data = newdata; + } + } + i--; + int *freq = new int[i]; + + int j; + for (j = 0; j < i; j++) + freq[j] = 0; + + for (j = 0; j < i; j++) + freq[data[j]]++; + + float mode = 0; + max = 0; + for (j = 0; j < i; j++) { + if (freq[j] > max) { + max = freq[j]; + mode = (float)j; + } + } + + in.close(); + delete freq; + delete data; + + return mode; +} -- cgit v1.2.3