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

Работа с битами - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Определить взаимное расположение точки с координатами (х0,y0) и окружности радиуса R с центром в точке (х1,у1) http://www.cyberforum.ru/cpp-beginners/thread307226.html
Определить взаимное расположение точки с координатами (х0,y0) и окружности радиуса R с центром в точке (х1,у1) Решите пожалуйста задачку очень прошу!!! зараннее благодарен!!!
C++ Двусвязные списки Сформировать двусвязный список и выполнить: Структура содержит фамилию и 4 оценки. Удалить из списка неуспевающих. Наррооод!!! Спасите, плиз, моя последняя лабораторная.... http://www.cyberforum.ru/cpp-beginners/thread307223.html
Построения на плоскости C++
Вечер добрый, не могу собрать с помощью make: Во вложении задание. #include "glut.h" #include "stdio.h" void init() { glViewport(0,0,(GLsizei)width, (GLsizei)height); glMatrixMode(GL_PROJECTION); glLoadIdentity();
класс прямоугольник. C++
Здравствуйте! Помогите пожалуйста исправить ошибки. Задача:нарисовать прямоугольник(длины сторон вводятся с клавиатуры),вычислить его площадь и периметр. #include <iostream> #include <iomanip> using namespace std; class Rectangle { public: Rectangle (double =1.0, double =1.0); ~Rectangle() {} void setLength(double);
C++/CLI WinForms Работа в форме со строками http://www.cyberforum.ru/cpp-beginners/thread307208.html
Как реверсировать строку(вывести в обратном порядке) в label при нажатии на кнопку строка считывается с textbox!Знаю как в обычном string,а там же System::String,подскажите кто знает!
C++ Шифрование строк [Метод XOR] Некорректное шифрование строк. Шифрование проводится с помощью метода XOR. // Использование XOR для шифрования и расшифровки сообщения. #include <iostream> #include <cstring> #include <cstdio> using namespace std; int main() подробнее

Показать сообщение отдельно
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
28.05.2011, 22:44     Работа с битами
Не могу понять, почему не правильно работает программа.
Программа зашифровывает строку, выводит, потом расшифровывает и выводит.
Принцип шифрования:
Функция leftORright шифрует один байт информации, используя циклический сдвиг всех битов влево или вправо на N разрядов.
Составить функцию, шифрующую строку символов и расшифровывающую эту строку с помощью составленной функции leftORright.
Попробуйте ввести t1. Не знаю правильно ли шифрует цифру 1, но расшифровывает правильно, а вот букву t расшифровывает не правильно.
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
#define LEN 10
#include "string.h"
#include "iostream"
#include "iomanip"
#include "conio.h"
using namespace std;
void sdvigVlevo(char& s)
{
    if(s&(1<<7))
    {
        s<<=1;
        s|=1;
    }
    else
        s<<=1;
}
 
void sdvigVpravo(char& s)
{
    if(s&1)
    {
        s>>=1;
        s|=1<<7;
    }
    else
        s>>=1;
 
}
 
void leftORright(char& s, int N, int vibor)
{
    if(vibor == 0)
    {
        for(int i = 0 ; i<N; ++i)
            sdvigVlevo(s);
    }
    else
    {
        for(int i = 0 ; i<N; ++i)
            sdvigVpravo(s);
    }
}
 
 
void sposob1(char* str, int N, int vibor)
{
    char* cpystr = str;
 
    for(;*str; ++str)
        leftORright(*str,N,vibor);
    cout << cpystr<<endl;
    str = cpystr;
    for(;*str; ++str)
        leftORright(*str,N,!vibor);
    cout << cpystr;
 
 
}
int main(void)
{
    setlocale(LC_ALL,"rus");
    char str[LEN];
    int vibor, N;
    cout << "Введите строку символов: ";
    cin >> str;
    do
    {
        cout << "Введите 0, чтобы сдвинуть биты в лево.\nВведите 1, чтобы сдвинуть в право.\n";
        cin >> vibor;
    }while(vibor!= 0 && vibor!= 1);
    do
    {
        cout << "Введите N.\n";
        cin >> N;
    }while(N<=0);
 
    sposob1(str,N,vibor);
        
    _getch();
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 19:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru