Найти: (информац.объём сообщения, кол-во информации в нём)
Находим количество информации в одном символе.
По сути, это минимальное количество двоичных разрядов, в котором можно хранить один символ нашего алфавита.
Выбирается оно из таблицы степеней двойки (первое значение, не меньшее, чем наше ), либо через формулу (подбирая минимальное подходящее , либо решая уравнение через нахождение двоичного логарифма и затем округляя всегда с избытком, вверх).
Пример подбора:
если , то (алфавит из 64 символов можно хранить; для нас мало, надо минимум 107)
если , то (алфавит из 128 символов можно хранить; для нас достаточно, это даже больше, чем наши 107 символов в алфавите)
Можно считать одним из трёх : считать сам двоичный логарифм (если логарифм по произвольному основанию есть в вашем калькуляторе- во встроенном в Windows 10, в инженерном виде он есть например), или можно считать отношение десятичных либо натуральных логарифмов (см. дроби в расчёте). Десятичные либо натуральные логарифмы обычно есть в научных калькуляторах.
Получилось дробное значение, значит округляем до целого, но не как обычно, а всегда вверх (то есть, всегда берём целое число, большее чем наш результат). Так округляем потому, что нам нужно получить возможность хранить чуть больше символов, чем есть в нашем алфавите (раз уж ровно 107 не выходит).
Var a:array of array of integer; c:array of array of integer; ma:array of array of integer; i,j,n:integer; begin; randomize; readln(n); setlength(a,n+1); //задаём размерность динамических массивов setlength(c,n+1); setlength(ma,n+1); for i:=1 to n do begin; setlength(a[i],n+1); setlength(c[i],n+1); setlength(ma[i],n+1); end;
writeln('Matrix A:'); //генерируем массив псеводслучайных чисел for i:=1 to n do begin; writeln; for j:=1 to n do begin; a[i,j]:=random(10); write(a[i,j]:4); end; end; writeln;
writeln('Matrix C:'); //аналогично for i:=1 to n do begin; writeln; for j:=1 to n do begin; c[i,j]:=random(10); write(c[i,j]:4); end; end;
for i:=1 to n do //сохраняем матрицу C для транспонации for j:=1 to n do ma[i,j]:=c[i,j]; writeln;
writeln('Transpose matrix C:'); //транспонируем C for i:=1 to n do begin; writeln; for j:=1 to n do begin; c[i,j]:=ma[j,i]; write(c[i,j]:4); end; end;
writeln; writeln('Final matrix:'); // получаем финальную матрицу for i:=1 to n do begin; writeln; for j:=1 to n do begin; ma[i,j]:=2*c[i,j]*a[i,j]; {по свойству дистрибутивности матриц С(A+A)=C*A+C*A=2*C*A} write(ma[i,j]:4); end; end; end.
// PascalABC.NET 3.0, сборка 1144 от 16.01.2016 type Point=record x,y:real end;
function GetPoint(c:char):Point; begin Writeln('Введите координаты точки ',c,':'); Read(Result.x,Result.y) end;
function Line(A,B:Point):real; begin Result:=sqrt(sqr(B.x-A.x)+sqr(B.y-A.y)) end;
function SqTriangle(pA,pB,pC:Point):real; begin var a:=Line(pB,pC); var b:=Line(pA,pC); var c:=Line(pA,pB); if (a+b>c) and (a+c>b) and (b+c>a) then begin var p:=(a+b+c)/2; Result:=sqrt(p*(p-a)*(p-b)*(p-c)) end else Result:=0 end;
begin var A:=GetPoint('A'); var B:=GetPoint('B'); var C:=GetPoint('C'); Writeln('Площадь треугольника равна ',SqTriangle(A,B,C)) end.
Тестовое решение: Введите координаты точки A: -5 3.18 Введите координаты точки B: 1.45 6.2 Введите координаты точки C: 6 -5.93 Площадь треугольника равна 45.98975
Дано:
Найти:
(информац.объём сообщения, кол-во информации в нём)
Находим количество информации в одном символе.
По сути, это минимальное количество двоичных разрядов, в котором можно хранить один символ нашего алфавита.
Выбирается оно из таблицы степеней двойки (первое значение, не меньшее, чем наше
), либо через формулу
(подбирая минимальное подходящее
, либо решая уравнение через нахождение двоичного логарифма и затем округляя всегда с избытком, вверх).
Пример подбора:
если
, то
(алфавит из 64 символов можно хранить; для нас мало, надо минимум 107)
если
, то
(алфавит из 128 символов можно хранить; для нас достаточно, это даже больше, чем наши 107 символов в алфавите)
Выбираем минимальную подходящую степень= 7 (т.е.
бит)
Пример расчёта:
отсюда, получаем что:
Можно считать одним из трёх : считать сам двоичный логарифм (если логарифм по произвольному основанию есть в вашем калькуляторе- во встроенном в Windows 10, в инженерном виде он есть например), или можно считать отношение десятичных либо натуральных логарифмов (см. дроби в расчёте). Десятичные либо натуральные логарифмы обычно есть в научных калькуляторах.
Получилось дробное значение, значит округляем до целого, но не как обычно, а всегда вверх (то есть, всегда берём целое число, большее чем наш результат). Так округляем потому, что нам нужно получить возможность хранить чуть больше символов, чем есть в нашем алфавите (раз уж ровно 107 не выходит).
Получаем, что:
бит
Далее, находим информационный объём сообщения:
ответ: 105 бит