ВУЗы и колледжи

Люди!! Помогите с контрольной по теории информации.

Разработать приложение, реализующее алфавитный подход к измерению информации:

1. Алфавит языка находится в отдельном файле (его можно модифицировать). Мощность определяется автоматически.

2. Сообщение задается пользователем.

3. Дополнительно предусмотрены измерения информации для русского и английского языка.
#include <iostream>
#include <fstream>
#include <string>
#include <set>
#include <cmath>
#include <windows.h>

using namespace std;

int main()
{
const char* alphabet_file = "alphabet.txt";

SetConsoleCP(1251); // кодовая страница для корректного отображения русских букв при вводе
SetConsoleOutputCP(1251); // кодовая страница для корректного отображения русских букв при выводе

// Чтение алфавита
cout << "Читаю алфавит... ";
ifstream file(alphabet_file); // открываем файл
if (!file) { // проверяем успешность открытия
cout << "Ошибка открытия файла (файл не найден)!" << endl;
return EXIT_FAILURE;
}
string s;
getline(file, s); // читаем первую строку
if (s.empty()) { // проверка алфавита
cout << "Алфавит пуст (не содержит символов)!" << endl;
return EXIT_FAILURE;
}
set<char> alphabet(s.begin(), s.end()); // алфавит - отсортированное множество, состояние из символов прочитанной из файла строки

// Вывод мощности и самого алфавита
cout << "мощность алфавита (символов): " << alphabet.size() << endl;
cout << "Алфавит: ";
for (const char ch : alphabet) { // перебираем все символы алфавита
cout << ch; // выводим символ
}
cout << endl; // перевод строки

// Ввод и проверка строки
cout << "Введите строку: ";
getline(cin, s);
for (const char ch : s) { // перебираем все символы введённой строки
if (alphabet.find(ch) == alphabet.end()) { // проверка символы в алфавите
cout << "Строка содержит символ вне алфавита!" << endl;
return EXIT_FAILURE;
}
}

// Вычисление и вывод кол-ва информации
double info_size = log2(alphabet.size()) * s.size();
cout << "Кол-во информации (в битах): " << info_size << endl;
}
ГГ
Гуля Гуля
132
Лучший ответ
Гуля Гуля Алфавит в отельном файле. alphabet.txt
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя1234567890 -,.!?:;()
Наталия Кулешова Со второго акка заслал. Если кому пригодится + в коменты.