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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
ACTIV1
7 / 1 / 0
Регистрация: 02.04.2013
Сообщений: 68
#1

Посчитать сколько двоичных единиц содержит каждое число массива. - C++

03.07.2013, 12:52. Просмотров 1451. Ответов 16
Метки нет (Все метки)

Всем доброго дня! Вообщем дали на практике задание: Дан цифровой массив, посчитать сколько двоичных единиц содержит каждое число. Помогите пожалуйста. Заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.07.2013, 12:52     Посчитать сколько двоичных единиц содержит каждое число массива.
Посмотрите здесь:
C++ Посчитать сколько двоичных единиц содержит каждое число
Ввести целое число A и посчитать, сколько единиц в числе с 5 бита по 10 бит, включая эти биты C++
Посчитать, сколько слов содержит строкв C++
Посчитать, сколько слов содержит текст произвольной длины. C++
Одномерный массив: сколько раз повторяется каждое число C++
C++ Определить, сколько раз каждое число используется в массиве
Подсчитать,сколько раз каждое число встречается в файле C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Thinker
Эксперт C++
4221 / 2195 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
03.07.2013, 12:53     Посчитать сколько двоичных единиц содержит каждое число массива. #2
C++
1
2
3
4
int Count(unsigned a)
{
   return a ? (a & 1) + Count(a >> 1) : 0;
}
ValeryS
Модератор
6541 / 5007 / 461
Регистрация: 14.02.2011
Сообщений: 16,652
03.07.2013, 12:57     Посчитать сколько двоичных единиц содержит каждое число массива. #3
Thinker,
опять рекурсия
вот без неё
C++
1
2
3
4
5
6
7
8
9
10
int Count(unsugned a)
{
   int count=0;
   while(a)
    {
       count+=a&0x01;
      a/=2;
    }
 return   count;
}
ACTIV1
7 / 1 / 0
Регистрация: 02.04.2013
Сообщений: 68
03.07.2013, 12:58  [ТС]     Посчитать сколько двоичных единиц содержит каждое число массива. #4
Цитата Сообщение от Thinker Посмотреть сообщение
Код C++
1
2
3
4
int Count(unsigned a)
{
* *return a ? (a & 1) + Count(a >> 1) : 0;
}
Спасибо большое, но можешь весь код программы скинуть?А то я не разберусь(((
Thinker
Эксперт C++
4221 / 2195 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
03.07.2013, 13:02     Посчитать сколько двоичных единиц содержит каждое число массива. #5
Цитата Сообщение от ACTIV1 Посмотреть сообщение
весь код программы скинуть?А то я не разберусь
это же практика у вас, вот и повод разобраться вызывайте эту функцию для каждого элемента массива, делов то

Добавлено через 41 секунду
Цитата Сообщение от ValeryS Посмотреть сообщение
опять рекурсия
зато как красиво она позволяет писать программы
ValeryS
Модератор
6541 / 5007 / 461
Регистрация: 14.02.2011
Сообщений: 16,652
03.07.2013, 13:03     Посчитать сколько двоичных единиц содержит каждое число массива. #6
Цитата Сообщение от ACTIV1 Посмотреть сообщение
А то я не разберусь(((
если знаешь
что такое двоичное представление числа
что такое сдвиг
что такое И ИЛИ НЕ ИСКЛЮЧАЮЩЕЕ ИЛИ
то и этого достаточно
если нет то и полный код программы не поможет

Добавлено через 52 секунды
Цитата Сообщение от Thinker Посмотреть сообщение
зато как красиво она позволяет писать программы
да
но какие нагрузки на стек
Thinker
Эксперт C++
4221 / 2195 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
03.07.2013, 13:04     Посчитать сколько двоичных единиц содержит каждое число массива. #7
Цитата Сообщение от ValeryS Посмотреть сообщение
да
но какие нагрузки на стек
ну, это понятно, зато когда можно и так и так, то это же здорово
ACTIV1
7 / 1 / 0
Регистрация: 02.04.2013
Сообщений: 68
03.07.2013, 13:07  [ТС]     Посчитать сколько двоичных единиц содержит каждое число массива. #8
Почему не поможет?)))Очень поможет, сделаю отчёт и сдам, и поеду раньше домой.....будьте добры помочь))))
Thinker
Эксперт C++
4221 / 2195 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
03.07.2013, 13:21     Посчитать сколько двоичных единиц содержит каждое число массива. #9
вспомните Ломоносова. какие там "раньше домой". грызите гранит науки!

ValeryS, ладно, вот итерация

C++
1
2
for(count = 0; a; count += (a & 1), a >>= 1)
   ;
ValeryS
Модератор
6541 / 5007 / 461
Регистрация: 14.02.2011
Сообщений: 16,652
03.07.2013, 13:28     Посчитать сколько двоичных единиц содержит каждое число массива. #10
Цитата Сообщение от Thinker Посмотреть сообщение
ладно, вот итерация
уломал, чертяка
только чем твой for отличается от моего while ?
кроме формы записи
сильно подозреваю,что сгенерится один и тот же код
Thinker
Эксперт C++
4221 / 2195 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
03.07.2013, 13:30     Посчитать сколько двоичных единиц содержит каждое число массива. #11
Цитата Сообщение от ValeryS Посмотреть сообщение
только чем твой for отличается от моего while ?
количеством строчек
ACTIV1
7 / 1 / 0
Регистрация: 02.04.2013
Сообщений: 68
03.07.2013, 13:34  [ТС]     Посчитать сколько двоичных единиц содержит каждое число массива. #12
Вот код программы, но я не пойму, как сделать, чтобы можно было вводить в строчку несколько чисел(именно сам цифровой массив) и далее кол-во единицы из каждого числа скалывались. Можете с этим помочь?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream.h>
int main()
{
   int n,k=0;
   cin >> n;
   while (n)
   {
      k+=n&1;
      n>>=1;
   }
   cout << k;
   return 0;
}
ValeryS
Модератор
6541 / 5007 / 461
Регистрация: 14.02.2011
Сообщений: 16,652
03.07.2013, 13:35     Посчитать сколько двоичных единиц содержит каждое число массива. #13
Цитата Сообщение от ACTIV1 Посмотреть сообщение
как сделать, чтобы можно было вводить в строчку несколько чисел(именно сам цифровой массив)
а массив то у тебя где?
ACTIV1
7 / 1 / 0
Регистрация: 02.04.2013
Сообщений: 68
03.07.2013, 13:42  [ТС]     Посчитать сколько двоичных единиц содержит каждое число массива. #14
Ну как я понял, вводится число n, это и есть моё ОДНО число.
SatanaXIII
Супер-модератор
Эксперт С++
5593 / 2627 / 240
Регистрация: 01.11.2011
Сообщений: 6,461
Завершенные тесты: 1
03.07.2013, 13:48     Посчитать сколько двоичных единиц содержит каждое число массива. #15
Цитата Сообщение от ACTIV1 Посмотреть сообщение
вводить в строчку несколько чисел
cin такого не умеет. Это надо после каждого ввода (нажатия на Enter) врукопашную возвращать в нужную позицию положение курсора.
ACTIV1
7 / 1 / 0
Регистрация: 02.04.2013
Сообщений: 68
03.07.2013, 14:09  [ТС]     Посчитать сколько двоичных единиц содержит каждое число массива. #16
Вообщем думаю сделать несколько строк ввода, потом сложить единицы. Только вот не пойму, почему у меня при выполнении выкидывает из программы, потом снова запускаю и только тогда вижу результат?И ещё идёт постоянный вывод сообщения
Посчитать сколько двоичных единиц содержит каждое число массива.
Вот когд программы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream.h>
int main()
{
   int n,k=0;
   cout<<"Vvedite chislo: ";
   cin >> n;
   while (n)
   {
      k+=n&1;
      n>>=1;
   }
   cout<<"Kollichestvo edinic: ";
   cout << k;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.07.2013, 18:29     Посчитать сколько двоичных единиц содержит каждое число массива.
Еще ссылки по теме:
C++ Определить, сколько цифр содержит число
C++ Дано натуральное число N. Выяснить, сколько положительныхэлементов содержит матрица
C++ Дано натуральное число N. Выяснить, сколько положительных элементов содержит матрица
C++ Каждое простое число последовательности увеличить в два раза, посчитать количество простых чисел в исходной последовательности
C++ Как посчитать сколько раз было введено число

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

Или воспользуйтесь поиском по форуму:
ACTIV1
7 / 1 / 0
Регистрация: 02.04.2013
Сообщений: 68
03.07.2013, 18:29  [ТС]     Посчитать сколько двоичных единиц содержит каждое число массива. #17
А всё, разобрался))
Добавил #include <conio.h> и getch();
return 0;

Добавлено через 20 минут
Вообщем сделал ввод 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
#include <iostream.h>
#include <conio.h>
int main()
{
   int n,m,k=0,h=0;
   cout<<"Vvedite 1 chislo: ";
   cin >> n;
   while (n)
   {
      k+=n&1;
      n>>=1;
   }
   cout<<"Vvedite 2 chislo: ";
   cin >> m;
   while (m)
   {
      h+=m&1;
      m>>=1;
   }
   cout<<"Kollichestvo edinic 1: ";
   cout << k;
   cout<<"Kollichestvo edinic 2: ";
   cout << h;
   getch();
return 0;
}
Сделал повторяя код, может можно как-то упростить?Сделать допустим размерность кол-ва чисел. Кто поможет реализовать это?

Добавлено через 3 часа 51 минуту
Вот переделал прогу, используя рекурсию.
Вот код, может кому-то пригодится:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
 
int getCount(unsigned a)
{
   return a ? (a & 1) + getCount(a >> 1) : 0;
}
 
int main()
{
    int count, num;
    for (int i = 1; i <= 5; i++) {
        printf( "Vvedite %d chislo: ", i );
        cin >> num;
        count = getCount(num);
        printf( "Kollichestvo edinic v %d chisle = %d\n", i, count);
    }
    getch();
    return 0;
}
Yandex
Объявления
03.07.2013, 18:29     Посчитать сколько двоичных единиц содержит каждое число массива.
Ответ Создать тему
Опции темы

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