Есть написанный код в паскале, нужно же написать в C++ (в среде Builder C++ или Microsoft Visual Studio .NET) знания о котором очень скудны..Помогите "перевести" с одного языка на другой? Код:
| Код | program AntiVirus; uses Crt; type VirData = record Sign: string[100]; Name: string[20]; flag: boolean; end; FindData = record PF:byte; { позиция поиска в сигнатуре } PS:byte; { последняя позиция * в сигнатуре при поиске } PQ:byte; { последняя позиция ? в сигнатуре при поиске } LS:byte; { длина сигнатуры } end; var VirAmount: byte; {количество вирусов} InputFile:text; Virus:array [1.. 10] of VirData; ResFind: array [1..10] of FindData; Ch:char; q:string; HByte:string[2]; i:byte; begin ClrScr; Assign(InputFile,'ol93_3.dat'); Reset(InputFile); Readln(InputFile, VirAmount); Writeln(VirAmount);
for i:=1 to VirAmount do begin ResFind[i].PF:=1; ResFind[i].PS:=1; ResFind[i].PQ:=1; end; ch:=#0;
for i:=1 to VirAmount do begin Virus[i].Name:=''; repeat Read(InputFile,ch); if ch<> ' ' then Virus[i].Name:=Virus[i].Name+ch; until ch=' '; Readln(InputFile, Virus[i].Sign); Virus[i].flag:=true; ResFind[i].LS:=Length(Virus[i].Sign); end; for i:=1 to VirAmount do Writeln(Virus[i].Name, ' ', Virus[i].Sign);
{----------------------------------} while not(SeekEof(InputFile)) do begin Read(InputFile,HByte); Write(HByte); for i:=1 to VirAmount do begin if virus[i].sign[ ResFind[i].PF]='*' then begin ResFind[i].PS:= ResFind[i].PF; inc(ResFind[i].PF); end; if virus[i].sign[ ResFind[i].PF]='?' then begin ResFind[i].PQ:= ResFind[i].PF; inc(ResFind[i].PF); end; q:=copy(virus[i].sign, ResFind[i].PF,2); if HByte=copy(virus[i].sign, ResFind[i].PF,2) then inc(ResFind[i].PF,2); end;{ for i } end; { while } writeln;
for i:=1 to virAmount do writeln(resfind[i].pf,' ',resfind[i].ps,' ',resfind[i].pq,' ',resfind[i].ls); for i:=1 to virAmount do if (resfind[i].pf>=resfind[i].ls) then writeln (virus[i].name); end.
|
|