Toliak

v3

Sep 28th, 2018
262
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.34 KB | None | 0 0
  1. #include <iostream>
  2. #include <iomanip>
  3. #include <cmath>
  4.  
  5. #define ABS(x) ((x) < 0 ? -(x) : (x))
  6.  
  7. int main() {
  8.     // Input
  9.     double a, p, epsilon;
  10.     std::cout << "Enter root-value: ";
  11.     std::cin >> a;
  12.     std::cout << "Enter root-power: ";
  13.     std::cin >> p;
  14.     std::cout << "Enter epsilon: ";
  15.     std::cin >> epsilon;
  16.  
  17.     // Variables init
  18.     double prev = a;
  19.     bool exit = false;
  20.     unsigned long long iterations = 0;
  21.  
  22.     while (true) {
  23.         // Count
  24.         double v = 1 / p * ((p - 1)*prev + a / (pow(prev, p - 1)));
  25.         iterations++;
  26.  
  27.         // Count delta, output
  28.         double delta = ABS(v - prev);
  29.         prev = v;                    // Save current value
  30.         std::cout << "Iteration: " << std::setw(8) << iterations
  31.             << "; Value: " << std::setw(8) << v
  32.             << " ; Delta: " << std::setw(8) << delta
  33.             << std::endl;
  34.         if (delta <= epsilon)
  35.             break;
  36.     }
  37.  
  38.     // Output
  39.     double accurate = pow(a, 1 / p);
  40.     std::cout << "Accurate value: " << accurate << std::endl;
  41.     if (accurate > prev) {
  42.         std::cout << "Accurate bigger on: " << accurate - prev << std::endl;
  43.     }
  44.     else if (accurate < prev) {
  45.         std::cout << "Accurate smaller on: " << prev - accurate << std::endl;
  46.     }
  47.     else {
  48.         std::cout << "Accurate is equal to not accurate" << std::endl;
  49.     }
  50.  
  51.     std::cout << "Not accurate value: " << prev << std::endl;
  52.     std::cout << "Iterations: " << iterations << std::endl;
  53.  
  54.     return 0;
  55. }
Add Comment
Please, Sign In to add comment