Advertisement
mercMatvey4

Вкусная паста на обед)))

Dec 12th, 2018
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.25 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. void Exit()
  9. {
  10. cout << "\n\nКонец\n\n";
  11. exit(0);
  12. }
  13.  
  14. int powerup(int number, int degree)
  15. {
  16. int result = 1;
  17. for(int i = 1; i <= degree; i++)
  18. result *= number;
  19. return result;
  20. }
  21.  
  22. float powerdown(int number, int degree)
  23. {
  24. float result = 1;
  25. for(int i = 1; i <= degree; i++)
  26. result *= number;
  27. return 1/result;
  28. }
  29.  
  30. void DecToOct()
  31. {
  32. bool done;
  33. do
  34. {
  35. string num,integer_temp,fraction_temp;
  36. int value,integer;
  37. double fraction,result;
  38. system("cls");
  39. cout << "Введите число, дробная часть указывается через \" . \"\n\n";
  40. cin >> num;
  41. cout << "\nИсходное число : " << num;
  42. value = num.find('.');
  43. integer_temp = num.substr(0, value);
  44. if(num.find('.') == string::npos) fraction_temp = "0";
  45. else fraction_temp = num.substr(value+1, num.size()); fraction_temp.insert(0,"0");
  46. integer = stoi(integer_temp);
  47. fraction = stod(fraction_temp)/powerup(10,fraction_temp.size()-1);
  48. int int_res = 0,temp = 1; // temp - разряды
  49. while (integer)
  50. {
  51. int_res += integer % 8 * temp;
  52. integer /= 8;
  53. temp *= 10;
  54. }
  55. double frac_res = 0, temp1;
  56. for (int i = 0; i < 8; i++)
  57. {
  58. fraction *= 8;
  59. double temp1 = (int)fraction;
  60. frac_res += temp1 * powerdown(10,i+1);
  61. fraction -= temp1;
  62. }
  63. result = int_res + frac_res;
  64. cout << "\nРезультат перевода : " <<setprecision(8+value) << result;
  65. cout << "\n\n\nПродолжить (y/n)? ";
  66. char c;
  67. cin >> c;
  68. done = (c != 'y');
  69. }
  70. while (!done);
  71. system("cls");
  72. cout << "\n0 - для выхода\n\n1 - Перевод из десятичной системы счисления в восьмеричную\n\n2 - Перевод из восьмеричной системы счисления в десятичную\n\n";
  73. }
  74.  
  75. void OctToDec()
  76. {
  77. bool done;
  78. do
  79. {
  80. /* гыг хех тут из 8 в 10*/
  81. cout << "\n\n\nПродолжить (y/n)? ";
  82. char c;
  83. cin >> c;
  84. done = (c != 'y');
  85. }
  86. while (!done);
  87. system("cls");
  88. cout << "\n0 - для выхода\n\n1 - Перевод из десятичной системы счисления в восьмеричную\n\n2 - Перевод из восьмеричной системы счисления в десятичную\n\n";
  89. }
  90.  
  91. int main()
  92. {
  93. void(*pact[])()={Exit,DecToOct,OctToDec};
  94. setlocale(LC_ALL,"");
  95. int num;
  96. //void(*pact[])(int n)={f0,f1,f2};
  97. cout << "0 - для выхода\n\n1 - Перевод из десятичной системы счисления в восьмеричную\n\n2 - Перевод из восьмеричной системы счисления в десятичную\n\n";
  98. while (1)
  99. {
  100. cin >> num;
  101. pact[num]();
  102. }
  103. return 0;
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement