С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 09.01.2017
Сообщений: 25

Реализовать скремблер: в выходном файле пишется только первый байт

13.06.2017, 12:19. Показов 2120. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго. Не получается реализовать скремлер. В выходном файле только первый байт записывается(вроде), а все остальное - xFF.
Подскажите, где ошибка?
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#include <iostream>
#include <conio.h>
#include <fstream>
 
using namespace std;
 
//#pragma warning(default : 4996)
 
/* *
 * ������� ����������� ������� ������.
 * */
 
char lfsr(char bit,int& reg)
{
 
    char bit_result, bit_reg;
    bit_reg = ((reg & 0x1) ^ ((reg >> 3) & 0x1) ^ ((reg >> 20) & 0x1)) & 0x1 ;
    // bit_reg = (reg ^ (reg >> 3) ^ (reg >> 20)) & 0x1
 
    bit_result = bit_reg ^ bit;
 
    reg << 1;
    reg = reg | bit_result;
 
    return bit_result;
}
 
/* *
 * ������ �������� ������������������ � ����.
 * */
void fileWrite(char* byte, int N)
{
    ofstream fout;
    fout.open("Two.txt", ios_base::binary | ios_base::app);
    for(int i = 0; i < N; i++)
    {
        fout << byte[i];
    }
 
    fout.close();
 
}
 
/* *
 * ������ ������������������ �� ����� � �� ���������������.
 * */
void scram(int& reg)
{
 
    char* buff = 0, *result = 0;
 
    ifstream fin("One.txt", ios_base::binary);
    streamoff size = 0;
 
    //��������� ������ �����
    fin.seekg(0, ios::end);
    size = fin.tellg();
 
    //�������� ������ � ��������� ������ �� �����
    buff = new char[size];
    result = new char[size];
    buff[0] = 0;
    result[0] = 0;
 
 
    while(!fin.eof())
    {
        int i;
        for(i = 0; i < size; i++)
            fin.get(buff[i]);
 
    }
    fin.close();
    for(int i = 0; i < size; i++)
        cout << buff[i];
 
    for(int i = 0; i < size; i++)
    {
        for(int j = 0; j < 8; j++)
        {
            char tmp = buff[i];
            tmp >> j;
            tmp = tmp & 0x1;
            tmp = lfsr(tmp, reg);
 
      //������ ����� �� ������ � ������
            result[i] = result[i] | (tmp << j);
        }
    }
    fileWrite(result, size);
 
}
 
int main()
{
    static int shiftRegister = 0;
    scram(shiftRegister);
 
 
    return 0;
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.06.2017, 12:19
Ответы с готовыми решениями:

QtSerialPort передает только первый байт?
Пишу на qt4.8, собрал под него библиотеку QtSerialPort, пишу такой код QByteArray message; message.resize(7); message =...

В файле удалить номера участников, оставив фамилию, имя в выходном файле
Нужна помощь в написании программы. Смысл программы таков: В входном текстовом документе, дан текст, вида: 412123412|pervii uchastnik; ...

MailSlot клиент-сервер передает нужное количество байт, а выводит — только первый символ
Есть MailSlot сервер (написал на консоле, ведь не принципиально). Есть MailSlot клиент - написал на WinAPI. Вводим в edit-поле данные,...

7
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
13.06.2017, 14:09
После 56-й строки перемести указатель к началу файла.

Добавлено через 1 минуту
И выбрось eof() - много раз говорил.
0
0 / 0 / 0
Регистрация: 09.01.2017
Сообщений: 25
14.06.2017, 17:38  [ТС]
Выбросить eof(), это в смысле оставить цикл без условия?

Добавлено через 16 минут
И вместо
C++
1
fin.seekg(0, ios::end)
Написать
C++
1
fin.seekg(0, ios::beg)
?? Или отдельно перемещать?
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
14.06.2017, 17:58
Лучший ответ Сообщение было отмечено mOops как решение

Решение

Цитата Сообщение от mOops Посмотреть сообщение
Выбросить eof(), это в смысле оставить цикл без условия?
Вот всё, что нужно:
C++
1
2
fin.seekg(0);
fin.read(buff, size);
1
0 / 0 / 0
Регистрация: 09.01.2017
Сообщений: 25
14.06.2017, 23:22  [ТС]
Если делаю, как вы сказали, то в выходном файле пусто.
А при отладке увидел, что size остаётся равным 0
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
15.06.2017, 08:19
Актуальный вариант покажи.
0
0 / 0 / 0
Регистрация: 09.01.2017
Сообщений: 25
15.06.2017, 16:43  [ТС]
Так все считает, но на выходе опять 00 в перемешку c FF
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#include <iostream>
#include <conio.h>
#include <fstream>
 
using namespace std;
 
//#pragma warning(default : 4996)
 
/* *
 * пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ.
 * */
 
char lfsr(char bit,int& reg)
{
 
    char bit_result, bit_reg;
    bit_reg = ((reg & 0x1) ^ ((reg >> 3) & 0x1) ^ ((reg >> 20) & 0x1)) & 0x1 ;
    // bit_reg = (reg ^ (reg >> 3) ^ (reg >> 20)) & 0x1
 
    bit_result = bit_reg ^ bit;
 
    reg << 1;
    reg = reg | bit_result;
 
    return bit_result;
}
 
/* *
 * пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅ пїЅпїЅпїЅпїЅ.
 * */
void fileWrite(char* byte, int N)
{
    ofstream fout;
    fout.open("Two.txt", ios_base::binary | ios_base::app);
    for(int i = 0; i < N; i++)
    {
        fout << byte[i];
    }
 
    fout.close();
 
}
 
/* *
 * пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅ пїЅпїЅпїЅпїЅпїЅ пїЅ пїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ.
 * */
void scram(int& reg)
{
 
    char* buff = 0, *result = 0;
 
    ifstream fin("One.txt", ios_base::binary);
    streamoff size = 0;
 
    //пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ
    fin.seekg(0, ios::end);
    size = fin.tellg();
 
    //пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅ пїЅпїЅпїЅпїЅпїЅ
    buff = new char[size];
    result = new char[size];
    buff[0] = 0;
    result[0] = 0;
 
    fin.seekg(0);
    fin.read(buff, size); 
    fin.close();
    for(int i = 0; i < size; i++)
        cout << buff[i];
 
    for(int i = 0; i < size; i++)
    {
        for(int j = 0; j < 8; j++)
        {
            char tmp = buff[i];
            tmp >> j;
            tmp = tmp & 0x1;
            tmp = lfsr(tmp, reg);
 
      //пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ пїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅ пїЅпїЅпїЅпїЅпїЅпїЅ
            result[i] = result[i] | (tmp << j);
        }
    }
    fileWrite(result, size);
 
}
 
int main()
{
    static int shiftRegister = 0;
    scram(shiftRegister);
 
 
    return 0;
}
Добавлено через 12 минут
Сейчас создал новый проект, собрал, и теперь более менее адекватный вывод, вроде бы.
Но все равно, я правильно сделал, то что было подсказано?
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
15.06.2017, 16:52
Цитата Сообщение от mOops Посмотреть сообщение
я правильно сделал, то что было подсказано?
Да.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.06.2017, 16:52
Помогаю со студенческими работами здесь

Ошибка в выходном файле
Подскажите пожалуйста в чём может быть ошибка. В выходном файле выходит только файл с цифрой &quot;0&quot; uses crt; var ...

Закодировать файл. Взять 7 байт. Первый бит каждого байта переместить в 8 байт
Нужно открыть бинарный файл и закодировать следующим образом. Взять 7 байт. Первый бит каждого байта переместить в 8 байт. То есть,...

Ошибка кодировки в выходном файле
Есть программа реализации алгоритма Хаффмана #include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;map&gt; #include &lt;list&gt; ...

Неверная кодировка в выходном файле
Написал консольное приложение на C#. После обработки текстового документа (*.txt) он обратно сохраняется в другой кодировке. Подскажите,...

Sqlplus убрать грязь в выходном файле
a.bat sqlplus -s user/pass@127.0.0.1/imeidb @b.sql &gt; C:\c.txt b.sql SELECT IMEI FROM IMEI_IC; результат получается, вот...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru