Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 17.12.2013
Сообщений: 13
1

Довести до ума. Код Фано

26.12.2013, 19:07. Показов 848. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
программа должна закодировать текст(текстовый файл создан) по методу Фано. Т.е. дополнить прогу процедурой в которой каждый символ из заданного текста заменяется на соответствующий этому символу элементарный код.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
program Kod_Fano;
const nmax=100;
type
  Mn = set of char;
  Zap = record
    sim: char; 
    kol: byte;
    v: real;
    kod: string;
  end;
  mas = array [0..nmax] of zap;
var
  f: text;
  k, i: byte;
  a: string
  l: mas;
 
 
procedure Tekst(f: text; var a: string);
var s:string;
begin
  assign(f, 'input.txt');
  reset(f);
  s:='';
  while not eof(f) do
  begin
    readln(f, s);
    a:=a+s;
  end;
end;
 
procedure Simvol(a: string; var k: byte; var l: mas);
var
  i, j: integer;
  m: mn;
begin
  k := 0;
  m:=[];
  for i := 1 to length(a) do
   if (a[i] in m)  then 
     begin
       j := 1;
       while l[j].sim <> a[i] do inc(j);
       inc(l[j].kol);
     end  
    else 
     begin
      m := m + [a[i]];
      inc(k);
      l[k].sim := a[i];
      l[k].kol := 1;
     end;
 end;
 
procedure Ver(k: integer; var l: mas);
var
  i: integer;
begin
  for i := 1 to k do l[i].v := l[i].kol / length(a);
end;
 
 
procedure Poryadok(var l: mas);
var
  i, j: integer;
  x: zap;
begin
  for i := 1 to k - 1 do
    for j := 1 to k - i do
      if l[j].v > l[j+1].v then
      begin
        x := l[j];
        l[j] := l[j+1];
        l[j+1] := x;
      end;
end;
 
 
function seredina(n, k: byte; s:real): byte; 
var
   i: byte;s1, s2: real; 
begin
  s1 := 0;
  i := n-1;
  while s1<(s / 2) do begin inc(i); s1 := s1 + l[i].v;  end;
  s2 := s-s1;
  s1 := s1 - l[i].v; dec(i);
  If s1>s2 then seredina := i else seredina := i+1;
end;
 
 
procedure fano(n, k: integer; s: real);
var
  i, m: integer;
  s1, s2: real;
 
begin
  
  if k - n >= 1 then    
   if k - n = 1 then   
    begin
      // к  коду n-ой буквы алфавита приписать 0
      //к  коду k-ой буквы алфавита приписать 1
    end
    
    else    
    begin
      m := seredina(n, k,s);
      s1:=0;
      // к  кодам всех букв алфавита с n-ой по m-ую приписать 0
      // в переменной s1 найти сумму вероятностей всех букв алфавита с n-ой по m-ую
      s2:=0; 
      // к элементарным кодам всех букв алфавита с (m+1)-ой по k-ую приписать 1
      // в переменной s2 найти сумму вероятностей всех букв алфавита с (m+1)-ой по k-ую
      fano(n, m, s1);
      fano(m + 1, k, s2);
     end;
end;
 
 
 
begin
  Tekst(f, a);
  writeln(a);
  Simvol(a, k, l);
  Ver(k, l);
  Poryadok(l);
  for i := 1 to k do Write(l[i].sim:6); writeln;
  for i := 1 to k do Write(l[i].kol:6); writeln;
  for i := 1 to k do Write(l[i].v:6:3); writeln;
  for i := 1 to k do l[i].kod := '';
  fano(1, k, 1);
  for i := 1 to k do Write(l[i].kod:6); writeln;
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.12.2013, 19:07
Ответы с готовыми решениями:

Довести программу до ума
Разработайте алгоритм и программу, реализующую этот алгоритм. Основные функции программы оформите в...

Надо довести до ума, прога пашет
Ребят помогите дописать программу выводит результат по 2 раза, что тока не использовал ставил кучу...

помогите довести до ума несложную программу (файлы)
Здравствуйте, уважаемые! Дана след задача: Программа - записная книжка использует следующие...

Довести программу до ума
Доброго времени суток! В задании написано: составить программу для вычисления степеней чисел вида...

0
26.12.2013, 19:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.12.2013, 19:07
Помогаю со студенческими работами здесь

Нужно довести программу до ума
помогите с кодом. uses crt { uses список использумых модулей,библиотека}{cathod ray tube...

Необходимо довести прогу до ума (окно вывода crt и блокировка ввода)
Всем привет. Прошу помочь в следующей проге: uses crt; var m: integer; sum, sum1:...

Довести до ума
В общем, изначально надо было посчитать такую загогулину:...

Довести до ума программу
Вот задание: Запросить стороны треугольника и определить, является ли он разносторонним,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru