7 / 1 / 0
Регистрация: 02.04.2013
Сообщений: 80
1

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

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

Author24 — интернет-сервис помощи студентам
Всем доброго дня! Вообщем дали на практике задание: Дан цифровой массив, посчитать сколько двоичных единиц содержит каждое число. Помогите пожалуйста. Заранее спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.07.2013, 12:52
Ответы с готовыми решениями:

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

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

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

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

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

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

Добавлено через 52 секунды
Цитата Сообщение от Thinker Посмотреть сообщение
зато как красиво она позволяет писать программы
да
но какие нагрузки на стек
0
Эксперт С++
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
03.07.2013, 13:04 7
Цитата Сообщение от ValeryS Посмотреть сообщение
да
но какие нагрузки на стек
ну, это понятно, зато когда можно и так и так, то это же здорово
0
7 / 1 / 0
Регистрация: 02.04.2013
Сообщений: 80
03.07.2013, 13:07  [ТС] 8
Почему не поможет?)))Очень поможет, сделаю отчёт и сдам, и поеду раньше домой.....будьте добры помочь))))
0
Эксперт С++
4267 / 2241 / 203
Регистрация: 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)
   ;
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,516
03.07.2013, 13:28 10
Цитата Сообщение от Thinker Посмотреть сообщение
ладно, вот итерация
уломал, чертяка
только чем твой for отличается от моего while ?
кроме формы записи
сильно подозреваю,что сгенерится один и тот же код
0
Эксперт С++
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
03.07.2013, 13:30 11
Цитата Сообщение от ValeryS Посмотреть сообщение
только чем твой for отличается от моего while ?
количеством строчек
0
7 / 1 / 0
Регистрация: 02.04.2013
Сообщений: 80
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;
}
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,516
03.07.2013, 13:35 13
Цитата Сообщение от ACTIV1 Посмотреть сообщение
как сделать, чтобы можно было вводить в строчку несколько чисел(именно сам цифровой массив)
а массив то у тебя где?
0
7 / 1 / 0
Регистрация: 02.04.2013
Сообщений: 80
03.07.2013, 13:42  [ТС] 14
Ну как я понял, вводится число n, это и есть моё ОДНО число.
0
Почетный модератор
Эксперт С++
5850 / 2861 / 392
Регистрация: 01.11.2011
Сообщений: 6,907
03.07.2013, 13:48 15
Цитата Сообщение от ACTIV1 Посмотреть сообщение
вводить в строчку несколько чисел
cin такого не умеет. Это надо после каждого ввода (нажатия на Enter) врукопашную возвращать в нужную позицию положение курсора.
0
7 / 1 / 0
Регистрация: 02.04.2013
Сообщений: 80
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;
}
0
7 / 1 / 0
Регистрация: 02.04.2013
Сообщений: 80
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;
}
0
03.07.2013, 18:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.07.2013, 18:29
Помогаю со студенческими работами здесь

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

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

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru