Russian Qt Forum

Программирование => С/C++ => Тема начата: vldefender от Сентябрь 15, 2009, 13:11



Название: Инвертирование
Отправлено: vldefender от Сентябрь 15, 2009, 13:11
Как делать инвертирование. В c++ есть функция inv, но компилятор пишет "нет декларации ‘inv’ в этой области видимости". Это нужно какой-то header подключить?


Название: Re: Инвертирование
Отправлено: Rcus от Сентябрь 15, 2009, 13:19
Инвертирование чего? "В C++" - это в стандартной библиотеке? не знаю такой функции.


Название: Re: Инвертирование
Отправлено: vldefender от Сентябрь 15, 2009, 13:34
Есть у меня кусок кода, который нужно включить в проект.
Код:
unsigned short esubkeys[52];
unsigned short dsubkeys[52];
dsubkeys[i] = inv(esubkeys[48-i]);
Когда я пытаюсь это скомпилировать, компилятор выдаёт выше указанную ошибку.
ЗЫ. это алгоритм шифрования, инвертирование нужно для создания ключа для дешифрования.


Название: Re: Инвертирование
Отправлено: Khs от Сентябрь 15, 2009, 13:37
Цитировать
C++ Math Library Reference      
inv

Matrix inverse

C++ Prototype

      mwArray inv(const mwArray &X);

C++ Syntax

      #include "matlab.hpp"

      mwArray X;             // Input argument(s)
      mwArray Y;             // Return value

      Y = inv(X);

MATLAB Syntax

      Y = inv(X)

больше не гуглится :) либо inv - самописная :)


Название: Re: Инвертирование
Отправлено: kuzulis от Сентябрь 15, 2009, 13:41
 а что-то типа:
Код:
...
int a = 1;
int b = ~a;
...

не подойдет ? :)


Название: Re: Инвертирование
Отправлено: vldefender от Сентябрь 15, 2009, 14:02
а что-то типа:
Код:
...
int a = 1;
int b = ~a;
...

не подойдет ? :)
Ну это же инвертирование. Инвертирование - это число записанное наоборот, справа налево (вроде бы).

Про matlab.hpp я тоже нагугливал, но не смог его найти, на компе его нет.
ЗЫ. про инвертирование я правильно понимаю? Это число записанное наоборот?


Название: Re: Инвертирование
Отправлено: lit-uriy от Сентябрь 15, 2009, 19:19
Цитировать
ЗЫ. про инвертирование я правильно понимаю? Это число записанное наоборот?
Нет, инвертирование - это логическая операция, было "истино" стало "ложно" и наоборот
обычное: 5 -> 0, 11->0, 0->1
побитовое: 0110 -> 1001, 0000->1111, 1111->0000 (здесь двоичное представление)


Название: Re: Инвертирование
Отправлено: Igors от Сентябрь 15, 2009, 19:35
ЗЫ. про инвертирование я правильно понимаю? Это число записанное наоборот?
Нет такой однозначной операции "инвертирование" - их как минимум 2 (логическое или побитовое) только в языке. Можно и в своей задаче что-то назвать "инвертированием" - ничего плохого в этом не будет. Так что определитесь что Вам надо.


Название: Re: Инвертирование
Отправлено: Tonal от Октябрь 27, 2009, 09:40
Есть ещё инвертирование матриц. :)
Чего надо то? :)

Если "число записанное наоборот", то берём число записанное, и переворачиваем:
Код:
std::string inv(const std::string& num) {
  return std::string(num.rbegin(), num.rend());
}
Оно? :)