From b302ad0465573fd77fa50d5ed261289c29080b90 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 17 Feb 2021 13:53:18 -0600 Subject: Added Assignment 3 worksheet and code --- dev/a3-earthquake/earthquake_database.cc | 77 ++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 dev/a3-earthquake/earthquake_database.cc (limited to 'dev/a3-earthquake/earthquake_database.cc') diff --git a/dev/a3-earthquake/earthquake_database.cc b/dev/a3-earthquake/earthquake_database.cc new file mode 100644 index 0000000..2c9a822 --- /dev/null +++ b/dev/a3-earthquake/earthquake_database.cc @@ -0,0 +1,77 @@ +/** CSci-4611 Assignment 3: Earthquake + */ + +#include +#include + +#include "earthquake_database.h" + + +EarthquakeDatabase::EarthquakeDatabase(std::string filename) { + + std::ifstream in(filename.c_str()); + std::string line; + while (getline(in, line)) { + if (line.size() > 30) { + Earthquake e(line); + if (earthquakes.size() == 0) { + min_mag_ = (float)e.magnitude(); + max_mag_ = (float)e.magnitude(); + } + if (e.magnitude() > max_mag_) { + max_mag_ = (float)e.magnitude(); + } + if (e.magnitude() < min_mag_) { + min_mag_ = (float)e.magnitude(); + } + earthquakes.push_back(e); + } + } +} + +Earthquake EarthquakeDatabase::earthquake(int index) { + return earthquakes[index]; +} + +int EarthquakeDatabase::min_index() { + return 250; +} + +int EarthquakeDatabase::max_index() { + return (int)earthquakes.size() - 1; +} + +int EarthquakeDatabase::FindMostRecentQuake(Date d) { + double targetSeconds = d.ToSeconds(); + int start = min_index(); + int end = max_index(); + while (start < end-1) { + int half = (start + end) / 2; + if (earthquakes[half].date().ToSeconds() > targetSeconds) { + end = half - 1; + } + else { + start = half; + } + } + if (start == end) { + return start; + } + else { + if (earthquakes[end].date().ToSeconds() > targetSeconds) { + return start; + } + else { + return end; + } + } +} + +float EarthquakeDatabase::min_magnitude() { + return min_mag_; +} + +float EarthquakeDatabase::max_magnitude() { + return max_mag_; +} + -- cgit v1.2.3