Вопрос задан 20.06.2023 в 17:59. Предмет Информатика. Спрашивает Веселов Женя.

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

}

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Для преобразования десятичной дроби в восьмеричную дробь нам потребуется осуществить несколько шагов:

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. Завершаем программу.

Обратите внимание, что данное решение работает только для положительных десятичных чисел. Если требуется преобразовывать отрицательные числа или числа с плавающей запятой, то код нужно изменить и применить другие алгоритмы.

0 0

Похожие вопросы

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

Последние заданные вопросы в категории Информатика

Задать вопрос