Diti icon

Temperatures

Diti | PRO | 02/12/19 11:14:00 AM UTC | 0 ⭐ | 311 👁️ | Never ⏰ | []
C++ |

1.29 KB

|

None

|

0 👍

/

0 👎

#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;
}

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎