Zadanie: Zaimplementuj funkcje int Round(double value) która zaokrągla liczby do najbliższej całości np. Z liczby π ≈ 3.141592.. zwróci liczbe 3. Dla liczby 99.999999 .. zwróci liczbę 100. Dla liczby 7.49 zwróci liczbę 7. Ale dla liczby 7.51 zwróci liczbę 8. Dla liczb ujemnych np. -149.99 zwróci liczbę -150.
Funkcja ta działa w podobny sposób jak wersja w języku Python. Jeśli liczba jest ujemna, odejmujemy od niej 0.5 przed zaokrągleniem, a w przeciwnym przypadku dodajemy 0.5. Następnie stosujemy funkcję int() w celu rzutowania wyniku na typ całkowity.
#include <iostream>
#include <cmath>
int Round(double value) {
return (int)std::round(value);
}
int main() {
std::cout << Round(3.141592) << std::endl; // wynik: 3
std::cout << Round(99.999999) << std::endl; // wynik: 100
std::cout << Round(7.49) << std::endl; // wynik: 7
std::cout << Round(7.51) << std::endl; // wynik: 8
std::cout << Round(-149.99) << std::endl; // wynik: -150
return 0;
}
Odpowiedź:
int Round(double value) {
if (value < 0) {
return int(value - 0.5);
}
else {
return int(value + 0.5);
}
}
Funkcja ta działa w podobny sposób jak wersja w języku Python. Jeśli liczba jest ujemna, odejmujemy od niej 0.5 przed zaokrągleniem, a w przeciwnym przypadku dodajemy 0.5. Następnie stosujemy funkcję int() w celu rzutowania wyniku na typ całkowity.