fork(1) download
  1. #include <iostream>
  2. #include <iomanip>
  3. #include <math.h>
  4. using namespace std;
  5.  
  6. const int maxAccuracy = 15;
  7.  
  8. int main() {
  9. double circumference, circleArea;
  10. int givenAccuracy, possibleAccuracy;// заданная пользователем и максимально возможная в данном случае точность соответственно
  11. cin >> circumference >> givenAccuracy;
  12. if (circumference == 0)
  13. cout << "Невозможно выполнить для вырожденной окружности";// выведение уведомления, если задана вырожденная окружность
  14. else if (circumference < 0 || givenAccuracy < 0){
  15. cout << "Ошибка ввода данных";// проверка введенных данных
  16. } else {
  17. circleArea = circumference * (circumference / (4 * M_PI));
  18. possibleAccuracy = maxAccuracy - ceil(log10(circleArea));
  19. if (possibleAccuracy < 0)
  20. cout << "Число содержит больше 15 значащих цифр. Точный вывод невозможен";// предупреждение если число превышает 10^15
  21. else if (possibleAccuracy < givenAccuracy)
  22. cout << "Вывод с заданной точностью невозможен. Максимально возможная точность " << possibleAccuracy;
  23. else
  24. cout << fixed << setprecision(givenAccuracy) << circleArea;
  25. }
  26. return 0;
  27. }
Success #stdin #stdout 0s 3460KB
stdin
12345678 1
stdout
12128861224697.9