Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
valeriy007
72 / 17 / 5
Регистрация: 27.10.2014
Сообщений: 399
#1

Перевод числа в бинарное - C++

01.07.2015, 17:02. Просмотров 338. Ответов 5
Метки нет (Все метки)

Перевести заданное в десятичной системе число a в двоичную систему, используя функцию перевода. При передаче значения в функцию пользуйтесь указателями.

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
#include <iostream>
#include "conio.h"
 
int *convertToBin(int *x)
{
    int *a = new int[50];
    int i = 1;
    x[0] = *x % 2;
    while (*x != 1)
    {
        *x = *x / 2;
        a[i] = *x % 2;
        i++;
    }
    return a;
}
 
int main()
{
    int a;
    std::cin >> a;
 
    int *arr = convertToBin(&a);
 
    for (int i = 0; i < 5; i++) 
        std::cout << arr[i] << std::endl;
 
    system("pause");
    return 0;
}
Компилятор:
Первый этап обработки исключения по адресу 0x00984760 в tren.exe: 0xC0000005: нарушение прав доступа при записи по адресу 0x0046B000.
Необработанное исключение по адресу 0x00984760 в tren.exe: 0xC0000005: нарушение прав доступа при записи по адресу 0x0046B000.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.07.2015, 17:02     Перевод числа в бинарное
Посмотрите здесь:

Бинарные числа! Перевод простого числа в бираное и расчет. C++
C++ Перевод числа из 10 в 2 сс
Перевод вещественного числа из N сс в K сс C++
перевод числа в двоичное C++
Перевод числа из 10 с.с. в 8 с.с. C++
перевод числа C++
C++ Бинарное дерево. Поиск числа ветвей по значению
C++ Перевод из числа в строку
C++ Перевод 10-го числа в 2-ое
C++ Перевод числа из одной с.с. в другую, манипуляции с цифрами числа
C++ Построить бинарное дерево, элементами которого являются числа
Соединение двух программ в одну (бинарное сложение и бинарное сравнение) C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MansMI
1122 / 919 / 235
Регистрация: 08.01.2012
Сообщений: 3,306
01.07.2015, 17:12     Перевод числа в бинарное #2
x[0] = *x % 2; ???
valeriy007
72 / 17 / 5
Регистрация: 27.10.2014
Сообщений: 399
01.07.2015, 17:18  [ТС]     Перевод числа в бинарное #3
Цитата Сообщение от MansMI Посмотреть сообщение
x[0] = *x % 2; ???
упс...
C++
1
2
3
4
5
6
7
8
9
10
11
12
int *convertToBin(int *x)
{
    int *a = new int[50];
    int i = 0;
    while (*x != 1)
    {
        a[i] = *x % 2;
        *x = *x / 2;
        i++;
    }
    return a;
}
ну там вот так, но все равно чето не правильно...
isobo531
42 / 42 / 11
Регистрация: 11.11.2014
Сообщений: 322
01.07.2015, 17:24     Перевод числа в бинарное #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
int perevod_d (int dec, int bin)
{
    cout << "Число: ";
    cin >> dec;
 
    for (int j = 0; dec > 0; j++)
    {
        bin += (dec % 2) * pow(10.0, j);
        dec /= 2;
    }
    return bin;
}
Добавлено через 44 секунды
Переделай на указатели.
MansMI
1122 / 919 / 235
Регистрация: 08.01.2012
Сообщений: 3,306
01.07.2015, 17:49     Перевод числа в бинарное #5
число то какое? и на какой строке прерывается?

Добавлено через 23 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
char* convertToBin(int *x)
{
    char *a = new char[50];
    a+=49;
    *a--=0;
    do
    {
        *a-- = *x % 2+48;
        *x/=2;
    }while (*x);
    return ++a;
}
 
void main()
{
    int a;
    std::cin >> a;
    char *str = convertToBin(&a);
    std::cout << str << std::endl;
    system("pause");
}
ящюр
96 / 96 / 24
Регистрация: 15.03.2013
Сообщений: 510
Записей в блоге: 1
03.07.2015, 00:03     Перевод числа в бинарное #6
Вот еще вариантик.
Кликните здесь для просмотра всего текста
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
43
44
45
46
47
48
49
#include <cstdio>
#include <iostream>
#include <string>
using namespace std;
int binSize = 0;
 
char* convertToBin(const int *x)
{
    int c = *x; 
    binSize = 0;// Разрядность числа в двоичной форме
    if (c == 0 ) {
        binSize = 1;
    }
    else
    { 
        int stepen2 = 1;    // Степень 2ки
        for (int k = 1; stepen2 <= c; k++)
        {
            binSize = k;
            stepen2 *= 2;
        }
    }
    char *a = new char[binSize];
    memset(a, '0', binSize);
    if (c == 0 || c==1) { // Если число 0 или 1
        a[binSize-1] = (c == 0) ? '0' : '1'; // Заполняем один элемент массива
        return a;
    }
    c = *x;
    for (int k = (binSize-1); k >= 0; k--)
        {
            a[k] = (c & 1) ? '1' : '0'; // Проверяем 1й бит. Если 1ка то заполняем "1" иначе "0"
            c = c >> 1; // Битовый сдвиг вправо на один бит
        }
    return a;
}
 
void main()
{
    int a;
    std::cin >> a;
    char* res (convertToBin(&a));
    for (int k = 0; k < binSize; k++)
    {
        cout << res[k];
    }
    cout << endl;
    system("pause");
}


вариант со string
Кликните здесь для просмотра всего текста
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
43
44
45
46
#include <cstdio>
#include <iostream>
#include <string>
using namespace std;
int binSize = 0;
 
string convertToBin(const int *x)
{
    string Result = "";// Результат
    string temp = "";// Временная переменная
    int c = *x; 
    binSize = 0;// Разрядность числа в двоичной форме
    if (c == 0 ) { // Если число=0 то устанавливаем длину в один разряд
        binSize = 1;
    }
    else
    { 
        int stepen2 = 1;    // Степень 2ки
        for (int k = 1; stepen2 <= c; k++)  // Вичисляем разрядность числа
        {
            binSize = k;
            stepen2 *= 2;
        }
    }
    if (c == 0 || c==1) { // Если число 0 или 1
        Result= ((c == 0) ? "0" : "1"); // Заполняем один элемент массива
        return Result;
    }
    c = *x;
    for (int k = (binSize-1); k >= 0; k--)
        {
            temp =((c & 1) ? "1" : "0"); // Проверяем 1й бит. Если 1ка то заполняем "1" иначе "0"
            Result = temp.append(Result);
            c = c >> 1; // Битовый сдвиг вправо на один бит
        }
    return Result;
}
 
void main()
{
    int a;
    std::cin >> a;
    
    cout << convertToBin(&a)<< endl;
    system("pause");
}
Yandex
Объявления
03.07.2015, 00:03     Перевод числа в бинарное
Ответ Создать тему
Опции темы

Текущее время: 10:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru