home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 2002 September
/
Chip_2002-09_cd1.bin
/
zkuste
/
delphi
/
kompon
/
d123456
/
STR_BIT.ZIP
/
16
/
PRIM
/
SKR16.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
2000-02-24
|
4KB
|
106 lines
program Skr16;
{************************************************************************}
{ ¡á óσ«ñ »α«úαá¼¼δ »«ñáÑΓß∩ Σá⌐½, óδσ«ñ¡«⌐ Σá⌐½ »«½πτáÑΓß∩ }
{ c¬αÑ¼í½¿α«ó᡿Ѽ ¿ßσ«ñ¡«ú« Σá⌐½á ó ß««ΓóÑΓßΓó¿¿ ß ºáñá¡¡δ¼ »«½¿¡«¼«¼ }
{ }
{ ö«α¼áΓ ºáñá¡¿∩ »áαá¼ÑΓα«ó τÑαѺ ¬«¼á¡ñ¡πε ßΓ᫬π: }
{ Skr16 [êßσ.Σá⌐½] [öá⌐½ óδó«ñá] [æΓѻѡ∞ »«½¿¡«¼á] [ÄΓó«ñ »«½¿¡«¼á] }
{ }
{ é ß½πτáÑ ºáñá¡¿∩ τáßΓ¿ »áαá¼ÑΓα«ó «ßΓá½∞¡δÑ íπñπΓ ºá»α«ΦÑ¡δ ó αѪ¿¼Ñ }
{ ñ¿á½«úá }
{************************************************************************}
{$F+,R+,X+,B+,V-}
uses StrBit16;
var
InName, OutName, Prom : String;
Stepen, OtvPol : integer;
LenStr,i : WORD;
Ftest : File;
procedure SkrSS(NameIs, NameRez: String; Otv, OtvMax: byte);
{ ¡á½«ªÑ¡¿Ñ ¼π½∞Γ¿»½¿¬áΓ¿ó¡«ú« ߬αѼí½Ñαá }
Var { Dop,} Reg : PStr_Bit;
FIn, FOut : PBitFile;
PrBit : byte;
OtvMaxVn, OtvVn : word;
begin
if (NameIs = '') or (NameRez = '') then Exit;
Reg := New(PStr_Bit,Init(OtvMax));
{ 櫺ñá¡¿Ñ «íΩÑ¬Γ«ó ñ½∩ «íαáí«Γ¬¿ í¿Γ«ó«ú« Σá⌐½á }
FIn := New(PBitFile,Init(8192,4096));
FOut := New(PBitFile,Init(8192,4096));
{ ÄΓ¬αδΓ¿Ñ Σá⌐½«ó }
FIn^.OpenBitFile(NameIs, btOpenRead);
FOut^.OpenBitFile(NameRez, btCreate);
{ ôßΓá¡«ó¬á ¡áτá½∞¡«ú« ß«ßΓ«∩¡¿∩ αÑú¿ßΓαá ߬αѼí½Ñαá }
Reg^.Init_0; Reg^.PutBit(0,1);
{ ƒó¡«Ñ »αÑ«íαẫóá¡¿Ñ Γ¿»á π߬«α∩ÑΓ ó맮ó »α«µÑñπα }
OtvMaxVn := OtvMax-1; OtvVn := Otv-1;
while Fin^.ReadStr(1) = btOk do
begin
PrBit:=(Reg^.GetBit(OtvMaxVn)+Reg^.GetBit(OtvVn)+Fin^.GetBit(0)) mod 2;
FOut^.WriteBit(PrBit);
Reg^.BitDisplase(PrBit);
end;
FIn^.CloseBitFile; { çá¬αδΓ¿Ñ «íαáíáΓδóáѼδσ Σá⌐½«ó}
FOut^.CloseBitFile;
Dispose(FIn,Done); Dispose(FOut,Done); {Äßó«í«ªñÑ¡¿Ñ »á¼∩Γ¿}
Dispose(Reg,Done); { Dispose(Dop,Done);}
Writeln('Äíαáí«Γ¬á ºáóÑαΦÑ¡á');
end;
begin
Writeln('C¬αÑ¼í½¿α«óá¡¿Ñ í¿Γ«ó«ú« »«Γ«¬á');
Writeln('ÇóΓ«α : æѼѡ«ó é.ï. éÑαß¿∩ 3.3 «Γ 25.11.99 ú.');
InName := '';
if ParamCount <1
then repeat
if InName <> '' then writeln('öá⌐½ ',InName, ' ¡Ñ ¡á⌐ñÑ¡! éóÑñ¿ΓÑ ¬«ααÑ¬Γ¡«Ñ ¿¼∩ Σá⌐½á');
write('éóÑñ¿ΓÑ ¿¼∩ ¿ßσ«ñ¡«ú« Σá⌐½á: ');
readln(InName);
{$I-}
Assign(Ftest,InName);
FileMode := 0;
Reset(Ftest);
Close(Ftest);
{$I+}
until (IOResult = 0) and (InName <> '')
else InName :=ParamStr(1); { óº∩Γ∞ ¿¼∩ Σá⌐½á ¿º ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ }
if (ParamCount = 1) and ((InName='?') or (InName='/?') or (InName='-?')
or (InName='h') or (InName='/h') or (InName='-h') )
then begin
writeln;
writeln(' ö«α¼áΓ ºáñá¡¿∩ »áαá¼ÑΓα«ó τÑαѺ ¬«¼á¡ñ¡πε ßΓ᫬π:');
writeln('Skr16 [êßσ.Σá⌐½] [öá⌐½ óδó«ñá] [æΓѻѡ∞ »«½¿¡«¼á] [ÄΓó«ñ »«½¿¡«¼á]');
writeln;
writeln('é ß½πτáÑ ºáñá¡¿∩ τáßΓ¿ »áαá¼ÑΓα«ó «ßΓá½∞¡δÑ íπñπΓ ºá»α«ΦÑ¡δ ó αѪ¿¼Ñ ñ¿á½«úá');
Exit;
end;
if ParamCount < 2 then
begin write('éóÑñ¿ΓÑ ¿¼∩ Σá⌐½á óδó«ñá αѺπ½∞ΓáΓ«ó: ');
readln(OutName);
end
else OutName :=ParamStr(2); { óº∩Γ∞ ¿¼∩ Σá⌐½á ¿º ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ }
if ParamCount < 3 then
begin write('éóÑñ¿ΓÑ ßΓѻѡ∞ »«½¿¡«¼á: ');
readln(Prom);
end
else Prom :=ParamStr(3); { óº∩Γ∞ ¿¼∩ Σá⌐½á ¿º ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ }
Val(Prom, Stepen, i );
if (i <> 0) or (Stepen>64) then begin
Writeln('ÄΦ¿í¬á »α¿ ºáñá¡¿¿ æÆàÅàìê »«½¿¡«¼á!');
Exit end;
if ParamCount > 3 then Prom :=ParamStr(4)
else begin
write('éóÑñ¿ΓÑ «Γó«ñ »«½¿¡«¼á: ');
readln(Prom);
end;
Val(Prom, OtvPol, i );
if (i <> 0) or (Stepen<=OtvPol) then begin
Writeln('ÄΦ¿í¬á »α¿ ºáñá¡¿¿ æÆàÅàìê »«½¿¡«¼á!');
Exit end;
{ é맮ó »α«µÑñπαδ ߬αÑ¼í½¿α«óá¡¿∩ ñá¡¡δσ Σá⌐½á }
SkrSS(InName, OutName, OtvPol, Stepen);
end.