Сжатие данных без потерь (англ. lossless data compression) — класс алгоритмов сжатия данных (видео, аудио, графики, документов, представленных в цифровом виде, программ на языках программирования и в машинных кодах и многих других видов данных), при использовании которых закодированные данные однозначно могут быть восстановлены с точностью до бита, пикселя, вокселя и т.д. При этом оригинальные данные полностью восстанавливаются из сжатого состояния. Этот тип сжатия принципиально отличается от сжатия данных с потерями. Для каждого из типов цифровой информации, как правило, существуют свои оптимальные алгоритмы сжатия без потерь.
Сжатие данных без потерь используется во многих приложениях. Например, оно используется во всех файловых архиваторах. Оно также используется как компонент в сжатии с потерями.
Сжатие без потерь используется, когда важна идентичность сжатых данных оригиналу. Обычный пример — исполняемые файлы и исходный код. Некоторые графические файловые форматы (например PNG) используют только сжатие без потерь, тогда как другие (TIFF, FLIF или GIF) могут использовать сжатие как с потерями, так и без потерь.
#define _USE_MATH_DEFINES
#include <iostream>
#include <math.h>
int main()
{
setlocale(LC_ALL, "rus");
double x, y, z, result;
std::cout << "Введите x,y,z: \n";
std::cin >> x >> y >> z;
result = tan(x + y) - pow(M_E, y - z) * sqrt(cos(pow(x, 2)) + sin(pow(z, 2)));
std::cout << "Результат: " << result;
}
Этот код не проверяет корректность введённых данных.
То есть если x+y будет равен π/2 или выражение под корнем будет отрицательным, будет ошибка приложения
Такой вариант с обработкой исключений
#define _USE_MATH_DEFINES
#include <iostream>
#include <math.h>
int main()
{
setlocale(LC_ALL, "rus");
double x, y, z, result, result2;
std::cout << "Введите x,y,z: \n";
std::cin >> x >> y >> z;
try
{
result2 = cos(pow(x, 2)) + sin(pow(z, 2));
if (result2 < 0) throw "подкоренное выражение меньше нуля";
if ((x + y) == M_PI_2) throw "тангенс не определён";
result = tan(x + y) * pow(M_E, y - z) * sqrt(result2);
std::cout << "Результат: " << result;
}
catch(const char* exception)
{
std::cout << "Результат не может быть вычислен поскольку " << exception;
}
}
Объяснение:
Сжатие данных без потерь (англ. lossless data compression) — класс алгоритмов сжатия данных (видео, аудио, графики, документов, представленных в цифровом виде, программ на языках программирования и в машинных кодах и многих других видов данных), при использовании которых закодированные данные однозначно могут быть восстановлены с точностью до бита, пикселя, вокселя и т.д. При этом оригинальные данные полностью восстанавливаются из сжатого состояния. Этот тип сжатия принципиально отличается от сжатия данных с потерями. Для каждого из типов цифровой информации, как правило, существуют свои оптимальные алгоритмы сжатия без потерь.
Сжатие данных без потерь используется во многих приложениях. Например, оно используется во всех файловых архиваторах. Оно также используется как компонент в сжатии с потерями.
Сжатие без потерь используется, когда важна идентичность сжатых данных оригиналу. Обычный пример — исполняемые файлы и исходный код. Некоторые графические файловые форматы (например PNG) используют только сжатие без потерь, тогда как другие (TIFF, FLIF или GIF) могут использовать сжатие как с потерями, так и без потерь.