Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/132: Рейтинг темы: голосов - 132, средняя оценка - 4.61
0 / 0 / 0
Регистрация: 19.01.2011
Сообщений: 10

Dec to bin

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

Студворк — интернет-сервис помощи студентам
Помогите написать программу перевода из 10-ой системы счисления в 2-ую, через массив.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.02.2011, 14:23
Ответы с готовыми решениями:

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

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

Усовершенствование декодера Bin > Dec и обратно
Здравствуйте! Я работаю над проектом декодера из бинарной системы в десятичную и обратно. Создал 2 программы из бин в дес и обратно...

8
 Аватар для x1Mike7x
222 / 135 / 19
Регистрация: 06.11.2010
Сообщений: 234
01.02.2011, 15:49
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;
}
1
35 / 34 / 7
Регистрация: 14.12.2010
Сообщений: 159
01.02.2011, 16:25
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;
}
С использованием динамических массивов. Экономит память.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
01.02.2011, 17:44

Не по теме:

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

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

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



Добавлено через 2 минуты
Кстати, обе программы не выполнили поставленной задачи. Задача ставится как "перевести" число из 10-й системы в 2-ную. А ваши программы просто распечатывают некую величину в двоичное представление. Задачей перевода числа из 10-й записи в машинное представление в первой программе занимается компилятор, а во второй - cin (а точнее, оператор <<)
1
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
01.02.2011, 17:57
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;
}
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
01.02.2011, 18:12
M128K145, твоя программа тоже не занимается переводом. Она просто печатает число (т.е. перевод из внутреннего машинного представления в тестовый двоичный вид). Преобразование должно делаться ИЗ ТЕКСТА В ТЕКСТ, а не из int'а в текст или в массив int'ов, являющихся отображением текста.

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

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

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

Добавлено через 3 минуты
Вот тут этот вопрос обсуждали более досконально. Блин, реально пора об этом статью писать, а то люди ведь так и не понимают этого
https://www.cyberforum.ru/cpp/thread17010.html
1
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
01.02.2011, 18:24
Цитата Сообщение от Evg Посмотреть сообщение
В обоих случаях код отработает одинаково, а потому название DecBin попросту не соответсвует действию "перевод числа из десятичной записи в двоичную"
Т.е. ты имеешь в виду, что int всегда представлен только в десятичном виде или я не совсем понял что значит "код отработает одинаково"
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
01.02.2011, 18:27
int всегда представлен во внутреннем машинном виде. Когда ты используешь cin, то cin переводит строковое представление во внутреннее машинное (которое, как мы знаем, двоичное, хотя это никакой роли не играет). Т.е. то, что сделал cin, должен делать ты (при условии, что автору действительно нужно то, о чём написано в задании). Я привёл выше ссылку, почитай её.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
20.02.2011, 13:06
M128K145, вот сюда Неочевидные ответы на простые вопросы добавил раздел "8. Немного о преобразовании чисел между системами исчисления". Если после прочтения ты поймёшь свою ошибку, то буду считать, что статья написана хорошо
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.02.2011, 13:06
Помогаю со студенческими работами здесь

Усовершенствование кода декодера BIN > DEC
Здравствуйте! У меня есть проект, декодер из бинарной системы в десятичную. #include &lt;iostream&gt; #include &lt;stdlib.h&gt; ...

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

Из bin в dec и из oct в dec
нужно создать что-то типо программного конвертера, есть edit, там вводится число, например двоичное, нажимаю button, оно конвертируется в...

Из Dec в Bin
Доброе время суток,только недавно начал изучать C#,решил написать простенький калькулятор,а теперь хочу что бы в нём,был возможен перевод...

Dec-bin конвертор
Задача состоит в том, что необходимо с помощью монитора порта при указании числа в десятичной системе счисления преобразовывать в двоичную...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru