Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
valeriy007
77 / 22 / 6
Регистрация: 27.10.2014
Сообщений: 420
#1

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

01.07.2015, 17:02. Просмотров 645. Ответов 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.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.07.2015, 17:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перевод числа в бинарное (C++):

Бинарное дерево. Поиск числа ветвей по значению - C++
Задание: Написать программу, к-я находит длину пути (число ветвей) от корня до ближайшего значения x. Если такой вершины нет, то вернуть...

Соединение двух программ в одну (бинарное сложение и бинарное сравнение) - C++
Помогите составить из двух этих программ одну (имею ввиду прога должна предлагать 2 эти варианта через case: при нажатии case 1 или case 2...

Построить бинарное дерево, элементами которого являются числа - C++
Помогите решить задание: построить бинарное дерево, элементами которого являются числа. Удалить из дерева все повторяющиеся элементы. Мой...

Бинарные числа! Перевод простого числа в бираное и расчет. - C++
Здравствуйте!Я понимаю, что моя просьба банальна, но я правда не могу никак разобраться с бинарными числами и переводом простых чисел в...

Перевод числа из одной с.с. в другую, манипуляции с цифрами числа - C++
Здравствуйте! У меня такая проблема... Есть программа, выполняющая определенные операции с введенным числом (переставляет местами цифры,...

Исходное бинарное дерево превратить в бинарное дерево поиска, при этом сохранив его структуру - C++
Помогите, не могу понять!( Нужно исходное бинарное дерево превратить в бинарное дерево поиска, при этом сохранив его структуру. вот...

5
MansMI
1290 / 1068 / 299
Регистрация: 08.01.2012
Сообщений: 4,066
01.07.2015, 17:12 #2
x[0] = *x % 2; ???
0
valeriy007
77 / 22 / 6
Регистрация: 27.10.2014
Сообщений: 420
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;
}
ну там вот так, но все равно чето не правильно...
0
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 секунды
Переделай на указатели.
0
MansMI
1290 / 1068 / 299
Регистрация: 08.01.2012
Сообщений: 4,066
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");
}
0
ящюр
97 / 97 / 24
Регистрация: 15.03.2013
Сообщений: 521
Записей в блоге: 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");
}
0
03.07.2015, 00:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.07.2015, 00:03
Привет! Вот еще темы с ответами:

перевод числа - C++
подскажите как перевести в 10ую систему число которое записано в двух ячейках массива : a=10; a=99 , причем число 9910 в 16 системе

Перевод числа из 10 с.с. в 8 с.с. - C++
не пойму как создать программу по переводу числа из 10 с.с. в 8 с.с. . Дали несколько задач на расчётно-графическую работу,а учитель толком...

Перевод 10-го числа в 2-ое - C++
Народ обьясните пжлста как работает эта функция(быстрое возведение числа в степень a^d mod n) : long powmod(long a, long d, long n) ...

Перевод числа из 10 в 2 сс - C++
Написать рекурсивную функцию перевода числа из 10 в 2 систему счисления. Помогите пожалуйста.


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

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

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