Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Программа на паскале

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> Программа на паскале
Имя
Сообщение << Старые топики   Новые топики >>
Программа на паскале - 2012-02-27 19:03:32.506666   
Amstei

Сообщений: 4
Оценки: 0
Присоединился: 2011-08-23 15:04:06.076666
Здравствуйте, мне по курсовой нужно сделать программу на паскале кодирующую и декодирующую по методу Шенона-Фано, кодирование букв в код работает нормально, а вот обратно не хочет, хотя если вывести процедуру с преобразованием в отдельную программу все работает:-( будте добры, помогите:)
з.ы: выделеное - есть нерабочая часть
Program kodir; var a:string; b,b1:string; z:****int; Procedure RK (a:string; var b:string); var i:integer; begin b:=''; for i:=1 to length (a) do begin if a=' ' then b:=b+'000'; if a='а' then b:=b+'0110'; if a='б' then b:=b+'111000'; if a='в' then b:=b+'10101'; if a='г' then b:=b+'1110101'; if a='д' then b:=b+'11001'; if a='е' then b:=b+'0100'; if a='ж' then b:=b+'1110111'; if a='з' then b:=b+'1110100'; if a='и' then b:=b+'0101'; if a='й' then b:=b+'1111001'; if a='к' then b:=b+'10111'; if a='л' then b:=b+'10100'; if a='м' then b:=b+'11000'; if a='н' then b:=b+'0111'; if a='о' then b:=b+'001'; if a='п' then b:=b+'110100'; if a='р' then b:=b+'10110'; if a='с' then b:=b+'1001'; if a='т' then b:=b+'1000'; if a='у' then b:=b+'110101'; if a='ф' then b:=b+'1111110'; if a='х' then b:=b+'1111000'; if a='ц' then b:=b+'1111101'; if a='ч' then b:=b+'1110110'; if a='ш' then b:=b+'1111010'; if a='щ' then b:=b+'1111100'; if a='ь' then b:=b+'110110'; if a='ы' then b:=b+'110111'; if a='э' then b:=b+'1111111'; if a='ю' then b:=b+'1111011'; if a='я' then b:=b+'111001'; if a='_' then b:=b+'000'; if a='А' then b:=b+'0110'; if a='Б' then b:=b+'111000'; if a='В' then b:=b+'10101'; if a='Г' then b:=b+'1110101'; if a='Д' then b:=b+'11001'; if a='Е' then b:=b+'0100'; if a='Ж' then b:=b+'1110111'; if a='З' then b:=b+'1110100'; if a='И' then b:=b+'0101'; if a='Й' then b:=b+'1111001'; if a='К' then b:=b+'10111'; if a='Л' then b:=b+'10100'; if a='М' then b:=b+'11000'; if a='Н' then b:=b+'0111'; if a='О' then b:=b+'001'; if a='П' then b:=b+'110100'; if a='Р' then b:=b+'10110'; if a='С' then b:=b+'1001'; if a='Т' then b:=b+'1000'; if a='У' then b:=b+'110101'; if a='Ф' then b:=b+'1111110'; if a='Х' then b:=b+'1111000'; if a='Ц' then b:=b+'1111101'; if a='Ч' then b:=b+'1110110'; if a='Ш' then b:=b+'1111010'; if a='Щ' then b:=b+'1111100'; if a='Ь' then b:=b+'110110'; if a='Ы' then b:=b+'110111'; if a='Э' then b:=b+'1111111'; if a='Ю' then b:=b+'1111011'; if a='Я' then b:=b+'111001'; end; end; procedure PER (b:string; var b1:string); var i:integer; begin randomize; b1:=''; for i:=1 to length(b) do if random&lt;0.995 then b1:=b1+b else case random(5) of 0: b1:=b1+'0'+b; 1: b1:=b1+'1'+b; 2: b1:=b1+'0'; 3: b1:=b1+'1'; 4: b1:=b1; end; end; procedure DRK (b:string; var a:string); var i,n:integer; begin a:=''; i:=1; repeat if copy (b,i,3)='000' then begin a:=a+' '; i:=i+3 end; if copy (b,i,4)='0110' then begin a:=a+'а'; i:=i+4 end; if copy (b,i,6)='111000' then begin a:=a+'б'; i:=i+6 end; if copy (b,i,5)='10101' then begin a:=a+'в'; i:=i+5 end; if copy (b,i,7)='1110101' then begin a:=a+'г';i:=i+7 end; if copy (b,i,5)='11001' then begin a:=a+'д';i:=i+5 end; if copy (b,i,4)='0100' then begin a:=a+'е'; i:=i+4 end; if copy (b,i,7)='1110111' then begin a:=a+'ж';i:=i+7 end; if copy (b,i,7)='1110100' then begin a:=a+'з';i:=i+7 end; if copy (b,i,4)='0101' then begin a:=a+'и'; i:=i+4 end; if copy (b,i,7)='1111001' then begin a:=a+'й'; i:=i+7 end; if copy (b,i,5)='10111' then begin a:=a+'к'; i:=i+5 end; if copy (b,i,5)='10100' then begin a:=a+'л';i:=i+5 end; if copy (b,i,5)='11000' then begin a:=a+'м';i:=i+5 end; if copy (b,i,4)='0111' then begin a:=a+'н'; i:=i+4 end; if copy (b,i,3)='001' then begin a:=a+'о';i:=i+3 end; if copy (b,i,6)='110100' then begin a:=a+'п'; i:=i+6 end; if copy (b,i,5)='10110' then begin a:=a+'р';i:=i+5 end; if copy (b,i,4)='1001' then begin a:=a+'с'; i:=i+4 end; if copy (b,i,4)='1000' then begin a:=a+'т';i:=i+4 end; if copy (b,i,6)='110101' then begin a:=a+'у';i:=i+6 end; if copy (b,i,7)='1111110' then begin a:=a+'ф'; i:=i+7 end; if copy (b,i,7)='1111000' then begin a:=a+'х';i:=i+7 end; if copy (b,i,7)='1111101' then begin a:=a+'ц';i:=i+7 end; if copy (b,i,7)='1110110' then begin a:=a+'ч';i:=i+7 end; if copy (b,i,7)='1111010' then begin a:=a+'ш';i:=i+7 end; if copy (b,i,7)='1111100' then begin a:=a+'щ';i:=i+7 end; if copy (b,i,6)='110110' then begin a:=a+'ь'; i:=i+6 end; if copy (b,i,6)='110111' then begin a:=a+'ы'; i:=i+6 end; if copy (b,i,7)='1111111' then begin a:=a+'э';i:=i+7 end; if copy (b,i,7)='1111011' then begin a:=a+'ю';i:=i+7 end; if copy (b,i,6)='111001' then begin a:=a+'я'; i:=i+6 end; if copy (b,i,3)='000' then begin a:=a+'_'; i:=i+3 end; if copy (b,i,4)='0110' then begin a:=a+'А'; i:=i+4 end; if copy (b,i,6)='111000' then begin a:=a+'Б'; i:=i+6 end; if copy (b,i,5)='10101' then begin a:=a+'В'; i:=i+5 end; if copy (b,i,7)='1110101' then begin a:=a+'Г';i:=i+7 end; if copy (b,i,5)='11001' then begin a:=a+'Д';i:=i+5 end; if copy (b,i,4)='0100' then begin a:=a+'Е'; i:=i+4 end; if copy (b,i,7)='1110111' then begin a:=a+'Ж';i:=i+7 end; if copy (b,i,7)='1110100' then begin a:=a+'З';i:=i+7 end; if copy (b,i,4)='0101' then begin a:=a+'И'; i:=i+4 end; if copy (b,i,7)='1111001' then begin a:=a+'Й'; i:=i+7 end; if copy (b,i,5)='10111' then begin a:=a+'К'; i:=i+5 end; if copy (b,i,5)='10100' then begin a:=a+'Л';i:=i+5 end; if copy (b,i,5)='11000' then begin a:=a+'М';i:=i+5 end; if copy (b,i,4)='0111' then begin a:=a+'Н'; i:=i+4 end; if copy (b,i,3)='001' then begin a:=a+'О';i:=i+3 end; if copy (b,i,6)='110100' then begin a:=a+'П'; i:=i+6 end; if copy (b,i,5)='10110' then begin a:=a+'Р';i:=i+5 end; if copy (b,i,4)='1001' then begin a:=a+'С'; i:=i+4 end; if copy (b,i,4)='1000' then begin a:=a+'Т';i:=i+4 end; if copy (b,i,6)='110101' then begin a:=a+'У';i:=i+6 end; if copy (b,i,7)='1111110' then begin a:=a+'Ф'; i:=i+7 end; if copy (b,i,7)='1111000' then begin a:=a+'Х';i:=i+7 end; if copy (b,i,7)='1111101' then begin a:=a+'Ц';i:=i+7 end; if copy (b,i,7)='1110110' then begin a:=a+'Ч';i:=i+7 end; if copy (b,i,7)='1111010' then begin a:=a+'Ш';i:=i+7 end; if copy (b,i,7)='1111100' then begin a:=a+'Щ';i:=i+7 end; if copy (b,i,6)='110110' then begin a:=a+'Ь'; i:=i+6 end; if copy (b,i,6)='110111' then begin a:=a+'Ы'; i:=i+6 end; if copy (b,i,7)='1111111' then begin a:=a+'Э';i:=i+7 end; if copy (b,i,7)='1111011' then begin a:=a+'Ю';i:=i+7 end; if copy (b,i,6)='111001' then begin a:=a+'Я'; i:=i+6 end until i&gt;=length(b) end; procedure dekod; begin writeln ('Введите строку - '); read (b); drk (b,a); writeln ('Полученное сообщение- ',a); end; procedure kod; begin writeln ('Введите строку - '); read (a); rk (a,b); writeln ('Полученное сообщение- ',b); end; begin writeln('Меню'); writeln('1-'); writeln('2-'); read(z); if z=1 then dekod; if z=2 then kod; end.

Также если у кого есть какие программы по Шенону-Фено буду благодарен:)
Post #: 1
RE: Программа на паскале - 2012-02-28 02:59:49.243333   
Genco

Сообщений: 1662
Оценки: 90
Присоединился: 2007-12-16 23:11:22.003333
Теги , пожалуйста - раз. Циклы уменьшают необходимость в тупом копировании кода - два. http://kostya.kuban.ru/archives/284 - случайная ссылка яндекса - три.
Post #: 2
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> Программа на паскале







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.