Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.03.2012, 22:13   #1
Рустам_IMAN
 
Регистрация: 14.03.2012
Сообщений: 4
Восклицание Шеннон-Фэно

Я ВАС УМОЛЯЮ!!! Ребята помогите!!! Помогите расставить комментарии....

Код:
program Shennon_Fano;
{Создание кодовой таблицы сжатия информации методом Шеннона-Фэно}

type
  sim = record
    a: byte;
    w: real;
    kod: string
  end;

var
  S: array [1..256] of sim;
  I, K, L: integer;
  H, J: Real;
  Name: string;
  Dan, Rez: Text;

{1 }
procedure S_F(Beg, En: integer);
var
  R, P: Real;
  M, N: integer;
begin
  if Beg < En then
  begin
    
    {2 }
    R := 0;
    for M := Beg to En do R := R + S[M].w;
    
    R := R / 2; {3 }
  
    {4 }
    N := beg; P := 0;
    repeat
      P := P + S[N].w;
      inc(N)
    until (P > R);
    dec(N);
  
    if N > Beg then
      if abs(P - R) > abs(P - R - S[N].w) then dec(N); {5 }
  
    {6 }
    for M := Beg to N do S[M].kod := S[M].kod + '0';
    for M := N + 1 to En do S[M].kod := S[M].kod + '1';
  
    if Beg < En then
    begin
      S_F(Beg, N); {7 }
      S_F(N + 1, En) {8 }
    end;
    
  end
  
end;{S_F}


begin
  Write('Введите имя файла с частотной таблицей -> ');
  Readln(Name);
  Assign(Dan, Name); Reset(Dan);
  Name := Copy(Name, 1, pos('.', Name)) + 'Cod'; {9 }
  Assign(Rez, Name); Rewrite(Rez);
  
  {10 }
  Readln(Dan, Name); 
  WriteLn(Rez, Name);
  Readln(Dan, L); Writeln(Rez, L);
  Readln(Dan); Writeln(Rez);
  
  {11 }
  K := 0;
  repeat
    inc(K); Readln(Dan, S[K].a, S[K].w);
    S[K].kod := ''
  until eoln(Dan);
  Readln(Dan); Readln(Dan, H);
  Close(Dan);
  
  S_F(1, K); {12 }
  
  {13 }
  J := 0;
  for I := 1 to K do 
  begin
    Writeln(Rez, S[I].a, #9, S[I].kod);
    J := J + length(S[I].kod) * S[I].w
  end;
  
  {14 }
  Writeln(Rez);
  Writeln(Rez, J);
  Writeln(Rez, H);
  
  Close(Rez)
  
end.


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 16.03.2012 в 13:37.
Рустам_IMAN вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевести в С# из С++ (Метод Шеннон Фано) ~Леди~ C# (си шарп) 3 16.12.2011 08:54