Преобразование десятичной дроби в восьмеричную дробь C++
Целое число могу перевести в восьмеричную а вот с дробью проблемы
#include
#include
#include
#include
using namespace std;
int main()
{
float num;
double rem = 0;
int dec = 0;
int i = 0;
int k=0;
cout << "Please enter a number with a decimal point: ";
cin >> num;
float ohalf = num - (int)num;
int half = num;
while (half !=0)
{
rem = half % 10;
half /= 10;
dec += rem *= pow(8, i);
i++;
}
cout< i = -1;
while (ohalf != 0)
{
rem = ohalf *pow(8, i);
i--;
}
cout << rem;
return 0;
}
Answers & Comments
Ответ:
Преобразование целой части тоже конечно можно переделать на манер дробной, но ...
Объяснение:
#include <iostream>
#include <math.h>
using namespace std;
using namespace std;
int main()
{
float num;
double rem = 0;
int dec = 0;
double dec2 = 0;
double x, y;
int i = 0;
int k = 0;
const int precision = 9; // Количество знаков после запятой
cout.precision(precision);
cin >> num;
double ohalf = num - (int)num;
int half = num;
while (half != 0)
{
rem = half % 8;
half /= 8;
dec += rem * pow(10, i);
i++;
}
for (i = 0; i < precision; i++)
{
ohalf = std::modf(ohalf * 8.0, &x); // целая часть запишется в x, дробная - в y
dec2 += x * pow(0.1, i+1);
}
dec2 += dec;
cout << num << "(10) = " << dec2 << "(8)";
}