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

Циклический сдвиг, где подвох? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вычислить сумму всех чисел Фибоначчи, которые не превосходят 100 http://www.cyberforum.ru/cpp-beginners/thread771935.html
Здравствуйте. Помогите, пожалуйста, в написании алгоритма на C++. Числа Фиббоначчи { F } определяются по формулам F = F = 1; F = F + F при i = 1, 2, 3, ... (каждое очередное число равно сумме двух...
C++ Дана последовательность, элементы которой есть целые двузначные числа. Упорядочить последовательность по убыванию произведений цифр Здравствуйте. На форуме есть код подобный, но по возрастанию сумм элементов. Как мне подправить код, чтобы было "по убыванию произведений цифр соответствующих эл-тов"? Спасибо заранее добрым людям!... http://www.cyberforum.ru/cpp-beginners/thread771928.html
C++ Помогите исправить ошибку в коде (fatal error LNK1120: unresolved externals) я новичек
Народ, всем доброго вечера! помогите пожалуйста найти линк еррор. Вот мой код // SavingsAccount.h #ifndef SAVINGSACCOUNT_H #define SAVINGSACCOUNT_H class SavingsAccount { public:...
C++ Поиск максимального элемента массива
Всем вечер добрый Вот моя ситуация: дано два одномерных массива А и Б допустим как мне найти максимальный G если G=a*a+b*b как записать условие ?
C++ Немножко переделать программу http://www.cyberforum.ru/cpp-beginners/thread771884.html
Хочу переделать программу, которая переводит из 16 сс в 10, чтобы переделывала из 16 в 8, как я понимаю, дело кроется в этих циклах (нужно поменять цифровые значения исходя из данных таблицы ASCII):...
C++ Правильный ответ? Доброго всем времени суток! Возникли вопросы, помогитеб пожалуйста: 1) Возможно ли, что member функция класса to activate (call) другую member функцию тогоже класса: - нет; - да, если public;... подробнее

Показать сообщение отдельно
T-L-oleg
0 / 0 / 0
Регистрация: 26.01.2013
Сообщений: 5

Циклический сдвиг, где подвох? - C++

26.01.2013, 01:36. Просмотров 617. Ответов 8
Метки (Все метки)

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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
/*
Проект 7-1
Функции циклического сдвига байта влево и вправо.
*/
 
#include<iostream>
 
using namespace std;
 
char lrotate(unsigned int val, int n);
char rrotate(unsigned int val, int n);
void show_binary(unsigned int u);
 
int main()
{
    setlocale(LC_CTYPE, "russian");
 
    char ch = 'T';
 
    cout << "Исходное значение в двоичном коде:\n";
    show_binary(ch);
 
    cout << "Циклический сдвиг вправо 8 раз:\n";
    for(int i = 0; i < 8; i++)
    {
        ch = rrotate(ch, 1);
        show_binary(ch);
    }
 
    cout << "Циклический сдвиг влево 8 раз:\n";
    for(int i = 0; i < 8; i++)
    {
        ch = lrotate(ch, 1);
        show_binary(ch);
    }
 
    return 0;
}
 
char lrotate(unsigned int val, int n)
{
    unsigned int t;
 
    t = val;
 
    for(int i = 0; i < n; i++)
    {
        t = t << 1;
 
        if(t & 256)
            t = t | 1;
    }
 
    return t;
}
 
char rrotate(unsigned int val, int n)
{
    unsigned int t;
 
    t = val;
 
    t = t << 8;
 
    for(int i = 0; i < n; i++)
    {
        t = t >> 1;
 
        if(t & 128)
        {
            t = t | 32768;
        }
    }
 
    t = t >> 8;
 
    return t;
}
 
void show_binary(unsigned int u)
{
    int t;
 
    for(t = 128; t > 0; t = t / 2)
        if(u & t) cout << "1 ";
        else cout << "0 ";
 
        cout << "\n";
}
Беда в том что результат такой:

Исходное значение в двоичном коде:
0 1 0 1 0 1 0 0
Циклический сдвиг вправо 8 раз:
0 0 1 0 1 0 1 0
0 0 0 1 0 1 0 1
1 0 0 0 1 0 1 0
1 1 0 0 0 1 0 1
1 1 1 0 0 0 1 0
1 1 1 1 0 0 0 1
1 1 1 1 1 0 0 0
1 1 1 1 1 1 0 0
Циклический сдвиг влево 8 раз:
1 1 1 1 1 0 0 1
1 1 1 1 0 0 1 1
1 1 1 0 0 1 1 1
1 1 0 0 1 1 1 1
1 0 0 1 1 1 1 1
0 0 1 1 1 1 1 1
0 1 1 1 1 1 1 0
1 1 1 1 1 1 0 0
Для продолжения нажмите любую клавишу . . .

В чем загвостка? Беда только в rrotate().
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru