Advertisement
mercMatvey4

Untitled

Dec 12th, 2018
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.43 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <windows.h>
  4. #include <cmath>
  5. #include <iomanip>
  6. using namespace std;
  7.  
  8. int powerup(int number, int degree)
  9. {
  10. int result = 1;
  11. for(int i = 1; i <= degree; i++)
  12. result *= number;
  13. return result;
  14. }
  15.  
  16. float powerdown(int number, int degree)
  17. {
  18. float result = 1;
  19. for(int i = 1; i <= degree; i++)
  20. result *= number;
  21. return 1/result;
  22. }
  23.  
  24. int main()
  25. {
  26. setlocale(LC_ALL,"");
  27. string num,integer_temp,fraction_temp;
  28. int value,integer;
  29. double fraction,result;
  30. system("cls");
  31. cout << "Введите число, дробная часть указывается через \" . \"\n\n";
  32. cin >> num;
  33. value = num.find('.');
  34. integer_temp = num.substr(0, value);
  35. fraction_temp = num.substr(value+1, num.size());
  36. fraction_temp.insert(0,"0");
  37. integer = stoi(integer_temp);
  38. fraction = stod(fraction_temp)/powerup(10,fraction_temp.size()-1);
  39. int int_res = 0,temp = 1; // temp - разряды
  40. while (integer)
  41. {
  42. int_res += integer % 8 * temp;
  43. integer /= 8;
  44. temp *= 10;
  45. }
  46. double frac_res = 0, temp1;
  47. for (int i = 0; i < 8; i++)
  48. {
  49. fraction *= 8;
  50. double temp1 = (int)fraction;
  51. frac_res += temp1 * powerdown(10,i+1);
  52. fraction -= temp1;
  53. }
  54. result = int_res + frac_res;
  55. cout << setprecision(8+value) << result;
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement