
Преобразование десятичной дроби в восьмеричную дробь 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; }

Ответы на вопрос

Ответ:
Преобразование целой части тоже конечно можно переделать на манер дробной, но ...
Объяснение:
#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)";
}



Для преобразования десятичной дроби в восьмеричную дробь нам потребуется осуществить несколько шагов:
1. Считываем число с помощью оператора cin и сохраняем его в переменную num.
2. Определяем целую часть числа с помощью операции приведения типа (int)num и сохраняем в переменную half. Также сохраняем десятичную часть числа в переменную ohalf, вычитая из числа его целую часть.
3. Инициализируем переменные rem, dec и i со значениями 0. Переменная rem будет использоваться для хранения остатка от деления, переменная dec - для построения восьмеричного числа, а переменная i - для определения позиции в восьмеричной системе счисления.
4. Выполняем цикл while, в котором выполняем деление целой части на 10 и сохраняем остаток в переменную rem. Затем увеличиваем переменную dec на значение остатка, умноженное на 8 в степени i. Увеличиваем переменную i на 1.
5. Выводим значение переменной dec, которое представляет собой восьмеричную часть числа.
6. Проводим аналогичные операции для десятичной части. Выполняем цикл while, в котором выполняем умножение десятичной части на 8 в степени i и сохраняем результат в переменную rem. Затем уменьшаем переменную i на 1.
7. Выводим значение переменной rem, которое представляет собой восьмеричную часть дробной части числа.
8. Завершаем программу.
Обратите внимание, что данное решение работает только для положительных десятичных чисел. Если требуется преобразовывать отрицательные числа или числа с плавающей запятой, то код нужно изменить и применить другие алгоритмы.


Похожие вопросы
Топ вопросов за вчера в категории Информатика







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili