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

Побитовые сдвиги - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Лежит ли треугольник внутри окружности радиуса R http://www.cyberforum.ru/cpp-beginners/thread921717.html
Спасите пожалуйста... очень нужна эта прога... знаю, что самое элементарное, но все же... само задание: Заданы координаты вершин треугольника (x1,y1), (x2,y2), (x3,y3). Определить, лежит ли...
C++ приложение для создания файлов C++ (я начинающий, не судите строго) #include <iostream> #include <fstream> #include <windows.h> using namespace std; int main() { SetConsoleOutputCP(1251); char nach={"#include <iostream>\n#include <windows.h>\nusing namespace... http://www.cyberforum.ru/cpp-beginners/thread921712.html
Можно ли использовать такую конструкцию? C++
Здраствуйте! Нужно ввести несколько работником тоесть их ФИО и зарплату. Можно ли использовать для ввода ФИО работников двумерный массив string и работать с ним? Потом еще надо будет отсортировать...
Как в C++ присвоить массив? C++
у меня есть следующий код: ... bool next_world,, world; ... world = next_world; Однако компилятор (gcc) ругается на подобное присвоение:
C++ numeric_limits и int8_t http://www.cyberforum.ru/cpp-beginners/thread921662.html
Eсли скомпилировать и запустить auto max = numeric_limits<int8_t>::max(); cout << max << endl << sizeof(max) << endl; std::bitset<8> x(max); std::cout << x; То получаю вывод:...
C++ Существует ли элемент в "сложном" векторе Здравствуйте, недавно столкнулся с такой проблемой Есть такая структура и последующий вектор: struct cell { char symbol; int x; int y; }; подробнее

Показать сообщение отдельно
Thinker
Эксперт С++
4227 / 2201 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
11.07.2013, 20:08
ну, напридумывать таких функций кучу можно:
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include<iostream>
 
// через итерацию
int Count1(char c, int n)
{
   int i, count;
   for(i = count = 0; i < n; ++i)
   {
      count += (c & 1);
      c >>= 1;
   }
   return count;
}
 
// через рекурсию (для неотрицательных чисел)
int Count2(unsigned char c)
{
   return c ? (c & 1) + Count2(c >> 1) : 0; 
}
 
// метод "разделяй и властвуй"
int Count3(char c, int l, int r)
{
   return l == r ? ((c >> l) & 1) : Count3(c, l, (l+r)/2) + Count3(c, (l+r)/2 + 1, r);  
}
 
// рекурсия для знаковых и беззнаковых чисел
int Count4(char c, int n)
{
   return n ? ((c >> (n-1)) & 1) + Count4(c, n - 1) : 0;    
}
 
int main()
{
   char c = 5;
   std::cout << Count1(c, sizeof(c)*8) << std::endl;
   std::cout << Count2(c) << std::endl;
   std::cout << Count3(c, 0, sizeof(c)*8 - 1) << std::endl;
   std::cout << Count4(c, sizeof(c)*8) << std::endl;
   return 0;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru