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

Написать функцию которая в заданом числе меняет местами два бита с задаными номерами - 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. Таким образом,...
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...
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;
};
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru