Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
ACTIV1
7 / 1 / 3
Регистрация: 02.04.2013
Сообщений: 80
#1

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

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

Всем доброго дня! Вообщем дали на практике задание: Дан цифровой массив, посчитать сколько двоичных единиц содержит каждое число. Помогите пожалуйста. Заранее спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.07.2013, 12:52
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Посчитать сколько двоичных единиц содержит каждое число массива. (C++):

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

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

Посчитать, сколько слов содержит строкв
нужно написать программу на С: дана строка символов до точки....

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

Одномерный массив: сколько раз повторяется каждое число
помогите решить такую задачку: есть одномерный массив, в котором n элементов,...

Подсчитать,сколько раз каждое число встречается в файле
Помогите ,кому нетрудно с лабораторной работой. Задание: подсчитать,сколько...

16
Thinker
Эксперт С++
4232 / 2206 / 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
ValeryS
Модератор
7134 / 5401 / 669
Регистрация: 14.02.2011
Сообщений: 18,227
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
ACTIV1
7 / 1 / 3
Регистрация: 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
Thinker
Эксперт С++
4232 / 2206 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
03.07.2013, 13:02 #5
Цитата Сообщение от ACTIV1 Посмотреть сообщение
весь код программы скинуть?А то я не разберусь
это же практика у вас, вот и повод разобраться вызывайте эту функцию для каждого элемента массива, делов то

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

Добавлено через 52 секунды
Цитата Сообщение от Thinker Посмотреть сообщение
зато как красиво она позволяет писать программы
да
но какие нагрузки на стек
0
Thinker
Эксперт С++
4232 / 2206 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
03.07.2013, 13:04 #7
Цитата Сообщение от ValeryS Посмотреть сообщение
да
но какие нагрузки на стек
ну, это понятно, зато когда можно и так и так, то это же здорово
0
ACTIV1
7 / 1 / 3
Регистрация: 02.04.2013
Сообщений: 80
03.07.2013, 13:07  [ТС] #8
Почему не поможет?)))Очень поможет, сделаю отчёт и сдам, и поеду раньше домой.....будьте добры помочь))))
0
Thinker
Эксперт С++
4232 / 2206 / 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
ValeryS
Модератор
7134 / 5401 / 669
Регистрация: 14.02.2011
Сообщений: 18,227
03.07.2013, 13:28 #10
Цитата Сообщение от Thinker Посмотреть сообщение
ладно, вот итерация
уломал, чертяка
только чем твой for отличается от моего while ?
кроме формы записи
сильно подозреваю,что сгенерится один и тот же код
0
Thinker
Эксперт С++
4232 / 2206 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
03.07.2013, 13:30 #11
Цитата Сообщение от ValeryS Посмотреть сообщение
только чем твой for отличается от моего while ?
количеством строчек
0
ACTIV1
7 / 1 / 3
Регистрация: 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
ValeryS
Модератор
7134 / 5401 / 669
Регистрация: 14.02.2011
Сообщений: 18,227
03.07.2013, 13:35 #13
Цитата Сообщение от ACTIV1 Посмотреть сообщение
как сделать, чтобы можно было вводить в строчку несколько чисел(именно сам цифровой массив)
а массив то у тебя где?
0
ACTIV1
7 / 1 / 3
Регистрация: 02.04.2013
Сообщений: 80
03.07.2013, 13:42  [ТС] #14
Ну как я понял, вводится число n, это и есть моё ОДНО число.
0
SatanaXIII
Супер-модератор
Эксперт С++
5766 / 2764 / 374
Регистрация: 01.11.2011
Сообщений: 6,717
Завершенные тесты: 1
03.07.2013, 13:48 #15
Цитата Сообщение от ACTIV1 Посмотреть сообщение
вводить в строчку несколько чисел
cin такого не умеет. Это надо после каждого ввода (нажатия на Enter) врукопашную возвращать в нужную позицию положение курсора.
0
ACTIV1
7 / 1 / 3
Регистрация: 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
ACTIV1
7 / 1 / 3
Регистрация: 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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.07.2013, 18:29
Привет! Вот еще темы с решениями:

Определить, сколько раз каждое число используется в массиве
Вот код: #include &lt;iostream&gt; using namespace std; int main() {...

Определить, сколько цифр содержит число
5 задача во вложение помагите в моём быдло коде количество цифр длинного ряда...

Циклы: каждое простое число последовательности увеличить в два раза, посчитать количество простых чисел
Вводится последовательность из N целых чисел. Каждое простое число...

Дано натуральное число N. Выяснить, сколько положительныхэлементов содержит матрица
Помогите аписать программу на Си, вот условие:Дано натуральное число N....


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

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

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