8 / 8 / 9
Регистрация: 07.02.2014
Сообщений: 237
1

Перевод дробных двоичных в десятичные

14.02.2015, 09:18. Показов 6270. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток. У меня есть задание, сделать программу которая переводит двоичные числа в десятичные. Для целых чисел я написал, все работает. Хочу дополнить ее до дробных чисел, то есть с цифрами после запятой. я как понимаю надо целую и дробную часть перевести в int и далее возводить все в степень. Но как быть с дробной частью? Вообще не представляю как сделать. Даже если число 11,001 представить в виде двух int, то дробная часть ведь запишется как 1, а не как 001) помогите кто чем может
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.02.2015, 09:18
Ответы с готовыми решениями:

Перевести массив двоичных чисел в десятичные
Помогите пожалуйста на языке С++: Дан массив типа char, состоящий из N элементов (Nmax=1000)....

Разработать алгоритм перевода двоичных чисел в десятичные числа
разработать алгоритм перевода двоичных чисел в десятичные числа

Перевод римских чисел в десятичные
Напишите программу перевода римских чисел в десятичные. Алгоритм перевода представлен в следующей...

Перевод дробных чисел из 10 СС в любую другую
Помогите с переводом, сделал перевод целых чисел, но не могу сделать для дробных. #include...

5
7771 / 6543 / 2980
Регистрация: 14.04.2014
Сообщений: 28,559
14.02.2015, 09:22 2
Сдвигай запятую вправо до конца, чтобы получилось 11001, переводи как целое и после разделишь на 2^3.
1
8 / 8 / 9
Регистрация: 07.02.2014
Сообщений: 237
14.02.2015, 09:35  [ТС] 3
nmcf, а разве так можно?) сейчас попробую.

Добавлено через 1 минуту
nmcf, в том то и загвоздка что я не знаю как запятую перенести

Добавлено через 2 минуты
Вот программа. работает только без дробной части
как ту вписать перенос запятой?)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>     
#include <cmath>
using namespace std;                    
int main()                               
{
    setlocale(LC_ALL, "rus");
    int bin, n, buf;
    int rest = 0, x;
    do
    {
        cout << "Введите двоичное число: ";
        cin >> bin; 
        buf = bin;
        while (buf != 0)
        {
            n = buf % 10;
            buf = buf / 10;
            rest++;
            if (n > 1)
            {
                cout << "Число не является двоичным!!!" << endl;
                rest = 0;
                break;
            }
        }
    } while (buf != 0);
    buf = 0;
    for (int i = 0; i < rest; i++)
    {
        n = bin % 10;
        x = n*pow(2, i);
        buf = buf + x;
        bin = bin / 10;
    }
    cout << endl << "Десятичное число " << buf << endl;
    system("pause");
    return 0;
0
7771 / 6543 / 2980
Регистрация: 14.04.2014
Сообщений: 28,559
14.02.2015, 10:09 4
Лучший ответ Сообщение было отмечено Иван89 как решение

Решение

Т. е. ты фактически вводишь десятичное число из нулей и единиц и потом переводишь? Я-то предполагал строку. Вот мой вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <cstdlib>
#include <iostream>
#include <string>
#include <locale>
 
 
using std::locale;
using std::string;
using std::cin;
using std::cout;
 
int main()
{
    locale::global(locale(""));
 
    string ns; // дробное число в двоичной системе (с запятой)
    cout << "Введите двоичное число: ";
    cin >> ns;
 
    long n = 0;
    long i = 1, j = 1; // множитель разряда и делитель
    for (string::reverse_iterator it = ns.rbegin(); it != ns.rend(); ++it)
    {
        if (*it == ',')
        {
            j = i;
        }
        else
        {
            n += (*it - '0') * i;
            i *= 2;
        }
    }
 
    double res = double(n) / double(j);
 
    cout << "Десятичное число: " << res << std::endl;
 
 
    cout << std::endl;
    system("pause");
}
Миниатюры
Перевод дробных двоичных в десятичные  
1
8 / 8 / 9
Регистрация: 07.02.2014
Сообщений: 237
14.02.2015, 10:20  [ТС] 5
nmcf, с дробными числами тоже не работает

Добавлено через 5 минут
nmcf, с дробными числами тоже не работает
Цитата Сообщение от Иван89 Посмотреть сообщение
nmcf, с дробными числами тоже не работает
извиняюсь, точку ставил вместо запятой. огромное спасибо. буду учить стоки раз по другому не сделать
0
7771 / 6543 / 2980
Регистрация: 14.04.2014
Сообщений: 28,559
14.02.2015, 10:23 6
Мой вариант не работает? Я же тебе прикрепил картинку с результатами.

Добавлено через 2 минуты
Твой вариант можно, наверное, доработать, если целую и дробную части раздельно вводить, но тогда надо будет вынести перевод в функцию. В общем мой вариант проще и короче.
0
14.02.2015, 10:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.02.2015, 10:23
Помогаю со студенческими работами здесь

Перевод целых и дробных чисел из 16-ой системы счисления в 10-ую
Нужно написать программу перевода чисел из 16-ой системы счисления в 10-ую Требования: должны...

Перевод дробных чисел из 10-й системы счисления в 2-ю и обратно
Вот прога но есть проблема!Она не переводит отрицательные и дробные.Помогите кто может!...

Перевод дробных десятичных чисел в дробные двоичные и обратно
Требуется перевести дробное десятичное число в дробное двоичное число. и наоборот перевести...

Перевод дробных чисел из десятичной в двоичную систему счисления
для натуральных чисел все понятно, и предельно ясно. А как сделать для дробных чисел? Ведь перевод...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru