С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
7 / 1 / 0
Регистрация: 02.04.2013
Сообщений: 80

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

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

Студворк — интернет-сервис помощи студентам
Всем доброго дня! Вообщем дали на практике задание: Дан цифровой массив, посчитать сколько двоичных единиц содержит каждое число. Помогите пожалуйста. Заранее спасибо.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.07.2013, 12:52
Ответы с готовыми решениями:

Посчитать сколько двоичных единиц содержит каждое число
Дан цифровой массив , посчитать сколько двоичных единиц содержит каждое число

Дан цифровой массив , посчитать сколько двоичных единиц содержит каждое число
Добрый день . Задание таково: дан цифровой массив , посчитать сколько двоичных единиц содержит каждое число. Если не затруднит можно...

Посчитать количество двоичных единиц переменной 8 байт
Всем привет. Такой вопрос, мне задали задание посчитать количество двоичных единиц переменной 8 байт. Подскажите, как это вообще можно...

16
Эксперт С++
 Аватар для Thinker
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
03.07.2013, 12:53
C++
1
2
3
4
int Count(unsigned a)
{
   return a ? (a & 1) + Count(a >> 1) : 0;
}
2
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
03.07.2013, 12:57
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;
}
1
7 / 1 / 0
Регистрация: 02.04.2013
Сообщений: 80
03.07.2013, 12:58  [ТС]
Цитата Сообщение от Thinker Посмотреть сообщение
Код C++
1
2
3
4
int Count(unsigned a)
{
* *return a ? (a & 1) + Count(a >> 1) : 0;
}
Спасибо большое, но можешь весь код программы скинуть?А то я не разберусь(((
0
Эксперт С++
 Аватар для Thinker
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
03.07.2013, 13:02
Цитата Сообщение от ACTIV1 Посмотреть сообщение
весь код программы скинуть?А то я не разберусь
это же практика у вас, вот и повод разобраться вызывайте эту функцию для каждого элемента массива, делов то

Добавлено через 41 секунду
Цитата Сообщение от ValeryS Посмотреть сообщение
опять рекурсия
зато как красиво она позволяет писать программы
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
03.07.2013, 13:03
Цитата Сообщение от ACTIV1 Посмотреть сообщение
А то я не разберусь(((
если знаешь
что такое двоичное представление числа
что такое сдвиг
что такое И ИЛИ НЕ ИСКЛЮЧАЮЩЕЕ ИЛИ
то и этого достаточно
если нет то и полный код программы не поможет

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

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

C++
1
2
for(count = 0; a; count += (a & 1), a >>= 1)
   ;
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
03.07.2013, 13:28
Цитата Сообщение от Thinker Посмотреть сообщение
ладно, вот итерация
уломал, чертяка
только чем твой for отличается от моего while ?
кроме формы записи
сильно подозреваю,что сгенерится один и тот же код
0
Эксперт С++
 Аватар для Thinker
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
03.07.2013, 13:30
Цитата Сообщение от ValeryS Посмотреть сообщение
только чем твой for отличается от моего while ?
количеством строчек
0
7 / 1 / 0
Регистрация: 02.04.2013
Сообщений: 80
03.07.2013, 13:34  [ТС]
Вот код программы, но я не пойму, как сделать, чтобы можно было вводить в строчку несколько чисел(именно сам цифровой массив) и далее кол-во единицы из каждого числа скалывались. Можете с этим помочь?
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;
}
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
03.07.2013, 13:35
Цитата Сообщение от ACTIV1 Посмотреть сообщение
как сделать, чтобы можно было вводить в строчку несколько чисел(именно сам цифровой массив)
а массив то у тебя где?
0
7 / 1 / 0
Регистрация: 02.04.2013
Сообщений: 80
03.07.2013, 13:42  [ТС]
Ну как я понял, вводится число n, это и есть моё ОДНО число.
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
03.07.2013, 13:48
Цитата Сообщение от ACTIV1 Посмотреть сообщение
вводить в строчку несколько чисел
cin такого не умеет. Это надо после каждого ввода (нажатия на Enter) врукопашную возвращать в нужную позицию положение курсора.
0
7 / 1 / 0
Регистрация: 02.04.2013
Сообщений: 80
03.07.2013, 14:09  [ТС]
Вообщем думаю сделать несколько строк ввода, потом сложить единицы. Только вот не пойму, почему у меня при выполнении выкидывает из программы, потом снова запускаю и только тогда вижу результат?И ещё идёт постоянный вывод сообщения

Вот когд программы:
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;
}
0
7 / 1 / 0
Регистрация: 02.04.2013
Сообщений: 80
03.07.2013, 18:29  [ТС]
А всё, разобрался))
Добавил #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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.07.2013, 18:29
Помогаю со студенческими работами здесь

Ввести целое число A и посчитать, сколько единиц в числе с 5 бита по 10 бит, включая эти биты
УСЛОВИЕ --- Ввести целое число A и посчитать, сколько единиц в числе с 5 бита по 10 бит, включая эти биты. #include &lt;iostream&gt; ...

Сколько существует десятизначных двоичных чисел, единиц в которых слева больше чем справа
Помогите пожалуйста решить задачу Десятизначное двоичное число разделили на две равные части - левую и правую. Сколько существует...

Сколько единиц содержит матрица универсального отношения на множестве
Сколько единиц содержит матрица универсального отношения на множестве А={1,2,3,4}. Вариант подать числом.

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

Посчитать сколько единиц и нулей в столбце
Как на питоне написать запрос,чтобы он посчитал сколько единиц и отдельно сколько нулей в одном столбце?просто в стоблце 73000...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru