Предмет: Информатика,
автор: koko896
Преобразование десятичной дроби в восьмеричную дробь 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;
}
settom:
Почему rem = half % 10; если перевод 8-ричную систему?
#include
#include
#include
using namespace std;
int main()
{
float num;
double rem = 0;
int dec = 0;
int i = 0;
int k=0;
cin >> num;
float ohalf = num - (int)num;
int half = num;
while (half !=0)
{
rem = half % 8;
half /= 8;
dec += rem *= pow(10, i);
i++;
}
cout<i = -1;
while(ohalf != 0)
{
rem = ohalf *pow(10, i);
i--;
}
cout << rem;
return 0;
}
Ответы
Автор ответа:
1
Ответ:
Преобразование целой части тоже конечно можно переделать на манер дробной, но ...
Объяснение:
#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)";
}
Похожие вопросы
Предмет: Русский язык,
автор: Познющяя
Предмет: Немецкий язык,
автор: ПолинаЦиглер
Предмет: Русский язык,
автор: мамеш
Предмет: Математика,
автор: хххххх26
Предмет: Обществознание,
автор: KaTyA6789