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

Решето Ератосфена - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Не могу разобраться. Мат логика http://www.cyberforum.ru/cpp-beginners/thread955875.html
Задание №1. Написать программу для реализации следующего алгоритма определения является ли данная строка символов пропозициональной формулой или нет: шаг 1. Проверка скобочного итога формулы. шаг 2. Создать образы формул из правил 2 и 3. шаг 3. Начиная с первого образа произвести замену всех их вхождений в строку символов на пропозициональную переменную. шаг 4. Продолжать шаг 3, пока не будет...
C++ Написать функцию Procent Написать функцию Procent, которая возвращает процент от полученного в качестве аргумента числа. Очень прошу помочь, завтра последний день сдачи практики, а я никак не могу успеть. Ибо я буду писать этот код часов 5 т.к. плохо разбираюсь в С++. Заранее благодарен. P.S. написать надо в Вижуал с++ http://www.cyberforum.ru/cpp-beginners/thread955866.html
C++ Не понимаю код
Помогите пожалуйста разобратся в коде Код который с помощью алгоритма "Решето Эратосфена" подсчитывает все простые числа в диапазоне от 2 до 2 000 000 и подсчитывает время выполнения для заданного диапазона. Код не мой, помогите пожалуйста разобраться #include <iostream> #include <ctime> using namespace std; template<int N> class bitset {
не получается составить алгоритм Шелла C++
В файле input.xtx содержатся сведения о группе студентов в формате: запись о каждом студенте группы, которая содержит следующие сведения:фамилия, имя, отчество, год рождения, оценки по пяти предметам. Переписать данные файла input.txt в output.txt, отсортировав их: в алфавитном порядке по фамилии, а затем по убыванию года рождения алгоритмом Шелла #include <iostream> #include <fstream>...
C++ Разкодировка строки http://www.cyberforum.ru/cpp-beginners/thread955859.html
Имеется задача: Шифровка (Время: 1 сек. Память: 16 Мб) Разведкой был перехвачен ряд шифровок, которые передавал Джеймс Бонд. Известно, что каждое послание зашифровано методом циклического сдвига. Суть которого в том, что каждая буква заменяется на букву, отстоящую в алфавите от первой на определенном расстоянии. Это расстояние называется знаменателем шифра. Так, при знаменателе шифра 2 буква D...
C++ найти значение функции Помогите пожалуйста!! Для каждого x, изменяющегося от a до b с шагом h, найти значения функции Y(x), суммы S(x) и |Y(x)–S(x)| и вывести в виде таблицы. Значения a, b, h и n вводятся с клавиатуры. Так как значение S(x) является рядом разложения функции Y(x), при правильном решении значения S и Y для заданного аргумента x (для тестовых значений исходных данных) должны совпадать в целой части и в... подробнее

Показать сообщение отдельно
ValeryS
Модератор
6373 / 4839 / 440
Регистрация: 14.02.2011
Сообщений: 16,039
16.09.2013, 21:39     Решето Ератосфена
ну вот например
Цитата Сообщение от o33ik Посмотреть сообщение
bool test(int n)
* * {
* * * * return (bits[n >> 3] & (1 << (n & 7))) != 0;
* * }
в одном байте у тебя упаковано 8 бит
надо например проверить 20
в каком байте он лежит ?
20/8=2 значит в третьем(отсчет идет с 0)
n >> 3 это и есть делить на 8
берем это байт из массива
bits[n >> 3] получится bits[2]
там лежит 8 бит какой нам нужен?
берем остаток от деления на 8
20%8=4 (пятый бит отсчет тоже от 0)
n & 7 это остаток деления на 8
допустим там 1 вот так выглядит байт ххх1хххх(х это безразлично какое значение)
берем 1 сдвигаем её на 4
1 << (n & 7)) получаем 00010000
потом это число и байт производим операцию "И" (выделяем бит)
х х х 1 х х х х
0 0 0 1 0 0 0 0
-----------------
0 0 0 1 0 0 0 0
полученное число сравниваем с 0
0 0 0 1 0 0 0 0 не равно 0? да(true)
возвращаем true
вот так можно переписать эту функцию
C++
1
2
3
4
5
6
7
8
9
10
bool test(int n) 
{ 
 int tmp1=n/8;
 int tmp2=n%8;
 unsigned char bt1=bits[tmp1];
 unsigned char bt2=0x01<<tmp2;
 unsigned char bt3=bt1&bt2;
 bool bl=bt3!=0;
 return bl;
}
так более понятно?
 
Текущее время: 19:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru