Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <algorithm>
- #include <cstddef>
- #include <iostream>
- #include <string>
- #include <vector>
- using namespace std;
- int main(void)
- {
- int closestToZero;
- int n; // the number of temperatures to analyse
- cin >> n; cin.ignore();
- std::vector<int> temperatures(n);
- for (std::size_t i = 0; i < n; i++) {
- int t; // a temperature expressed as an integer ranging from -273 to 5526
- cin >> t; cin.ignore();
- temperatures[i] = t;
- }
- try {
- closestToZero = temperatures.at(0); // store first value; if empty, we are meant to display “0”
- } catch (std::out_of_range) {
- cerr << "“First” temperature can’t be stored. Store 0." << endl;
- closestToZero = 0;
- }
- std::for_each(std::cbegin(temperatures), std::cend(temperatures), [&](int const elem) -> void {
- cerr << "{ elem: " << elem << ", closestToZero: " << closestToZero << " }";
- if (abs(elem) < abs(closestToZero)) {
- closestToZero = elem;
- } else if (-elem == closestToZero) {
- closestToZero = elem > closestToZero ? elem : closestToZero; // edge case, i.e. if -5 and 5, take positive value
- }
- cerr << " -> " << closestToZero << endl;
- });
- cout << closestToZero << endl;
- }
Advertisement