Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
SAMSONDV
0 / 0 / 0
Регистрация: 16.11.2016
Сообщений: 6
#1

Перевод числа из десятичной в двоичную с прямым заполнением массива - C++

16.11.2016, 15:31. Просмотров 459. Ответов 12
Метки нет (Все метки)

Дано число не больше 255. Надо перевести его в двоичную систему.

С этим кодом все в порядке, но приходится читать результат с конца массива:

int c [ i ] - массив для записи двоичного представления числа
int z; - число в десятичной системе
int i=0; -счетчик элемента массива
C++
1
2
3
4
5
6
7
8
9
while (z != 0) {
  c[i] = z % 2;
  z = z / 2;
  i++;
}
 
for (int i = 7; i >= 0; i--) {
  cout << c[i];
}
Хочу читать результат с начала массива:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int z;
int i = 7;
 
while (z != 0) {
 
  c[i] = z % 2;
  z = z / 2;
  i--;
}
 
for (int i = 0; i <= 7; i++) {
  cout << c[i];
}
Почему данный код работает не корректно?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.11.2016, 15:31
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Перевод числа из десятичной в двоичную с прямым заполнением массива (C++):

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

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

Перевод числа из десятичной системы счисления в двоичную.
Что неправильно??? + вопрос. дальше по заданию мне надо 2 числе перевести в...

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

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

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

12
gru74ik
Модератор
Эксперт CЭксперт С++
4648 / 1962 / 293
Регистрация: 20.02.2013
Сообщений: 5,225
Записей в блоге: 23
16.11.2016, 16:02 #2
SAMSONDV, наверное потому, что его надо поместить внутрь функции main() и подключить все необходимые заголовочные файлы.
0
MansMI
1447 / 1156 / 549
Регистрация: 08.01.2012
Сообщений: 4,509
16.11.2016, 16:05 #3
C
1
2
3
4
5
6
7
8
9
10
11
void main(int argc,char* argv[])
{   
    int n;
    char *p,bin[9]="";
 
    printf("n<256:");
    scanf("%d",&n);
    for(p=bin+8; n; n/=2) *--p=(n&1)+'0';
    printf("%s\n",p);
    system("pause");
}
0
SAMSONDV
0 / 0 / 0
Регистрация: 16.11.2016
Сообщений: 6
16.11.2016, 16:16  [ТС] #4
код компилируется, я просто не писал в коде служебку,

Добавлено через 6 минут
во втором варианте массив выходит почему то за границу, и вывод больше восьми чисел
0
MansMI
1447 / 1156 / 549
Регистрация: 08.01.2012
Сообщений: 4,509
16.11.2016, 16:17 #5
точнее так
C
1
for(p=bin+8; n || !*p; n/=2) *--p=(n&1)+'0';
0
MrGluck
Модератор
Эксперт CЭксперт С++
8023 / 4866 / 1425
Регистрация: 29.11.2010
Сообщений: 13,251
16.11.2016, 16:22 #6
C++
1
2
3
4
5
6
7
#include <bitset>
#include <iostream>
 
int main()
{
    std::cout << std::bitset<8>(17);
}
0
SAMSONDV
0 / 0 / 0
Регистрация: 16.11.2016
Сообщений: 6
17.11.2016, 02:11  [ТС] #7
кто мне объяснит почему первый вариант работает, а второй нет когда я пытаюсь результат записывать с начала массива?
0
MansMI
1447 / 1156 / 549
Регистрация: 08.01.2012
Сообщений: 4,509
17.11.2016, 08:26 #8
не факт что i дойдет до 0, а каким мусором заполнен с бог знает
C++
1
for (++i ; i <= 7; i++) cout << c[i];
0
SAMSONDV
0 / 0 / 0
Регистрация: 16.11.2016
Сообщений: 6
17.11.2016, 12:22  [ТС] #9
точно, надо обнулить массив и все путем...


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int c[7];
int i=7;
int z;
for(int i=0;i<=7;i++)
{
c[i]=0;
}
 
while(z!=0){
c[i]=z%2;
z=z/2;
i--;
}
0
MansMI
1447 / 1156 / 549
Регистрация: 08.01.2012
Сообщений: 4,509
17.11.2016, 12:41 #10
Цитата Сообщение от SAMSONDV Посмотреть сообщение
int c[7];
???
0
SAMSONDV
0 / 0 / 0
Регистрация: 16.11.2016
Сообщений: 6
17.11.2016, 12:52  [ТС] #11
ну массив для хранения числа в двоичной системе, объявляю 8 ячеек, потому что число не может быть больше 255
0
MansMI
1447 / 1156 / 549
Регистрация: 08.01.2012
Сообщений: 4,509
17.11.2016, 12:56 #12
новый министр образования цифры изменил?
0
SAMSONDV
0 / 0 / 0
Регистрация: 16.11.2016
Сообщений: 6
17.11.2016, 13:02  [ТС] #13
Какой министр??? какие цифры? Ты о чем вообще?
0
17.11.2016, 13:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.11.2016, 13:02
Привет! Вот еще темы с решениями:

Рекурсия: перевод числа из десятичной системы в двоичную
Нужна программа,которая рекурсивно переводит числа из десятичной системы в...

Реализовать перевод числа из десятичной системы счисления в двоичную
число в 10 системе cсчисления например 10.2342 использовать только алгоритм...

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

Перевод из десятичной системы счисления в двоичную числа с плавающей точкой
помогите написать и разобраться. Добавлено через 3 часа 2 минуты Помогите...


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

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

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