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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Действия со списком http://www.cyberforum.ru/cpp-beginners/thread1003355.html
Здравствуйте. Проблема-работает только ввод строки, когда пытаюсь вывести на экран или еще что-нибудь сделать со строкой то закрывает программу. Помогите, пожалуйста) Вот задание: Выполнение лабораторной работы Создать Класс1, который должен содержать конструктор, деструктор, а также методы извлечения и установки данных. Создать класс Список, где каждый элемент представляет собой объект...
C++ найти в тексте все гласные буквы Всем привет, подскажите как реализовать данную задачку, найти в тексте все гласные буквы http://www.cyberforum.ru/cpp-beginners/thread1003350.html
FTLK из учебника C++
Ребят может кто подробно написать как интегрировать FTLK , в VS2012 ? уже много чего перерыл не как не могу разобратся Добавлено через 5 часов 20 минут Немного разобрался теперь вышла ошибка ..... в этом коде #include <Simple_window.h> #include <Graph.h> int main() { using namespace Graph_lib;
Удалить столбец матрицы с минимальным номером, в котором все элементы неположительны и упорядочены по возраста C++
Задача: Задана матрица A целых чисел размера N × M (N, M ≤ 20, N и M задаются как параметры). Преобразовать ее в матрицу B путем удаления столбца этой матрицы с минимальным номером, в котором все элементы неположительны и упорядочены по возрастанию. код: #include<stdio.h> #include<locale.h> #define N 20 #define M 20 void main() {
C++ Специализация шаблона http://www.cyberforum.ru/cpp-beginners/thread1003281.html
Здравствуйте! Задача: Создайте шаблонную функцию maxn(), которая принимает в качестве аргумента массив элементов типа Т и целое число, представляющее собой количество элементов в массиве, и возвращает элемент с наибольшим значением. Проверьте ее в программе, которая использует шаблон данной функции с массивом из шести значений типа int и с массивом из четырех значений типа double. Программа...
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
 Аватар для lemegeton
2908 / 1337 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
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 Посмотреть сообщение
что означают << и >>
Это битовые операторы сдвига.
 
Текущее время: 14:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru