Кодирование – это перевод информации, представленной символами первичного алфавита, в последовательность кодов.
Декодирование (операция, обратная кодированию) – перевод кодов в набор символов первичного алфавита.
Кодирование может быть равномерное и неравномерное. При равномерном кодировании каждый символ исходного алфавита заменяется кодом одинаковой длины. При неравномерном кодировании разные символы исходного алфавита могут заменяться кодами разной длины.
Код называется однозначно декодируемым, если любое сообщение, составленное из кодовых слов, можно декодировать единственным
Не бейте, я не знаю, что я написал. Надеюсь, тебе это .
#include <iostream>
#include <vector>
using namespace std;
template<typename a, typename b>
class myPair {
public:
myPair(a first, b second) : first(first), second(second) {
}
myPair operator+(myPair a) {
return myPair(first + a.first, second + a.second);
}
myPair operator-(myPair a) {
return operator+(myPair(-a.first, -a.second));
}
a first;
b second;
};
class complex : myPair<int, int> {
public:
friend myPair;
complex(int real, int imaginary) : myPair(real, imaginary) {
}
int real() {
return first;
}
int imaginary() {
return second;
}
complex operator+(complex a) {
return complex(myPair::operator+(a).first, myPair::operator+(a).second);
}
complex operator-(complex a) {
return complex(myPair::operator-(a).first, myPair::operator-(a).second);
}
complex operator*(complex a) {
return complex(real() * a.real(), imaginary() * a.imaginary());
}
};
int main() {
complex a(1, 2), b(10, 11);
cout << (a + b).real() << " " << (a + b).imaginary() << " " << (a - b).real() << " " << (a - b).imaginary() << " " << (a * b).real() << " " << (a * b).imaginary();
}