Форум программистов, компьютерный форум CyberForum.ru

перевод из PASCAL в C++ (сжатие методом Шеннона-Фано) - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.80
Chel
0 / 0 / 0
Регистрация: 20.05.2008
Сообщений: 19
09.11.2010, 20:40     перевод из PASCAL в C++ (сжатие методом Шеннона-Фано) #1
Есть код на pascal
может кто-нибудь помочь перевести на с++ ?

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
uses crt;
var
   c:char;
   s,s1,s2:string;
   i,n,j,j1:byte;
   a:array [1..255] of byte;
   str:array [1..255] of string[9];
   st:array [1..255] of string[100];
   f,f1,f2:text;
begin clrscr;
assign(f,'Cod.txt');assign(f1,'Bukv.txt');assign(f2,'1&0.txt');
rewrite(f);rewrite(f1);rewrite(f2);
writeln('Введите строку');readln(s);
s2:=s;
while length(s) <> 0 do
begin
s1:=s1+s[1];
 for i:=1 to length(s) do
  if (s1[length(s1)] = s[i])and(pos(s1[length(s1)],s) <> 0) then
  begin
  inc(n);delete(s,pos(s1[length(s1)],s),1);dec(i);
  end;
a[length(s1)]:=n;n:=0;
end;
 for j:=1 to 10 do
  for i:=1 to length(s1) do
  begin
   if (a[i] > a[i-1])and(i<>1) then
   begin
   n:=a[i];a[i]:=a[i-1];a[i-1]:=n;
   c:=s1[i];s1[i]:=s1[i-1];s1[i-1]:=c;
   end;
    if (a[i] < a[i+1])and(i<>0) then
    begin
    n:=a[i];a[i]:=a[i+1];a[i+1]:=n;
    c:=s1[i];s1[i]:=s1[i+1];s1[i+1]:=c;
    end;
   end;
    for i:=1 to length(s1) do
    st[i]:=s1[i];
   i:=length(s1);
    while length(s1) <> length(st[1]) do
    begin
     for n:=1 to length(st[i]) do
     begin
     j:=pos(st[i][n],s1);
      if a[i] > a[i-1] then str[j]:='1'+str[j]
      else str[j]:='0'+str[j];
     end;
      for n:=1 to length(st[i-1]) do
      begin
      j:=pos(st[i-1][n],s1);
       if a[i] > a[i-1] then str[j]:='0'+str[j]
        else str[j]:='1'+str[j];
      end;
     a[i-1]:=a[i]+a[i-1];a[i]:=0;
     st[i-1]:=st[i-1]+st[i];st[i]:='';dec(i);
  for j1:=i downto 1 do
  begin
   if (a[j1] > a[j1-1])and((j1-1) <> 0) then
   begin
   n:=a[j1];a[j1]:=a[j1-1];a[j1-1]:=n;
   s:=st[j1];st[j1]:=st[j1-1];st[j1-1]:=s;
   end;
  end;
    end;
 for i:=1 to length(s2) do
 begin
 write(f2,str[pos(s2[i],s1)],' ');
 write(str[pos(s2[i],s1)],' ');
 end;
  for i:=1 to length(s1) do
  begin
  write(f1,s1[i],' ');
  write(f,str[i],' ');
  end;
close(f);close(f1);close(f2);
end.
буду благодарен, если заодно поможете сделать представление не в байтовом, а в битовом виде

заранее спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2010, 20:40     перевод из PASCAL в C++ (сжатие методом Шеннона-Фано)
Посмотрите здесь:

Алгоритм сжатия методом Шеннона-Фано C++
Метод Шеннона фано C++
Метод Шеннона-Фано C++
C++ двоичный вывод(Алгоритм Шеннона Фано)
Метод архивации Шеннона-Фано C++
C++ Алгоритм шеннона фано
Алгоритм Шеннона-Фано C++
Кодирование Шеннона-Фано C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Chel
0 / 0 / 0
Регистрация: 20.05.2008
Сообщений: 19
12.11.2010, 08:03  [ТС]     перевод из PASCAL в C++ (сжатие методом Шеннона-Фано) #2
помогите кто, плиз
Yandex
Объявления
12.11.2010, 08:03     перевод из PASCAL в C++ (сжатие методом Шеннона-Фано)
Ответ Создать тему
Опции темы

Текущее время: 12:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru