Diti

Temperatures

Feb 12th, 2019
335
0
Never
1
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.29 KB | None | 0 0
  1. #include <algorithm>
  2. #include <cstddef>
  3. #include <iostream>
  4. #include <string>
  5. #include <vector>
  6.  
  7. using namespace std;
  8.  
  9. int main(void)
  10. {
  11.     int closestToZero;
  12.     int n; // the number of temperatures to analyse
  13.    
  14.     cin >> n; cin.ignore();
  15.     std::vector<int> temperatures(n);
  16.    
  17.     for (std::size_t i = 0; i < n; i++) {
  18.         int t; // a temperature expressed as an integer ranging from -273 to 5526
  19.         cin >> t; cin.ignore();
  20.         temperatures[i] = t;
  21.     }
  22.    
  23.     try {
  24.         closestToZero = temperatures.at(0); // store first value; if empty, we are meant to display “0”
  25.     } catch (std::out_of_range) {
  26.         cerr << "“First” temperature can’t be stored. Store 0." << endl;
  27.         closestToZero = 0;
  28.     }
  29.  
  30.     std::for_each(std::cbegin(temperatures), std::cend(temperatures), [&](int const elem) -> void {
  31.         cerr << "{ elem: " << elem << ", closestToZero: " << closestToZero << " }";
  32.         if (abs(elem) < abs(closestToZero)) {
  33.             closestToZero = elem;
  34.         } else if (-elem == closestToZero) {
  35.             closestToZero = elem > closestToZero ? elem : closestToZero; // edge case, i.e. if -5 and 5, take positive value
  36.         }
  37.         cerr << " -> " << closestToZero << endl;
  38.     });
  39.  
  40.     cout << closestToZero << endl;
  41. }
Advertisement
Comments
  • User was banned
Add Comment
Please, Sign In to add comment