0 / 0 / 0
Регистрация: 20.01.2018
Сообщений: 1
1

Перевод чисел из двоичной системы в десятичную

20.01.2018, 13:30. Показов 3892. Ответов 2
Метки нет (Все метки)

У меня получается перевести число из двоичный системы в десятичную, если оно одно:
C++
1
2
3
4
5
6
7
8
int num = 0;
char text[] = "00100000";
 
// algorithm; переворачивает массив, получает 00000100
reverse(&text[0], &text[8]);
for (int i = 7; i >= 0; i--)
     if (text[i] == 49)
          num += pow(2, i);
А как перевести несколько чисел? Пытался этот код, но он неправильно работал. Помогите, пожалуйста, в чем моя ошибка?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int num1, num2 = 1;
int arr[] = {0, 0, 0};
char text[] = "00100000 01010001 ";
for (int i = 0; i <= 18; i++)
     if (text[i] = 32) {
          num1 = 0;
          reverse(&text[i - 8], &text[i - 1]);
          for (int k = i - 1; k >= i - 8; k--) {
               if (text[k] == 49)
                    arr[num1] += pow(2, i - 8 * num2); // как я понял, ошибка здесь, скорее всего, в double_Y
               ++num1;
          }
          ++num2;
     }
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.01.2018, 13:30
Ответы с готовыми решениями:

Перевод вещественных чисел из двоичной системы счисления в десятичную
Перевод вещественных чисел из двоичной системы счисления в десятичную По такой схеме

Перевод из двоичной системы в десятичную
Перевод из двоичной системы в десятичную, помогти прошу надо на турбо с++

Перевод из двоичной системы счисления в десятичную
Помогите пожалуйста перевести число из 2-ой сс в 10 сс. Буду очень благодарен:)

Перевод из двоичной системы счисления в десятичную
Программа не работает для отрицательных чисел. Помогите найти ошибку. #include &quot;stdafx.h&quot;...

2
6 / 6 / 7
Регистрация: 24.09.2016
Сообщений: 63
20.01.2018, 16:15 2
Андрей Фамилия, Вам нужны конкретные числа или можно рандомные?

Добавлено через 11 минут
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
#include <iostream> 
#include <cmath>
#include <ctime>
using namespace std;
void main()
{
    setlocale(LC_ALL, "rus");
    srand(time(NULL));
    int N = 0;
    cout << "Введите количество цифр в двоичной системе: "; cin >> N;
    const int dv = 100;
    int arr[dv] = { 0 };
    int sum = 0;
    cout << "Число в двоичной системе: ";
    for (int i = 0; i < N; i++)
    {
        arr[i] = rand() % 2;
        cout << arr[i];
    }
    cout << endl;
    int N1 = N - 1;
    for (int i = 0; i < N; i++)
    {
        arr[i] = arr[i] * pow(2, N1);
        sum += arr[i];
        N1--;
    }
    cout << "Число в десятичной системе: " << sum << endl;
}
0
1500 / 964 / 811
Регистрация: 30.04.2016
Сообщений: 3,334
21.01.2018, 19:33 3
Андрей Фамилия, здравствуйте! Как вариант (работает, также, для отрицательных):

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
#include <bits/stdc++.h>
 
using namespace std;
 
int fromBinToDec(char s[])
{
    long long result, m;
    bool flag = false;
    if (s[0] == '-')
    {
        memmove(s, s + 1, strlen(s) + 1);
        flag = true;
    }
    result = 0;
    m = strlen(s);
    for (int i = 0; i < m; i++)
    {
        result += (s[i] - '0') * pow(2, m - i - 1);
    }
    if (flag)
        result *= -1;
    return result;
}
 
int main()
{
    int n;
    char s[255];
    cout << "Enter a number of binary digits:\n";
    cout << "n = ";
    cin >> n;
    for (int i = 0; i < n; i++)
    {
        cout << i + 1 << ": ";
        cin >> s;
        cout << "-> " << fromBinToDec(s) << "\n";
    }
    system("pause");
    return 0;
}
Добавлено через 7 минут
Андрей Фамилия, вот с использованием массива:

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
#include <bits/stdc++.h>
 
using namespace std;
 
int fromBinToDec(char s[])
{
    long long result, m;
    bool flag = false;
    if (s[0] == '-')
    {
        memmove(s, s + 1, strlen(s) + 1);
        flag = true;
    }
    result = 0;
    m = strlen(s);
    for (int i = 0; i < m; i++)
    {
        result += (s[i] - '0') * pow(2, m - i - 1);
    }
    if (flag)
        result *= -1;
    return result;
}
 
int main()
{
    char s[5][255] = { "11111", "11110", "-100101", "110", "0101" };
    for (int i = 0; i < 5; i++)
    {
        cout << i + 1 << " -> " << fromBinToDec(s[i]) << "\n";
    }
    system("pause");
    return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.01.2018, 19:33
Помогаю со студенческими работами здесь

Перевод из двоичной системы счисления в десятичную
Я создал программу, но вот она выдает размерность введенного массива, вместо десятичного числа....

Перевод числа из двоичной системы в десятичную
Помогите написать программу для перевода из 2 в 10. Если число делится на 3, то вывести и результат...

Перевод из двоичной системы счисления в десятичную
как создать код который переводит с двоичной системы в десятичную без использования DEC и прочего?

Перевод из двоичной системы счисления в десятичную
#include &lt;iostream&gt; #include &lt;cmath&gt; #include &lt;cstring&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt;...


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

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

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