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

Вывод массива на экран - C++

Восстановить пароль Регистрация
 
Laptev Alex
9 / 1 / 1
Регистрация: 08.12.2012
Сообщений: 34
14.09.2013, 17:39     Вывод массива на экран #1
Нужна помощь, нужно написать программу, в которую вводят число в десятичной системе, и программа преобразует его в двоичную форму, т.е. число делится на 2 и остаток должен записываться в массив, после этот массив нужно вывести. Код написал, но при выводе массива на экран, он состоит из рандомных чисел!!!

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
#include <iostream>
using namespace std;
void dvoich(int a)
{ int i,n;
  int m = 10;
  int *Array = new int[m];
  for(int i=0;i<m;i++)
  {
      int k; 
      Array[i]=[k];
  }
for (i=0; a>0 ;i++)
{
    n=a%2;
    cout<<n<<endl;
    Array[i]=n;
    a=a/2;
}
cout<< "Массив"<< Array[m]<<endl;
}
int main()
{
    setlocale(0, "");
    int a;
    cout << "Введите число: ";
    cin >> a;
    dvoich(a);
    
}
Добавлено через 41 минуту
нужно чтобы массив вывел все элементы в строку
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nikitasuper
0 / 0 / 0
Регистрация: 12.09.2013
Сообщений: 11
14.09.2013, 17:43     Вывод массива на экран #2
ну незнаю попробуй deluxpf
drdrink
39 / 39 / 1
Регистрация: 13.05.2013
Сообщений: 103
14.09.2013, 17:43     Вывод массива на экран #3
Laptev Alex, а для чего нужен первый цикл??
и в конце ты выводишь не весь массив, а только m-й, то есть последний, чтобы весь массив вывести надо тоже в цикле поэлементно выводить
Laptev Alex
9 / 1 / 1
Регистрация: 08.12.2012
Сообщений: 34
14.09.2013, 18:08  [ТС]     Вывод массива на экран #4
drdrink,Да, первый цикл не нужен. Если я буду выводить циклом, элементы будут друг над другом, а нужно в строку!

Добавлено через 2 минуты
nikitasuper, что за deluxpf?
drdrink
39 / 39 / 1
Регистрация: 13.05.2013
Сообщений: 103
14.09.2013, 18:16     Вывод массива на экран #5
Laptev Alex, в смысле друг над другом?? так что ли?
1
0
0
1
1

а тебе надо 10011? или я тебя не так понял?
Laptev Alex
9 / 1 / 1
Регистрация: 08.12.2012
Сообщений: 34
14.09.2013, 18:26  [ТС]     Вывод массива на экран #6
drdrink,Да, именно так. Например: вводим число 12, программа делит 12 на 2 (пока не дойдет до единицы), получая остатки от деления и записывая их в массив. На деле получается:
0
0
1
1
А нужно чтобы вывел 1100
drdrink
39 / 39 / 1
Регистрация: 13.05.2013
Сообщений: 103
14.09.2013, 18:28     Вывод массива на экран #7
Laptev Alex, ну вот написал работает правильно, только без оформления функции, думаю сам сделаешь=)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
 
using namespace std;
 
int main()
{
    int a = 12, i = 0, m = 10;
    int *Ar = new int[m];
 
    for(; a > 0; i++)
    {
        Ar[i] = a%2;
        a /= 2;
    }
 
    for(int j = i-1; j >= 0; j--)
        cout << Ar[j];
    cout << "\n";
    return 0;
}
ValeryS
Модератор
6375 / 4841 / 443
Регистрация: 14.02.2011
Сообщений: 16,044
14.09.2013, 18:35     Вывод массива на экран #8
Laptev Alex,
ну ты и накрутил
вот твоя функция для вывода 32 разрядов (столько в int)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void dvoich(unsigned int a)
{ 
  int Array[32];
  for(int i=0;i<32;i++)
  {
       Array[i]=0;
  }
for (i=31; a>0 ;i--)
{
    n=a%2;
    Array[]=n;
    a=a/2;
}
 for(int i=0;i<32;i++)
  {
      cout<< Array[i];
  }
cout<<endl;
}
учти это не самый оптимальный вариант

вот то же самое
C++
1
2
3
4
5
6
7
8
void dvoich(unsigned int a)
{ 
  for(int i=31;i>=0;i--)
  {
        cout<< a&(0x1<<i);
  }
cout<<endl;
}
Добавлено через 1 минуту
Цитата Сообщение от Laptev Alex Посмотреть сообщение
На деле получается:
а кто перевод строки включил после каждой цифры?
Цитата Сообщение от Laptev Alex Посмотреть сообщение
cout<<n<<endl;
Добавлено через 4 минуты
Цитата Сообщение от ValeryS Посмотреть сообщение
вот то же самое
пардон наврал
мусору будет много
вот так правильней
C++
1
2
3
4
5
6
7
8
9
10
11
void dvoich(unsigned int a)
{ 
for(int i=31;i>=0;i--)
{
 if(a&(0x1<<i))
   cout<< "1";
  else
     cout<< "0";
}
cout<<endl;
}
drdrink
39 / 39 / 1
Регистрация: 13.05.2013
Сообщений: 103
14.09.2013, 18:36     Вывод массива на экран #9
Laptev Alex, да кстати как ValeryS написал последний вариант , он намного лучше будет, чем такое дело, лучше сразу проверять с помощью маски ноль там или один, чем делить постоянно=))
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.09.2013, 18:37     Вывод массива на экран
Еще ссылки по теме:

C++ Вывод двухмерного массива на экран
C++ Вывод массива из файла на экран
Вывод на экран массива объектов C++

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

Или воспользуйтесь поиском по форуму:
Laptev Alex
9 / 1 / 1
Регистрация: 08.12.2012
Сообщений: 34
14.09.2013, 18:37  [ТС]     Вывод массива на экран #10
ValeryS,drdrink, Спасибо!
ValeryS, Это чисто для проверки
Yandex
Объявления
14.09.2013, 18:37     Вывод массива на экран
Ответ Создать тему
Опции темы

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