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

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

Войти
Регистрация
Восстановить пароль
 
Мишутка1
0 / 0 / 0
Регистрация: 24.04.2013
Сообщений: 47
#1

Изменить функцию в обратном порядке - C++

26.04.2013, 08:27. Просмотров 288. Ответов 7
Метки нет (Все метки)

Как изменить функцию в обратном порядке?
вот функция в которую подаёшь вектор состоящий из 8ми элементов и она возвращает элемент типа char, в которую забиты 0 и 1.
C++
1
2
3
4
5
6
7
8
9
10
char ber(vector <bool> fg) 
{
   char byte = 0;
        for(int i = 0; i < fg.size(); ++i) 
        {
            if(fg.at(i))
                byte |= 1 << i; //ВОТ ЭТА СТРОКА МНЕ НЕ ЯСНА(|) ЭТО ОПЕРАНД ПОБИТОВОГО ИЛИ, А БОЛЬШЕ Я НЕ ЗНАЮ
        }
return byte;
}
а теперь мне надо наоборот эту переменную подавать в качестве аргумента функции, а на выходе получать vector<bool> из 8ми элементов.
Я бы и сам сделал, но так и не разобрался как работает строка с операндом (|=)
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.04.2013, 08:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Изменить функцию в обратном порядке (C++):

Сделать шаблонную функцию массива перестановка элементов в обратном порядке - C++
Сделать шаблонную функцию массива перестановка элементов в обратном порядке на С++

Написать на С++ функцию, переставляющую в обратном порядке элементы в односвязном списке - C++
Здравствуйте, помогите пожалуйста Написать на С++ функцию, переставляющую в обратном порядке элементы в односвязном списке

Изменить заданный числовой массив так, чтобы элементы были расположены в нем в обратном порядке - C++
Доброго времени суток. Изменить заданный числовой массив так, чтобы элементы были расположены в нем в обратном порядке. Задача...

Написать функцию, которая выведет цифры заданного числа в обратном порядке - C++
Добрый вечер, очень нужна ваша помощь. В С++ я новичок, самоучка, не хватает знаний. Задача: Написать функцию, которая выведет цифры...

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

Реализовать функцию копирования элементов первого массива во второй в обратном порядке. - C++
1. Создать проект, который содержит консольную программу Win32. 2. Создать два массива на N элементов, размер первого определить неявно...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Tulosba
:)
Эксперт С++
4396 / 3239 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
26.04.2013, 10:29 #2
C++
1
byte |= 1 << i;
эквивалент:
C++
1
byte = byte | 1 << i; // Сдвигаем 1 влево на i, выполняем "или" с byte и результат записываем в byte.
Обратная функция:
C++
1
2
3
4
5
6
7
8
9
10
11
std::vector<bool> reb( uint8_t byte )
{
    std::vector<bool> res;
 
    for( int i=0; i<8; ++i )
    {
        res.push_back( byte >> i & 1 );
    }
 
    return res;
}
1
Мишутка1
0 / 0 / 0
Регистрация: 24.04.2013
Сообщений: 47
26.04.2013, 11:33  [ТС] #3
Цитата Сообщение от Tulosba Посмотреть сообщение
C++
1
byte |= 1 << i;
эквивалент:
C++
1
byte = byte | 1 << i; // Сдвигаем 1 влево на i, выполняем "или" с byte и результат записываем в byte.
Обратная функция:
C++
1
2
3
4
5
6
7
8
9
10
11
std::vector<bool> reb( uint8_t byte )
{
    std::vector<bool> res;
 
    for( int i=0; i<8; ++i )
    {
        res.push_back( byte >> i & 1 );
    }
 
    return res;
}
а что значит ключевое слово (uint8_t) и можете сказать "сдвигаем 1" это подразумевается один элемент или как символ?
0
Tulosba
:)
Эксперт С++
4396 / 3239 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
26.04.2013, 11:38 #4
Цитата Сообщение от Мишутка1 Посмотреть сообщение
а что значит ключевое слово (uint8_t)
uint8_t - это целый беззнаковый тип, который содержит 8 бит (определен в файле cstdint). Использовать char для Ваших целей не очень правильно, т.к. char - это в первую очередь символ, а не просто байт.
Цитата Сообщение от Мишутка1 Посмотреть сообщение
"сдвигаем 1"
берем число 1 (00000001) и сдвигаем влево битовое представление числа, получаем (00000010) 2.
1
Мишутка1
0 / 0 / 0
Регистрация: 24.04.2013
Сообщений: 47
26.04.2013, 11:41  [ТС] #5
Цитата Сообщение от Tulosba Посмотреть сообщение
uint8_t - это целый беззнаковый тип, который содержит 8 бит (определен в файле cstdint). Использовать char для Ваших целей не очень правильно, т.к. char - это в первую очередь символ, а не просто байт.

берем число 1 (00000001) и сдвигаем влево битовое представление числа, получаем (00000010) 2.
я вот собираюсь заново изучать типы данных, так как я с самого начала не до понимаю. В памяти же ведь все типы занимают определенное число байт, т. е. бит, как тогда определяется что в этих ячейках записан символ, или записано число с плавающей точкой. От этого понимания я далёк.
0
Tulosba
:)
Эксперт С++
4396 / 3239 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
26.04.2013, 11:53 #6
Цитата Сообщение от Мишутка1 Посмотреть сообщение
как тогда определяется что в этих ячейках записан символ, или записано число с плавающей точкой.
В языке С++ используется строгая типизация данных, если Вы объявили что-то как символ, оно будет интерпретироваться как символ. Другое дело, что могут быть явные и неявные преобразования, но это уже совсем другая история.
1
Мишутка1
0 / 0 / 0
Регистрация: 24.04.2013
Сообщений: 47
26.04.2013, 11:55  [ТС] #7
Цитата Сообщение от Tulosba Посмотреть сообщение
В языке С++ используется строгая типизация данных, если Вы объявили что-то как символ, оно будет интерпретироваться как символ. Другое дело, что могут быть явные и неявные преобразования, но это уже совсем другая история.
препода говорят наоборот, нет никакого символа есть только 0 и 1. Это тоже самое куда течёт ток. Ну ладно думаю это тема бесконечная и вам мне это не объяснить. Спасибо за функцию.
0
Tulosba
:)
Эксперт С++
4396 / 3239 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
26.04.2013, 11:59 #8
Цитата Сообщение от Мишутка1 Посмотреть сообщение
нет никакого символа есть только 0 и 1.
можно продолжить и сказать, что нет 0 и 1, а есть только сигнал или его отсутствие.
Что есть, а чего нет, зависит от уровня абстракции.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.04.2013, 11:59
Привет! Вот еще темы с ответами:

Разработать функцию, которая переставляет в обратном порядке цифры заданного долгого целого числа - C++
Разработать функцию, которая переставляет в обратном порядке цифры заданного долгого целого числа (например, число 5321 превращается в...

Составить и проверить функцию, которая переставляет цифры заданного целого числа N1 в обратном порядке и получает новое число N2 - C++
8. Составить и проверить функцию, которая переставляет цифры заданного целого числа N1 в обратном порядке и получает новое число N2....

Сортировка массива в порядке возрастания и вывод элементов в обратном порядке - C++
нашла на форуме пару примеров, но они не полные и не запускаются, выбрала из них более менее подходящий, дальше было много вариантов но не...

в обратном порядке - C++
//reverstr.cpp //переворачивает строку #include &lt;iostream&gt; #include &lt;string&gt; //для strlen() #include &lt;locale&gt; using namespace...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
26.04.2013, 11:59
Ответ Создать тему
Опции темы

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