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

Написать функцию которая в заданом числе меняет местами два бита с задаными номерами - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вопрос про Swich http://www.cyberforum.ru/cpp-beginners/thread437944.html
Пример: int i=2; switch (i) { case 1: i += 2; case 2: i *= 3; case 0: i /= 2; case 4: i -= 5; default: ; } Выполнение оператора switch начинается с оператора, помеченного case 2. Таким образом, переменная i получает значение, равное 6, далее выполняется оператор, помеченный ключевым словом case 0, а затем case 4, переменная i примет значение 3, а затем значение -2. Оператор, помеченный...
C++ Что за тип переменной ofstream ? Когда создается файл: ofstream A(""); Какой тип переменной A ? И как передавать его в функцию? http://www.cyberforum.ru/cpp-beginners/thread437939.html
C++ Что можно не устанавливать в VS 2008
Хочу сэкономить память, и вот хотел спросить что нужно для разработки С++ приложений, в том числе и с графическим интерфейсом скрин , и что можно не устанавливать
Удалить первый элемент с заданным значением. C++
Удалить первый элемент с заданным значением. #include<iostream.h> #include<stdlib.h> #include<math.h> void main () { int n, i, x; cout<<"Vvedite n ";
C++ Не работает функция ввода массива http://www.cyberforum.ru/cpp-beginners/thread437889.html
У меня стоит задача вводить массива с клавиатуры размера M на N, с проверкой на диапазон. Вот мой код функции: void input (short mas ,int r,int c) { for (int i=0;i<r;i++) { for (int j=0;j<c;j++) { do { cout << "Введите элемент " << i << " - строки " << j << " - столбца\n";
C++ Касательно указателей и ссылок. Цитирую фразу из популярной ныне книги Айвора Хортона. "Никогда не возвращайте из функции ссылку на локальную переменную" Так вот. Не понятно почему так категорично все. По моему даже оч. удобно создать лок. переменную, присвоить ей ссылку на объект. поработать с ним. переменную удалить. Я вот подобным образом свою программу делаю. Озадачила меня эта вот фраза. Прошу помощи в разъяснении... подробнее

Показать сообщение отдельно
AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
30.01.2012, 16:41     Написать функцию которая в заданом числе меняет местами два бита с задаными номерами
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
unsigned int quad(unsigned int num)
{
    unsigned int val = 0;
    if(num==0) 
        {return 1;}
    return val = quad(--num)*2;
};
 
int changebit(int num, int bit1=0, int bit2 = 0)
{
    char buf [15];
    itoa(num,buf,2);
 
    int lent = strlen(buf);
    bit1 = lent-1-bit1;//здесь жучок был. -1 надо еще отнимать было
    bit2 = lent-1-bit2;//теперь работает
 
        if(bit1<0||bit1>31||bit2<0||bit2>31)return num;
 
    char tmp = buf[bit1];
    buf[bit1] = buf [bit2];
    buf[bit2]= tmp; 
    int val = 0;
    int step = lent-1;
 
    for(int i = 0; i<lent;i++,step--)
    {
 
        if(buf[i]!='0')
        {
            val+=quad(step);
        }
 
    }
    
    return val;
};
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru