From 38d0003f06a683a0844a7768ad1f59f3a2d1eea9 Mon Sep 17 00:00:00 2001 From: Tomasz Golinski Date: Mon, 10 May 2021 22:17:03 +0200 Subject: [PATCH] Avoid some nan with new caches --- geostat.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/geostat.cpp b/geostat.cpp index b042839..4e800d6 100644 --- a/geostat.cpp +++ b/geostat.cpp @@ -867,7 +867,7 @@ int main(int argc, char** argv) { std::cout << "Number of caches created: " << cc.size() << "
\n"; std::cout << "Number of caches that are disabled: " << std::count_if(cc.begin(), cc.end(), [&](const auto& a) { return a.status == disabled; }) << "
\n"; std::cout << "Number of caches that are archived: " << std::count_if(cc.begin(), cc.end(), [&](const auto& a) { return a.status == archived; }) << "
\n"; - std::cout << "Average finds per cache per day: " << std::setprecision(3) << std::accumulate(cc.begin(), cc.end(), 0., [&](const float& a, const Cache& b) { return std::move(a) + 1.0 * b.founds / b.age_now; }) / cc.size() << "
\n"; + std::cout << "Average finds per cache per day: " << std::setprecision(3) << std::accumulate(cc.begin(), cc.end(), 0., [&](const float& a, const Cache& b) { return std::move(a) + 1.0 * b.founds / std::max(b.age_now, 1); }) / cc.size() << "
\n"; std::cout << std::resetiosflags(std::cout.flags()); std::cout << "\n"; @@ -947,7 +947,10 @@ int main(int argc, char** argv) { std::cout << "" << i->type << ""; std::cout << "" << i->fav << ""; std::cout << "" << i->founds << ""; - std::cout << "" << std::setprecision(3) << 100.0 * i->fav / i->founds << "%"; + if (i->founds > 0) + std::cout << "" << std::setprecision(3) << 100.0 * i->fav / i->founds << "%"; + else + std::cout << "–"; std::cout << "\n"; n++; if (n > LIST_MAX) break; @@ -975,7 +978,10 @@ int main(int argc, char** argv) { std::cout << "" << i->type << ""; std::cout << "" << i->fav << ""; std::cout << "" << i->founds << ""; - std::cout << "" << std::setprecision(3) << 100.0 * i->fav / i->founds << "%"; + if (i->founds > 0) + std::cout << "" << std::setprecision(3) << 100.0 * i->fav / i->founds << "%"; + else + std::cout << "–"; std::cout << "\n"; n++; if (n > LIST_MAX) break; @@ -1083,7 +1089,7 @@ int main(int argc, char** argv) { std::cout << "\n"; std::cout << "
\n"; - std::cout << "Total " << n << " combinations found out of 81 (" << std::setprecision(3) << n / 0.81 << "%).
\n"; + std::cout << "Total " << n << " combinations created out of 81 (" << std::setprecision(3) << n / 0.81 << "%).
\n"; std::cout << "Average difficulty: " << average(cc, &Cache::diff) << "
\n"; std::cout << "Average terrain: " << average(cc, &Cache::terr) << "
\n"; std::cout << "
\n";