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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 59, средняя оценка - 4.71
KapaRZA
0 / 0 / 0
Регистрация: 19.01.2011
Сообщений: 10
#1

Dec to bin - C++

01.02.2011, 14:23. Просмотров 7930. Ответов 8
Метки нет (Все метки)

Помогите написать программу перевода из 10-ой системы счисления в 2-ую, через массив.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.02.2011, 14:23     Dec to bin
Посмотрите здесь:

Dec to Bin - C++
Здравствуйте. Скажите, какие у меня есть ошибки в коде. static int DecToBin(int Dec) { bool end = false; ...

Bin to dec типа float - C++
Есть бинарное число вида 111111.1001, кое надо перевести в десятичную систему счисления, однако не понятно куда его занести для разбиения,...

Перевод чисел Bin - Oct - Dec - Hex - C++
Существуют ли функции для перевода числа (или строки из цифр) из одной системы счисления (по основанию 2, 8, 10, 16) в другую. Как из...

Из Hex в Dec - C++
Перевел из чара в инт и что-то не вьеду как теперь возвести . #include<iostream> #include<cmath> #include<string> using...

S dec na hex, ukazatel - C++
Pomogite pojaluista! Etot kod menyaet 10noe chislo na 16noe. Nado izmenit eto chtoby zdes byl ukazatel i funkcia to est v int main() Tolko...

Перевод числа из hex в dec - C++
Привет, можете подсказать как можно перевести 16-ричное число произвольной длины (например, заданное с помощью строки) в десятичную сс?...

Как в С++ конвертнуть HEX в DEC? - C++
Киберперцы, есть ли готовая функция в Visual C++ для конвертации из HEX (типа F4A36) в DEC (типа 1002038) ?

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
x1Mike7x
216 / 129 / 6
Регистрация: 06.11.2010
Сообщений: 234
01.02.2011, 15:49     Dec to bin #2
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int main()
{
    int i=0, X, b[100];
    X=64;
    while (X>1)
    {
        b[i]=X%2;
        X/=2;
        i++;
    };
    b[i]=X;
    while (i>=0)
    {
        printf("%i", b[i]);
        i--;
    };
    return 0;
}
VenCarbon
32 / 31 / 3
Регистрация: 14.12.2010
Сообщений: 158
01.02.2011, 16:25     Dec to bin #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
#include "stdafx.h"
#include <iostream>
#include <math.h>
using namespace std;
 
int main()
{
    float dec1;
    cin >> dec1;
    float size1 = ceil(log(dec1)/log(2.0));
    int size = (int) size1;
    int *binArray = new int[size];
    int dec = (int) dec1;
    int i = 0;
    while (dec) {
        binArray[i] = dec % 2;
            dec /= 2;
            i++;
    }
    for (i = size - 1; i >= 0; i--) {
        cout << binArray[i];
    }
    system("PAUSE");
    return 0;
}
С использованием динамических массивов. Экономит память.
Evg
Эксперт CАвтор FAQ
17544 / 5782 / 370
Регистрация: 30.03.2009
Сообщений: 15,927
Записей в блоге: 26
01.02.2011, 17:44     Dec to bin #4

Не по теме:

Цитата Сообщение от VenCarbon Посмотреть сообщение
С использованием динамических массивов. Экономит память
Ради экономии 100 байт памяти у тебя в программу подцепились реализации функций log, ceil, malloc (косвенно растёт из new), free (косвенно должно вырасти из delete, который ты позабыл). Не говоря уж о том, что код на Си++ будет жрать памяти больше, чем код на Си (как минимум из-за использования cin, cout). Так что вопрос экономии памяти весьма спорный.

Ну и если ввести decl=1, то логарифм от единицы оказывается 0, а потому sizel оказывается равным нулю. Если ввести decl=0, то логарифм от нуля неопределён, а потому что на это скажет твоя программа - никому неизвестно. Вот сколько лезет ошибок от непонятного желания сэкономить на спичках.

Так же непонятно, как твоя программа отреагирует на ввод отрицательного числа (а программа предыдущего оратора просто выдаст неправильное значение).



Добавлено через 2 минуты
Кстати, обе программы не выполнили поставленной задачи. Задача ставится как "перевести" число из 10-й системы в 2-ную. А ваши программы просто распечатывают некую величину в двоичное представление. Задачей перевода числа из 10-й записи в машинное представление в первой программе занимается компилятор, а во второй - cin (а точнее, оператор <<)
M128K145
Эксперт С++
8284 / 3503 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
01.02.2011, 17:57     Dec to bin #5
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 <iostream>
int BinDec(int* bin, int size)
{
    int rez = 0, i;
    for(i = size - 1; i >= 0; --i)
        rez += bin[i]<<i;
    return rez;
}
int* DecBin(int chislo, int size)
{
    int i;
    int* bin = new int[size];
    for(i = size - 1; i >= 0; --i)
        bin[i] = (chislo>>i) & 1;
    return bin;
}
int main()
{
    setlocale(LC_ALL, "Russian");
    int chislo, size(sizeof(chislo)*8);
    std::cout<<"Введите число:\n> ";
    std::cin>>chislo;
    int* bin = DecBin(chislo, size);
    for(int i = size - 1; i >= 0; --i)
    {
        if(!((i + 1) % 8))
            std::cout<<' ';
        std::cout<<bin[i];
    }
    std::cout<<std::endl;
    std::cout<<BinDec(bin, size);
    system("pause");
    return EXIT_SUCCESS;
}
Evg
Эксперт CАвтор FAQ
17544 / 5782 / 370
Регистрация: 30.03.2009
Сообщений: 15,927
Записей в блоге: 26
01.02.2011, 18:12     Dec to bin #6
M128K145, твоя программа тоже не занимается переводом. Она просто печатает число (т.е. перевод из внутреннего машинного представления в тестовый двоичный вид). Преобразование должно делаться ИЗ ТЕКСТА В ТЕКСТ, а не из int'а в текст или в массив int'ов, являющихся отображением текста.

Если я опять невнятно выразился, то могу с твоим же примером написать такой код:

C++
1
2
3
4
chislo = 10;
DecBin(chislo, size); // преобразование 10 -> 2
chislo = 0x10;
DecBin(chislo, size); // преобразование 16 -> 2
В обоих случаях код отработает одинаково, а потому название DecBin попросту не соответсвует действию "перевод числа из десятичной записи в двоичную"

Хотя сдаётся мне, что у автора не правильно поставлена задача. Наверняка ему (а точнее, преподу) нужен не перевод, а просто печать в двоичном представлении

Добавлено через 3 минуты
Вот тут этот вопрос обсуждали более досконально. Блин, реально пора об этом статью писать, а то люди ведь так и не понимают этого
http://www.cyberforum.ru/cpp/thread17010.html
M128K145
Эксперт С++
8284 / 3503 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
01.02.2011, 18:24     Dec to bin #7
Цитата Сообщение от Evg Посмотреть сообщение
В обоих случаях код отработает одинаково, а потому название DecBin попросту не соответсвует действию "перевод числа из десятичной записи в двоичную"
Т.е. ты имеешь в виду, что int всегда представлен только в десятичном виде или я не совсем понял что значит "код отработает одинаково"
Evg
Эксперт CАвтор FAQ
17544 / 5782 / 370
Регистрация: 30.03.2009
Сообщений: 15,927
Записей в блоге: 26
01.02.2011, 18:27     Dec to bin #8
int всегда представлен во внутреннем машинном виде. Когда ты используешь cin, то cin переводит строковое представление во внутреннее машинное (которое, как мы знаем, двоичное, хотя это никакой роли не играет). Т.е. то, что сделал cin, должен делать ты (при условии, что автору действительно нужно то, о чём написано в задании). Я привёл выше ссылку, почитай её.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.02.2011, 13:06     Dec to bin
Еще ссылки по теме:

Создать 2 структуры: DEC и POL - C++ - C++
Cоздать 2 структуры: DEC, состоящую из названия точки и её декартовых координат и POL, состоящую из названия точки и её полярных координат....

Манипуляторы dec hex setfill setw - C++
что такое операторы dec hex setfill sew м как они работают?

Как разделить программу на модули в Dec C++ - C++
Как происходит деление на модули в С++? вот например в Delphi я создавал новый unit и в обоих файлах прописывал доступ к друг другу через...

Влияет ли манипуляторы hex,oct,dec на массив символов? - C++
Влияет ли манипуляторы hex,oct,dec на массив символов? есть unsigned char str; Ввожу и так cin &gt;&gt; hex &gt;&gt; str; и так cin &gt;&gt; str; ...

HEX в BIN - C++
Товарищи!!! доброго времени суток!! Прошу помощи вот в какой задаче Есть некий Hex файл. :020000040800F2 ...


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

Или воспользуйтесь поиском по форуму:
Evg
Эксперт CАвтор FAQ
17544 / 5782 / 370
Регистрация: 30.03.2009
Сообщений: 15,927
Записей в блоге: 26
20.02.2011, 13:06     Dec to bin #9
M128K145, вот сюда Неочевидные ответы на простые вопросы добавил раздел "8. Немного о преобразовании чисел между системами исчисления". Если после прочтения ты поймёшь свою ошибку, то буду считать, что статья написана хорошо
Yandex
Объявления
20.02.2011, 13:06     Dec to bin
Ответ Создать тему
Опции темы

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