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

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

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

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

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

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

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

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

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

Посчитать, сколько слов содержит текст произвольной длины. - C++
Посчитать сколько слов, содержит текст поисзвольной длины. Разделителем между словами является символ пробела. Вывести на экран список всех...

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

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

16
Thinker
Эксперт С++
4227 / 2201 / 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;
}
2
ValeryS
Модератор
6679 / 5088 / 475
Регистрация: 14.02.2011
Сообщений: 17,077
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 / 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;
}
Спасибо большое, но можешь весь код программы скинуть?А то я не разберусь(((
0
Thinker
Эксперт С++
4227 / 2201 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
03.07.2013, 13:02 #5
Цитата Сообщение от ACTIV1 Посмотреть сообщение
весь код программы скинуть?А то я не разберусь
это же практика у вас, вот и повод разобраться вызывайте эту функцию для каждого элемента массива, делов то

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

Добавлено через 52 секунды
Цитата Сообщение от Thinker Посмотреть сообщение
зато как красиво она позволяет писать программы
да
но какие нагрузки на стек
0
Thinker
Эксперт С++
4227 / 2201 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
03.07.2013, 13:04 #7
Цитата Сообщение от ValeryS Посмотреть сообщение
да
но какие нагрузки на стек
ну, это понятно, зато когда можно и так и так, то это же здорово
0
ACTIV1
7 / 1 / 0
Регистрация: 02.04.2013
Сообщений: 68
03.07.2013, 13:07  [ТС] #8
Почему не поможет?)))Очень поможет, сделаю отчёт и сдам, и поеду раньше домой.....будьте добры помочь))))
0
Thinker
Эксперт С++
4227 / 2201 / 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)
   ;
0
ValeryS
Модератор
6679 / 5088 / 475
Регистрация: 14.02.2011
Сообщений: 17,077
03.07.2013, 13:28 #10
Цитата Сообщение от Thinker Посмотреть сообщение
ладно, вот итерация
уломал, чертяка
только чем твой for отличается от моего while ?
кроме формы записи
сильно подозреваю,что сгенерится один и тот же код
0
Thinker
Эксперт С++
4227 / 2201 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
03.07.2013, 13:30 #11
Цитата Сообщение от ValeryS Посмотреть сообщение
только чем твой for отличается от моего while ?
количеством строчек
0
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;
}
0
ValeryS
Модератор
6679 / 5088 / 475
Регистрация: 14.02.2011
Сообщений: 17,077
03.07.2013, 13:35 #13
Цитата Сообщение от ACTIV1 Посмотреть сообщение
как сделать, чтобы можно было вводить в строчку несколько чисел(именно сам цифровой массив)
а массив то у тебя где?
0
ACTIV1
7 / 1 / 0
Регистрация: 02.04.2013
Сообщений: 68
03.07.2013, 13:42  [ТС] #14
Ну как я понял, вводится число n, это и есть моё ОДНО число.
0
SatanaXIII
Супер-модератор
Эксперт С++
5616 / 2651 / 246
Регистрация: 01.11.2011
Сообщений: 6,534
Завершенные тесты: 1
03.07.2013, 13:48 #15
Цитата Сообщение от ACTIV1 Посмотреть сообщение
вводить в строчку несколько чисел
cin такого не умеет. Это надо после каждого ввода (нажатия на Enter) врукопашную возвращать в нужную позицию положение курсора.
0
03.07.2013, 13:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.07.2013, 13:48
Привет! Вот еще темы с ответами:

Определить, сколько раз каждое число используется в массиве - C++
Вот код: #include &lt;iostream&gt; using namespace std; int main() { //двухмерный массив int numbers = {{1, 2, 7} , {2, 5, 3},...

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

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

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


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

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

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