Форум программистов, компьютерный форум 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, ... (каждое очередное число равно сумме двух предыдущих). Правилен ли этот алгоритм? unsigned fibonnachi(unsigned a, unsigned b) { if (0 == a) {
C++ Дана последовательность, элементы которой есть целые двузначные числа. Упорядочить последовательность по убыванию произведений цифр Здравствуйте. На форуме есть код подобный, но по возрастанию сумм элементов. Как мне подправить код, чтобы было "по убыванию произведений цифр соответствующих эл-тов"? Спасибо заранее добрым людям! #include <iostream> #include <conio.h> #include <math.h> using namespace std; void main() { int A,buff; 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: SavingsAccount(float = 0); void calculateMonthlyInterest();
C++ Поиск максимального элемента массива
Всем вечер добрый Вот моя ситуация: дано два одномерных массива А и Б допустим как мне найти максимальный G если G=a*a+b*b как записать условие ?
C++ Немножко переделать программу http://www.cyberforum.ru/cpp-beginners/thread771884.html
Хочу переделать программу, которая переводит из 16 сс в 10, чтобы переделывала из 16 в 8, как я понимаю, дело кроется в этих циклах (нужно поменять цифровые значения исходя из данных таблицы ASCII): for (i=0;a!='.'&&i<n;i++) { z=a-'0'; if (z==-3) {z=0;s=-1;} else if (z>=17&&z<=42) z-=7; else if (z>=49&&z<=74) z-=39; ...
C++ Правильный ответ? Доброго всем времени суток! Возникли вопросы, помогитеб пожалуйста: 1) Возможно ли, что member функция класса to activate (call) другую member функцию тогоже класса: - нет; - да, если public; - да, если private; - да, для public and private. 2) Могут ли 2 класса содержать member функцию с одним и тем же именем? - нет; подробнее

Показать сообщение отдельно
vua72
414 / 414 / 85
Регистрация: 28.11.2010
Сообщений: 1,175
Завершенные тесты: 1
26.01.2013, 12:58     Циклический сдвиг, где подвох?
я бы так делал и не мешал рамерности и типы данных
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
/*
Проект 7-1
Функции циклического сдвига байта влево и вправо.
*/
#include<iostream>
using namespace std;
 
unsigned char lrotate(unsigned char val, unsigned char n);
unsigned char rrotate(unsigned char val, unsigned char n);
void show_binary(unsigned char u);
 
int main()
{
    setlocale(LC_CTYPE, "russian");
    unsigned char ch = 0x07;
    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;
}
unsigned char lrotate(unsigned char val, unsigned char n)
{
    unsigned char t=val;
    for(unsigned char i = 1; i <= n; ++i) {
        t & 0x80 ? (t<<=1)|=0x01 : (t<<=1)|=0x00;
        }
    
    return t;
}
unsigned char rrotate(unsigned char val, unsigned char n)
{
    unsigned char t=val;
    for(unsigned char i = 1; i <= n; ++i) {
        t & 0x01 ? (t>>=1)|= 0x80 : (t>>=1) &= 0x7f ;
    }
    return t;
}
void show_binary(unsigned char u)
{
    unsigned char t;
    for(t = 0x80; t > 0; t >>= 1)
        if(u & t) cout << "1 ";
        else cout << "0 ";
    cout << "\n";
}
Добавлено через 1 минуту
не нравятся тернарные операторы - замените на if();
 
Текущее время: 22:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru