Разработать приложение, реализующее алфавитный подход к измерению информации:
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;
}
#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;
}
Похожие вопросы
- Помогите с контрольной по математике, первый курс техникума
- Метод мат. индукции. Помогите завтра контрольная а я не могу справитья.
- Помогите с задачей по теории вероятностей
- помогите сделать контрольную по английскому
- Помогите с контрольной по французскому
- Привет!!!!Помогите,пожалуйста,контрольную по химии сделать!!!!ПЛИЗЗЗЗ!!!!Вот 3 задания!!
- помогите сделать контрольную на тему "Стадии реализации стратегических изменений"
- Пожалуйста, помогите с контрольной по английскому!!!!
- Помогите с контрольным вопросом по педагогеке
- Помогите решить контрольную по английскому
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя1234567890 -,.!?:;()