Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Нажно написать программу на языке програм С "моделирование движения" https://www.cyberforum.ru/ cpp/ thread228251.html
Нужно написать программу моделирующую движение спутника вокруг планеты. Грубо говоря написать программу в которой будет один объект вращаться вокруг второго. Писать можно любыми способами но:...
C++ Про CRC32
Народ, кто шарит в CRC, помогите. Прогу надо доделать или переделать, может у кого-нибудь рабочий вариант есть? Тестировалось в MV C++ 6. Bulder C++ 6. Borland 3.1. везде одни и теже ошибки...
C++ Работа с изображениями Добрый день! Есть тут знающие как работать с изображениями (Масштабировать, скопировать/вставить, обрезать). А то что-то не могу ни как разобраться. Может книги какие кто знает :) https://www.cyberforum.ru/ cpp/ thread227442.html C++ Программа завершения процесса Возможно ли написать программу, чтобы завершить процесс mail.ru agenta? Да, и если возможно, из другого пк. (через сетку). Если есть такая, выложите пожалуйста, очень надо. https://www.cyberforum.ru/ cpp/ thread227392.html
C++ Не получается разрешить доступ к интернету
Не получается разрешить доступ к интернету через LAN другому компьютеру
C++ Irrlicht https://www.cyberforum.ru/ cpp/ thread226685.html
Доброго времени суток. Проблема состоит в том, что при загрузке движка Irrlicht все в порядке, а при прописывании программе через какой путь ей надо пройти, чтобы обратиться к классу, показывает,...
C++ Получить индекс типа в mpl::map`е всем привет. есть mpl карта типов(key -> value). нужно получить индекс типа имея только ключ. где-то накосячил. но непойму где. #include <iostream> #include <boost/mpl/distance.hpp>... https://www.cyberforum.ru/ cpp/ thread226098.html Отвечает за стиль программы - Code Blocks или mingw? C++
Здравствуйте! Столкнулся с такой проблемой - при компиляции программ в Code Blocks с помощью mingw стиль получается как у классического Windows (к примеру, некрасивые кнопки и меню) в любом случае....
C++ Таинственный макрос Здравствуйте, в исходники nginx (веб-сервер) есть такой макрос: int ngx_cdecl main(int argc, char *const *argv) { //...некий код... } Он встречается еще и в других функциях. Само его... https://www.cyberforum.ru/ cpp/ thread224518.html C++ Люди, кто может помочь в написании проги Составить прогу на С++, которая кодирует текст, алгоритмом Лемпела-Зива (Не LZW). Выводится в текствой файл двоичный код каждого символа. Выводится CRC-код текстового файла.... https://www.cyberforum.ru/ cpp/ thread223728.html
C++ Прямое обращение к памяти
Доброго всем времени суток. Товарищи, помогите пожалуйста найти литературу для компилятора DJGPP. Точнее для особенностей данного компилятора. В частности интересует прямое обращение к ОЗУ. Насколько...
C++ Проверка ввода https://www.cyberforum.ru/ cpp/ thread223435.html
Помогите пожалуйста с проверкой. Нужно, чтобы при вводе массива x, если предыдущее значение больше вводимого, пользователю выдало сообщение об ошибке и он ввел правильное значение (которое больше...
3869 / 1939 / 707
Регистрация: 29.11.2010
Сообщений: 4,163
16.01.2011, 21:38 0

Сокращение расстояния Хэмминга - C++ - Ответ 1293127

16.01.2011, 21:38. Показов 3700. Ответов 14
Метки (Все метки)

Ответ

Хм. Так рандома можно и не дождаться. А что, если расстояния уже нулевые?
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
#include <cstdio>
#include <cstddef>
#include <cstdlib>
#include <ctime>
 
size_t CountBits(const size_t a_number) {
  size_t temporary_number = a_number;
  size_t bits_counter = 0;
  while (temporary_number != 0) {
    if (temporary_number & 1) ++bits_counter;
    temporary_number >>= 1;
  }
  return bits_counter;
}
 
// подсчет расстояния Хэмминга для двух массивов
// для проверки
size_t HammingDistance(size_t *first_array, size_t *second_array,
                       size_t array_size) {
  size_t result = 0;
  for (int i = 0; i < array_size; ++i)
    result += CountBits(first_array[i] ^ second_array[i]);
  return result;
}
 
inline size_t GetBit(size_t *array, size_t bit_number) {
  size_t this_bit = bit_number % (sizeof(*array) * 8);
  size_t this_element = bit_number / (sizeof(*array) * 8);
  return ((array[this_element] & (1 << this_bit)) == 0) ? 0 : 1;
}
 
inline void ChangeBit(size_t *array, size_t bit_number) {
  size_t this_bit = bit_number % (sizeof(*array) * 8);
  size_t this_element = bit_number / (sizeof(*array) * 8);
  array[this_element] ^= 1 << this_bit;
}
 
size_t DecreaseDistance(size_t *first_array, size_t *second_array,
                        size_t array_size, size_t decrease_by) {
  size_t current_distance = HammingDistance(first_array, second_array,
                                            array_size);
  if (decrease_by > current_distance)
    decrease_by = current_distance;
 
  for (int j = 0; j < decrease_by; ++j) {
    size_t different_bit_to_change = rand() % current_distance + 1;
    size_t bit_to_change = 0;
    for (int i = 0; i < different_bit_to_change; ++i)
      while (GetBit(first_array, bit_to_change) == GetBit(second_array, bit_to_change))
        ++bit_to_change;
    ChangeBit(second_array, bit_to_change);
    --current_distance;
  }
  return decrease_by;
}
 
int main(int argc, char *argv[]) {
  srand(time(NULL));
 
  size_t array_size = 10 + rand() % 10;
  size_t *first_array = new size_t[array_size];
  size_t *second_array = new size_t[array_size];
 
  for (int i = 0; i < array_size; ++i) {
    first_array[i] = rand() % 65535;
    second_array[i] = rand() % 65535;
  }
 
  printf("%d\n", HammingDistance(first_array, second_array, array_size));
  DecreaseDistance(first_array, second_array, array_size, 100);
  printf("%d\n", HammingDistance(first_array, second_array, array_size));
 
  delete [] first_array;
  delete [] second_array;
  return 0;
}


Вернуться к обсуждению:
Сокращение расстояния Хэмминга C++
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.01.2011, 21:38
Готовые ответы и решения:

Код Хэмминга
Возникла проблемка при написании программы для кодирования методом Хемминга (7,4) и после ...

Сокращение в Memo
Как реализовать код, который при вводе числа в Edit1 (например 23) в Memo удаляло вторую строку и...

Коды Хэмминга С++
Коды Хэмминга С++

код Хэмминга
требуется написать программу, (кодер/декодер) код хэмминга (15,11) вводим ошибку срочно

14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.01.2011, 21:38
Помогаю со студенческими работами здесь

Последовательность Хэмминга
1)Даны натуральные числа a,b (a&lt;=b). Получить все простые числа p, удовлетворяющие неравенству...

Код Хэмминга
Всем привет, разбираю пример кода Хмминга, подскажите плз, что это за фрагменты void...

Декодер Хэмминга
Пишу кодер и декодер Хэмминга (15,11). В начале это была одна программа и использовались одни и...

Последовательность Хэмминга
Последовательность Хэмминга образуют натуральные числа, не имеющие других простых делителей, кроме...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru