unit LR1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
pp: TOpenDialog;
Memo1: TMemo;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
a:array[0..255]of real;
aa:array[0..255]of real;
m,mm:array[0..255,0..255]of real;
c:File of byte;
b,bb:byte;
i,j:integer;
s,ss,x,xx,en,k,ki:real;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
for i:=0 to 255 do begin
for j:=0 to 255 do begin
m[i,j]:=0;
mm[i,j]:=0; end;
a:=0;
aa:=0;
end;
if pp.Execute then begin
AssignFile(c,pp.FileName);
reset(c);
while not EoF(c) do begin
read(c,b);
a:=a+1;
aa:=a;
end;
en:=0;
s:=0;
for i:=0 to 255 do begin
aa:=aa/10000;
s:=s+aa;
if aa<>0 then
en:=en+aa*(ln(aa)/ln(2));
end;
Memo1.lines.Add('сумма вероятностей= '+FloatToStr(s));
Memo1.lines.Add('энтропия источника= '+FloatToStr(-en));
end;
reset(c);
read(c,b);
while not EoF(c) do begin
read(c,bb);
m[b,bb]:=m[b,bb]+1;
mm[b,bb]:=m[b,bb];
b:=bb;
end;
s:=0;
xx:=0;
x:=0;
for i:=0 to 255 do begin
for j:=0 to 255 do begin
m[i,j]:=m[i,j]/9999;
s:=s+m[i,j];
if m[i,j]<>0 then begin
x:=x+m[i,j]*(ln(m[i,j])/ln(2));
end;
if a<>0 then
mm[i,j]:=mm[i,j]/a;
ss:=ss+mm[i,j];
end;
xx:=xx+x;
x:=0;
end;
memo1.Lines.Add('сумма совместных вероятностей пар= '+floatToStr(s));
memo1.Lines.Add('сумма условных вероятностей пар= '+floatToStr(ss));
s:=0;
ss:=0;
for i:=0 to 255 do begin
for j:=0 to 255 do begin
if mm[i,j]<>0 then
s:=s+mm[i,j]*(ln(mm[i,j])/ln(2));
end;
s:=s*aa;
ss:=ss+s;
s:=0;
end;
memo1.Lines.Add('условная энтропия= '+floatToStr(-ss));
memo1.Lines.Add('совместная энтропия= '+floatToStr(-xx));
x:=-en-ss;
memo1.Lines.Add('проверка '+floatToStr(x));
k:=(8-en)/8;
ki:=10000*(-en);
memo1.Lines.Add('количество информации без учета связи = '+floatToStr(ki));
memo1.Lines.Add('коэффициент избыточности без учета связи = '+floatToStr(k));
k:=(8-ss)/8;
ki:=10000*(-ss);
memo1.Lines.Add('количество информации c учетом связи = '+floatToStr(ki));
memo1.Lines.Add('коэффициент избыточности с учетом связи = '+floatToStr(k));
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
memo1.Clear;
end;
end.
Другие языки программирования и технологии
Кто знает язык delphi, нужно пояснить что означает каждая строчка программы
unit LR1; Название модуля
interface Начало определения внешнего интерфейса модуля
uses Объявление подключаемых модулей
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls; Собственно имена подключаемых модулей
type Задание общих типов
TForm1 = class(TForm) Создание скласса формы
pp: TOpenDialog; Объявление диалога открытия файла
Memo1: TMemo; Объявление редактируемого поля
Button1: TButton; Объявление кнопки 1
Button2: TButton; Объявление кнопки 2
procedure Button1Click(Sender: TObject); Реакция на нажатие кнопки 1
procedure Button2Click(Sender: TObject); Реакция на нажатие кнопки 2
private
{ Private declarations }
public
{ Public declarations }
end;
var Начало объявления переменных программы
Form1: TForm1; Собственно форма
a:array[0..255]of real; Один массив
aa:array[0..255]of real; Другой массив
m,mm:array[0..255,0..255]of real; Ещё два массива
c:File of byte; Файл целочисленных данных от 0 до 255
b,bb:byte; Целочисленные переменные от 0 до 255
i,j:integer; Ещё две целочисленные переменные, но уже с большим диапазоном значений
s,ss,x,xx,en,k,ki:real; Туева хуча действительных переменных
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); Начало процедуры реакции на нажатие первой кнопки
begin
for i:=0 to 255 do begin Цикл от 0 до 255
for j:=0 to 255 do begin Цикл от 0 до 255
m[i,j]:=0; Обнуление массива
mm[i,j]:=0; end; Обнуление массива
a[ i]:=0; Обнуление массива
aa[ i]:=0; Обнуление массива
end;
if pp.Execute then begin Если файло выбрано
AssignFile(c,pp.FileName); Сапоставляем его с переменной
reset(c); Открываем его на чтение
while not EoF(c) do begin Пока не конец файло
read(c,b); Читаем байт
a:=a+1; Увеличиваем на 1, только не понятно что и зачем… mail погрыз немного
aa:=a; Делаем присвоение, но тоже не понятно что и зачем… mail погрыз немного
end;
Дальше нет смысла объяснять, ибо в последних строчках какая-то ошибка!
Однозначно!!!
interface Начало определения внешнего интерфейса модуля
uses Объявление подключаемых модулей
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls; Собственно имена подключаемых модулей
type Задание общих типов
TForm1 = class(TForm) Создание скласса формы
pp: TOpenDialog; Объявление диалога открытия файла
Memo1: TMemo; Объявление редактируемого поля
Button1: TButton; Объявление кнопки 1
Button2: TButton; Объявление кнопки 2
procedure Button1Click(Sender: TObject); Реакция на нажатие кнопки 1
procedure Button2Click(Sender: TObject); Реакция на нажатие кнопки 2
private
{ Private declarations }
public
{ Public declarations }
end;
var Начало объявления переменных программы
Form1: TForm1; Собственно форма
a:array[0..255]of real; Один массив
aa:array[0..255]of real; Другой массив
m,mm:array[0..255,0..255]of real; Ещё два массива
c:File of byte; Файл целочисленных данных от 0 до 255
b,bb:byte; Целочисленные переменные от 0 до 255
i,j:integer; Ещё две целочисленные переменные, но уже с большим диапазоном значений
s,ss,x,xx,en,k,ki:real; Туева хуча действительных переменных
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); Начало процедуры реакции на нажатие первой кнопки
begin
for i:=0 to 255 do begin Цикл от 0 до 255
for j:=0 to 255 do begin Цикл от 0 до 255
m[i,j]:=0; Обнуление массива
mm[i,j]:=0; end; Обнуление массива
a[ i]:=0; Обнуление массива
aa[ i]:=0; Обнуление массива
end;
if pp.Execute then begin Если файло выбрано
AssignFile(c,pp.FileName); Сапоставляем его с переменной
reset(c); Открываем его на чтение
while not EoF(c) do begin Пока не конец файло
read(c,b); Читаем байт
a:=a+1; Увеличиваем на 1, только не понятно что и зачем… mail погрыз немного
aa:=a; Делаем присвоение, но тоже не понятно что и зачем… mail погрыз немного
end;
Дальше нет смысла объяснять, ибо в последних строчках какая-то ошибка!
Однозначно!!!
ну, это платно, много букаф
Похожие вопросы
- Кто знает язык C++ нужно пояснить что означает каждая строчка програмы
- Кто может помочь?Нужны комментарии к каждой строчке программы...Помогите пожалуйста! оч нужно!!!
- нужно дать коментарий к каждой строчке кода, программа в дельфи
- Есть программу выполнения задачи в Паскале, нужны объяснения, комментарии к каждой строчке программы, а то не все понятно
- visual c++ объясните, пожалуйста, что означает каждая строчка. задание: найти число различных элементов в массиве
- помогите объяснить значение каждой строчки программы на ассемблере!?
- Какие программы нужны, и какие языки программирования нужно знать для того..
- насколько я понимаю язык программирования знать совсем не означает умение писать программы...
- Нужна помощь в редактировании программы на языке delphi, а именно часов.
- Как создать программу, зная язык программирования?