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

Подскажите пожалуйста как написать реализацию алгоритма - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Действия со списком http://www.cyberforum.ru/cpp-beginners/thread1003355.html
Здравствуйте. Проблема-работает только ввод строки, когда пытаюсь вывести на экран или еще что-нибудь сделать со строкой то закрывает программу. Помогите, пожалуйста) Вот задание: Выполнение...
C++ найти в тексте все гласные буквы Всем привет, подскажите как реализовать данную задачку, найти в тексте все гласные буквы http://www.cyberforum.ru/cpp-beginners/thread1003350.html
FTLK из учебника C++
Ребят может кто подробно написать как интегрировать FTLK , в VS2012 ? уже много чего перерыл не как не могу разобратся Добавлено через 5 часов 20 минут Немного разобрался теперь вышла ошибка...
Удалить столбец матрицы с минимальным номером, в котором все элементы неположительны и упорядочены по возраста C++
Задача: Задана матрица A целых чисел размера N × M (N, M ≤ 20, N и M задаются как параметры). Преобразовать ее в матрицу B путем удаления столбца этой матрицы с минимальным номером, в котором все...
C++ Специализация шаблона http://www.cyberforum.ru/cpp-beginners/thread1003281.html
Здравствуйте! Задача: Создайте шаблонную функцию maxn(), которая принимает в качестве аргумента массив элементов типа Т и целое число, представляющее собой количество элементов в массиве, и...
C++ Перегрузка оператора + String String::operator + (String & sg2) { String tmp; tmp.str = new char ; strcpy (tmp.str, str); strcat (tmp.str, sg2.str); return tmp; } Собственно вопрос: как вернуть tmp? Насколько... подробнее

Показать сообщение отдельно
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
11.11.2013, 08:44
Цитата Сообщение от M1kloFFi Посмотреть сообщение
Не могли бы вы мне объяснить как функция int getOperation(long permutation, int position) выбирает знак?
Так как знаков всего четыре, то для выражения каждого знака необходимо и достаточно ровно 2-х бит, а для хранения пяти знаков потребуется ровно 10 бит. Это очень хорошо, так как позволит легко и непринужденно перебрать все варианты расстановки знаков с помощью чисел от нуля до 1024 (5 в степени 4), где каждое число означает уникальный вариант перестановки. Переменная permutation (перестановка) и хранит вариант перестановки знаков.

Например, 0 в бинарном виде будет "00 00 00 00 00", что даст нам "++++"; 1 в бинарном виде "00 00 00 00 01" это "+++-", 2 -- "00 00 00 00 10" -- "+++\" и так далее до 1024 -- "11 11 11 11 11" -- "*****".

Цитата Сообщение от M1kloFFi Посмотреть сообщение
как функция int getOperation(long permutation, int position) выбирает знак?
Функция выбирает знак на позиции position из перестановки (permutation) путем вычленения пары бит на позиции position и position + 1.

Делает это она так.
Например, у нас перестановка (permutation) "11 01 10 10 00" ("*-\\+") и мы хотим взять третий знак (premutation = 2).
Создается пара бит на этой позиции с помощью сдвига двух бит влево
(3 << (position * 2)) == "00 00 11 00 00"
Затем применяется битовая операция "И" с перестановкой и полученным выше числом, отсекая ненужные биты:
"11 01 10 10 00" & "00 00 11 00 00" == "00 00 10 00 00"
Затем полученное сдвигается вправо на position * 2 бит, чтобы получить число от нуля до трех:
"00 00 10 00 00" >> (position * 2) == "00 00 00 00 10" (число "2").

Цитата Сообщение от M1kloFFi Посмотреть сообщение
что означают << и >>
Это битовые операторы сдвига.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru