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

Инвертирование группы бит. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Определить, сколько в текстовом файле слов, состоящих не более чем из четырех букв http://www.cyberforum.ru/cpp-beginners/thread521500.html
Помогите написать программу, которая считывает текст из файла и определяет, сколько в нем слов, состоящих из не более чем четырех букв. Только в функции. Буду очень благодарен.
C++ Вычислить математическое ожидание, дисперсию и среднеквадратичное отклонение случайной величины Пусть массив X(N) - массив возможных значений некоторых случайных величин. Составить подпрограмму, которая вычисляет математическое ожидание (Mx), дисперсию (Dx) и среднеквадратичное отклонение (Fx) случайной величины X. M_x= \frac{\sum \limits_{i=1}^{N} X_i}{N} \qquad D_x=\frac{\sum \limits_{i=1}^{N} (X_i-M_x)^2}{N} \qquad F_x=\sqrt{D_x} Для передачи имени массива в подпрограмму ... http://www.cyberforum.ru/cpp-beginners/thread521494.html
Помогите организовать односвязный список! C++
Ребят, помогите пожалуйста организовать односвязный список и вывести его на экран... Вот пример той программы,которую я пытаюсь написать, только вот ничего у меня не получается с организацией и выводом... #include<iostream> #include<conio.h> #include<string.h> #include<stdlib.h> #include<stdio.h> #include<windows.h> using namespace std; struct sportsmen
C++ с++ , курсач, почнительная записка, Rational Roze.
Кто-нибудь делаал курсач по программированию?Я делаю в первый раз. нужна помощь в 4 задании и диаграммой в программе Rational Roze. Вот мой готовый курсач. Кто сможет, то помогите пожалуйста. http://www.cyberforum.ru/cpp-beginners/thread521184.html
C++ Цикл http://www.cyberforum.ru/cpp-beginners/thread521477.html
#include "stdafx.h" #include "conio.h" #include <iostream> #include <fstream> #include <string> using namespace std; struct main_file { int kc; int ku; int tn;
C++ как реализовать программу записная книжка на си++? Фамилия (ключевое поле, имеет уникальные, неповторяющиеся значения), Дата рождения (поле используется для отбора элементов), Номер телефона, Адрес. подробнее

Показать сообщение отдельно
-=ЮрА=-
Заблокирован
Автор FAQ
19.03.2012, 13:09     Инвертирование группы бит.
Цитата Сообщение от kerzh Посмотреть сообщение
Помогите с программой, пожалуйста.
Дана переменная типа long. Написать функцию, которая инвертирует группу из N разрядов переменной, начиная с разряда с номером P (где N и P - целые положительные числа, а нумерация разрядов числа начинается с нуля). Запрещается использование дополнительных переменных. В программе обеспечить ввод исходных данных.
- ниже простой алгоритм на плюсах работающий со строковым представлением бит, просто и наглядно
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
#include <iostream>
using namespace std;
 
int M = sizeof(long)*8;
char * getBits(long val)
{
    char * Bits = new char[M + 1];
    for(int i = 0; i < M; i++)
    {
        Bits[M - i - 1] = '0' + val % 2;
        val             = val / 2;
    }
    Bits[M] = '\0';
    return Bits;
}
 
char * invBits(char * Bits, int P, int N)
{
    for(int i = P, bit; i < P + N + 1; i++)
    {
        bit = Bits[M - i - 1] - '0';
        Bits[M - i - 1] = '0' + !bit;
    }
    return Bits;
}
 
long getNumFromBits(char * Bits)
{
    long pwr = 2;
    long val = (Bits[M - 1] - '0');
    for(int i = 1; i < M; i++)
    {
        val = val + pwr*(Bits[M - i - 1] - '0');
        pwr = pwr*2;
    }
    return val;
}
 
int main()
{
    int N, P;
    long val;
    char * Bits;
    cout<<"enter number : ";cin>>val;
    cout<<"enter N : ";cin>>N;
    cout<<"enter P : ";cin>>P;
    if(M < N + P + 1)
        cout<<"Chislo bitov k invertirovaniu prevoshodit razmer bitov v chisle\n";
    else
    {
        if(!(Bits = getBits(val)))
            cout<<"error get bit mask of number\n";
        else
        {
            cout<<"input  bits in number  : "<<Bits<<endl;
            Bits = invBits(Bits, P, N);
            cout<<"invert bits in number  : "<<Bits<<endl;
            val = getNumFromBits(Bits);
            cout<<"number with invert bits: "<<val<<endl;
            delete [] Bits;
        }
    }
    system("pause");
    return 0;
}
Код проверен http://codepad.org/CnANX3pa
Миниатюры
Инвертирование группы бит.  
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru