Каждую букву можно закодировать какой-то последовательностью битов. Минимально количество битов, необходимых для кодирования всех букв таким образом, чтобы все последовательности различались хотя бы в одном бите, равно 3, так как 2^2<6<2^3 То есть одна буква несет 3 бита информации. Например, был алфавит а,б,в,г,д,е,ж Нельзя каждой букве сопоставить последовательность из 2 битов, поскольку максимально возможное количество таких последовательностей равно 2^2=4, что меньше 6. А вот 3 битами закодировать можно, например так: а - 000 б - 001 в - 010 г - 011 д - 100 е - 101 При этом еще останется неиспользованных две последовательности: 110 и 111. Алфавит можно кодировать и бОльшим количеством бит, но это делать незачем.
#include <iostream>
#include <cmath>
#include <vector>
using namespace std;
int main() {
vector<float> coordinates;
string a;
getline(cin, a);
string buffer;
for(int i = 0; i<a.length(); ++i) {
if(a[i]!=' ') {
buffer+=a[i];
} if(a[i]==' '||i==a.length()-1) {
if(buffer[buffer.length()-1]=='.') {
buffer+="0";
}
float num = stof(buffer);
coordinates.push_back(num);
buffer = "";
}
}
if(coordinates.size()!=4) {
cout << "wrong data. example: 1.1 2.2 3.3 4.4";
}
float result;
int temp1, temp2, temp3, temp4;
temp1 = coordinates[0]-coordinates[2];
temp2 = coordinates[1]-coordinates[3];
temp1 = temp1 * temp1;
temp2 = temp2 * temp2;
temp3 = temp1 + temp2;
result = sqrt(temp3);
cout << result;
}
То есть одна буква несет 3 бита информации.
Например, был алфавит а,б,в,г,д,е,ж
Нельзя каждой букве сопоставить последовательность из 2 битов, поскольку максимально возможное количество таких последовательностей равно 2^2=4, что меньше 6.
А вот 3 битами закодировать можно, например так:
а - 000
б - 001
в - 010
г - 011
д - 100
е - 101
При этом еще останется неиспользованных две последовательности: 110 и 111.
Алфавит можно кодировать и бОльшим количеством бит, но это делать незачем.