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

Выполнить свертку байтов в диапазоне - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Нужна рабочая функция быстрого/прямого и обратного преобразования Фурье http://www.cyberforum.ru/cpp-beginners/thread1023426.html
Нужна рабочая функция быстрого/прямого и обратного преобразования Фурье. В гугле много всего, рабочего не нашел.
C++ Нужна программа - Найти кратчайший путь между двумя заданными вершинами графа Ребят, у кого есть программа на С++ или текст программы: Найти кратчайший путь между двумя заданными вершинами графа. Желательно с графикой. http://www.cyberforum.ru/cpp-beginners/thread1023410.html
C++ Как реализовать многоуровневое меню?
Допустим есть в главном меню пункт 1, пункт 2,пункт 3. При переходе по любому из пунктов программа что то выполняет. Для каждого пункта есть своя функция. Но мне нужно перейти обратно в главное меню. Что делать? GOTO ругают за превращение программы в спагетти, а если в функции одного из пунктов для возвращения назад вызывать функцию главного меню выходит то же самое. Как реализуются такие задачи?
Ошибка в классе IntegerSet C++
IntegerSet.h: #pragma once //#ifndef _INTEGERSET_H #define _INTEGERSET_H class IntegerSet { public: IntegerSet(); IntegerSet(int); ~IntegerSet();
C++ можно ли потоку для чтения передать имеющуюся строку, что бы из нее выдрать числа при чтении http://www.cyberforum.ru/cpp-beginners/thread1023394.html
А можно ли потоку для чтения передать имеющуюся строку, что бы из нее выдрать числа при чтении?
C++ Получить доступ к .txt файлу и посчитать количество латинских символов в нём Получить доступ к .txt файлу и посчитать количество латинских букв в нём. Спасибо! подробнее

Показать сообщение отдельно
Байт
 Аватар для Байт
14314 / 9145 / 1321
Регистрация: 24.12.2010
Сообщений: 16,709
30.11.2013, 11:21     Выполнить свертку байтов в диапазоне
Два
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
int main()
{
char s[40], t[80], *p, *q, *tt;
int n = rand();
itoa(n, s, 2);
cout << s << endl; // Это исходное число в двоичном представлении
for(p = s, tt=t; (q=strstr(p, "000"))!=NULL; p = q+3) {
   memcpy(tt, p, q-p);
   tt += q - p - 1;
   memcpy(tt, "0110", 4);
   tt += 4;
}
strcpy(tt, p); // Переписываем остаток
cout << t << endl; // Результирующее число
return 0;
}
Не проверял, но идея, надеюсь, ясна

Добавлено через 22 минуты
Один
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
int main()
{ int n, N; char s[40]; unsigned char bait, up, low, t, *p;
 n = rand(); // Исходное число
 N = rand() % 4; // Величина сдвига
 itoa(n, s, 2); // Преобразование по основанию 2 в строку s
 cout << s << endl;
 p = (unsigned char *)(&n); // Рассматриваем число как последовательность байтов
 for(i=0; i<sizeof(int); i++) {
   bait = p[i];
   up = (bait & 240); // Старший байт
   low = (bait & 15);
   t = (up >> N);  // Свертка
   up = (((t & 15) << 4) | (t&240));
   t = (low << N);
   low = ((t &15) | ((t & 240)>>4)));
   p[i] = (up | low);
 }
 itoa(n, s, 2);
 cout << s <, endl;
 return 0;
}
Вот как-то так...
 
Текущее время: 15:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru