Stolar228

Stone Lib ASCII v0.7.2

Jan 6th, 2019
359
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 8.42 KB | None | 0 0
  1. //////////////////////////////
  2. //     Stone Lib ASCII+     //
  3. //       by 100lar          //
  4. //                   v0.7.2 //
  5. //////////////////////////////
  6.  
  7. /////////////////тупа степень///////////////////
  8. function step(x,j:integer):integer;
  9. var
  10.   i,st : integer;
  11. begin
  12.   if x = 0 then step := 1 else begin
  13.     st := 1;
  14.     for i := 1 to x do begin
  15.       st := st * j;
  16.       step := st;
  17.       end;
  18.     end;
  19. end;
  20. /////////////стандартное ASCII кодирование//////////////////////
  21. function code(kod:integer;slovo:string):string;
  22. var
  23. i,j,g:integer;
  24. slovofinal:string;
  25. begin
  26.         for g := 1 to kod do begin
  27.         slovofinal:='';
  28.           for i := 1 to length(slovo) do
  29.             begin
  30.               j:=0;
  31.               while true do
  32.                 begin
  33.                   j := j + 1;
  34.                   if copy(slovo, i, 1) = chr(j) then
  35.                     begin
  36.                       slovofinal:=slovofinal + j+'/';
  37.                       break;
  38.                     end;
  39.                 end;
  40.              end;
  41.              slovo:=slovofinal;
  42.             end;
  43.            code:=slovofinal;
  44. end;
  45.  
  46. function decode(kod:integer;slovo:string):string;
  47. var
  48.   i,g,j:integer;
  49.   slovofinal,buf:string;
  50. begin
  51.         for g := 1 to kod do begin
  52.         slovofinal:='';
  53.           for i := 1 to length(slovo) do
  54.             begin
  55.               if copy(slovo, i, 1 ) <> '/' then
  56.                 buf := buf + copy(slovo, i, 1)
  57.                else
  58.               while true do
  59.                 begin
  60.                   j:=j+1;
  61.                   if buf = j+'' then begin
  62.                       slovofinal:= slovofinal + chr(j);
  63.                       buf:='';
  64.                       j:=0;
  65.                       break;
  66.                     end;
  67.                 end;
  68.                 end;
  69.                 slovo:=slovofinal;
  70.                 decode:=slovofinal;
  71.             end;
  72.           //writeln('  стало: ', slovofinal);
  73. end;
  74. ////////////модифицированное ASCII кодирование//////////////
  75. function code_simv(kod:integer;slovo,simv:string):string;
  76. var
  77. i,j,g:integer;
  78. slovofinal:string;
  79. begin
  80.         for g := 1 to kod do begin
  81.         slovofinal:='';
  82.           for i := 1 to length(slovo) do
  83.             begin
  84.               j:=0;
  85.               while true do
  86.                 begin
  87.                   j := j + 1;
  88.                   if copy(slovo, i, 1) = chr(j) then
  89.                     begin
  90.                       slovofinal:=slovofinal + j+simv;
  91.                       break;
  92.                     end;
  93.                 end;
  94.              end;
  95.              slovo:=slovofinal;
  96.             end;
  97.            code_simv:=slovofinal;
  98. end;
  99.  
  100. function decode_simv(kod:integer;slovo,simv:string):string;
  101. var
  102.   i,g,j:integer;
  103.   slovofinal,buf:string;
  104. begin
  105.         for g := 1 to kod do begin
  106.         slovofinal:='';
  107.           for i := 1 to length(slovo) do
  108.             begin
  109.               if copy(slovo, i, 1 ) <> simv then
  110.                 buf := buf + copy(slovo, i, 1)
  111.                else
  112.               while true do
  113.                 begin
  114.                   j:=j+1;
  115.                   if buf = j+'' then begin
  116.                       slovofinal:= slovofinal + chr(j);
  117.                       buf:='';
  118.                       j:=0;
  119.                       break;
  120.                     end;
  121.                 end;
  122.                
  123.                 end;
  124.                 slovo:=slovofinal;
  125.                 decode_simv:=slovofinal;
  126.             end;
  127. end;
  128. //////////////кодирование файлов///////////
  129. function codefile(i:integer;filename,filename2:string):string;
  130. var
  131.   textt,textt2:textfile;
  132.   buf:string;
  133. begin
  134.   assign(textt,filename);
  135.   reset(textt);
  136.   assign(textt2,filename2);
  137.   rewrite(textt2);
  138.   while true do
  139.     begin
  140.       readln(textt,buf);
  141.       if buf = 'end()' then begin writeln(textt2,'end()'); break; end;
  142.       buf := code(i,buf);
  143.       writeln(textt2,buf);
  144.     end;
  145.   close(textt);
  146.   close(textt2);
  147. end;
  148. function decodefile(i:integer;filename,filename2:string):string;
  149. var
  150.   textt,textt2:textfile;
  151.   buf:string;
  152. begin
  153.   assign(textt,filename);
  154.   reset(textt);
  155.   assign(textt2,filename2);
  156.   rewrite(textt2);
  157.   while true do
  158.     begin
  159.       readln(textt,buf);
  160.       if buf = 'end()' then begin writeln(textt2,'end()'); break; end;
  161.       buf := decode(i,buf);
  162.       writeln(textt2,buf);
  163.     end;
  164.   close(textt);
  165.   close(textt2);
  166. end;
  167. ///////////////система сч 2 и 10//////////////
  168. function scdes(a:integer):string;
  169. var
  170.   k,b,d,s:integer;
  171. begin
  172.   repeat
  173.     b := a mod 10;
  174.     d := a div 10;
  175.     s := s +b *step(k,2);
  176.     k := k + 1;
  177.     a := d;
  178.   until d = 0;
  179.   scdes := inttostr(s);
  180. end;
  181.  
  182. function scdv(n:integer):string;
  183. var
  184.   i: integer;
  185.   s, final: string;
  186. begin
  187.   while n > 0 do
  188.     begin
  189.       if n mod 2 = 0 then
  190.         s := s + '0'
  191.       else
  192.         begin
  193.           s := s + '1';
  194.           n := n - 1;
  195.         end;
  196.       n := n div 2;
  197.     end;
  198.   for i := length(s) downto 1 do
  199.     final := final +s[i];
  200.     scdv := final;
  201. end;
  202.  
  203. ///////////////система сч 2 и 10 + кодировка////////////////////
  204. function sccode(kod:integer;x:string):string;
  205. var
  206.   i,bufi,j:integer;
  207.   buf,s,final:string;
  208. begin
  209.   s := code(kod,x);
  210.   for i := 1 to length(s) do
  211.     if s[i] = '/' then
  212.       begin
  213.         final := final + scdv(strtoint(buf)) + '/';
  214.         buf := '';
  215.       end else
  216.         buf := buf + s[i];
  217.      sccode := final;
  218. end;
  219.  
  220. function scdecode(kod:integer;x:string):string;
  221. var
  222.   i,bufi:integer;
  223.   buf,s,final:string;
  224. begin
  225.   s := x;
  226.   for i := 1 to length(s) do
  227.     if s[i] = '/' then
  228.       begin
  229.         final := final + scdes(strtoint(buf))+'/';
  230.         buf := '';
  231.       end else
  232.         buf := buf + s[i];
  233.         //writeln(final);
  234.         final := decode(kod,final);
  235.      scdecode := final;
  236. end;
  237. /////////////////система сч 2 и 10 + кодировка + символы между шифровками//////////////////
  238. function sccode_simv(kod:integer;x,j:string):string;
  239. var
  240.   i,bufi:integer;
  241.   buf,s,final:string;
  242. begin
  243.   s := code_simv(kod,x,j);
  244.   for i := 1 to length(s) do
  245.     if s[i] = j then
  246.       begin
  247.         final := final + scdv(strtoint(buf)) + j;
  248.         buf := '';
  249.       end else
  250.         buf := buf + s[i];
  251.      sccode_simv := final;
  252. end;
  253.  
  254. function scdecode_simv(kod:integer;x,j:string):string;
  255. var
  256.   i,bufi:integer;
  257.   buf,s,final:string;
  258. begin
  259.   s := x;
  260.   for i := 1 to length(s) do
  261.     if s[i] = j then
  262.       begin
  263.         final := final + scdes(strtoint(buf))+j;
  264.         buf := '';
  265.       end else
  266.         buf := buf + s[i];
  267.         //writeln(final);
  268.         final := decode_simv(kod,final,j);
  269.      scdecode_simv := final;
  270. end;
  271. ///////////////////////////////////пример
  272. begin
  273.   writeln(code(1,'hello'));                   //стандартное кодирование
  274.   writeln(decode(1,code(1,'hello')));         //стандартное раскодирование
  275.    writeln;
  276.   writeln(code_simv(1,'hello',' '));    //стандартное кодирование + можно изменить символ между числами(по стандарту '/')
  277.   writeln(decode_simv(1,code_simv(1,'hello',' '),' '));    //стандартное раскодирование + можно изменить символ между числами(по стандарту '/')
  278.    writeln;
  279.   writeln(scdes(101));                        //перевод из 2 в 10 сч
  280.   writeln(scdv(strtoint(scdes(101))));        //перевод из 10 в 2 сч
  281.    writeln;                              
  282.   writeln(sccode(2,'hello'));                 //стандартное кодирование + двоичная шифровка
  283.   writeln(scdecode(2,sccode(2,'hello')));     //раскодирование стандартной кодировки с двоичной шифровкой
  284.    writeln;              
  285.   writeln(sccode_simv(2,'hello',' '));                        //стандартное кодирование + двоичная шифровка + можно изменить символ между числами(по стандарту '/')
  286.   writeln(scdecode_simv(2,sccode_simv(2,'hello',' '),' '));   //раскодирование стандартной кодировки с двоичной шифровкой + можно изменить символ между числами(по стандарту '/')
  287.  
  288. end.
Advertisement
Add Comment
Please, Sign In to add comment