Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Антивирус, Курсовая ИС-05 
:(
    Опции темы
IvanK2
Дата 24.3.2006, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 24.3.2006

Репутация: нет
Всего: нет



Написать программу, которая по заданному номеру сигнатур определяет, какими вирусами инфицирован анализируемый файл.
ПРИМЕР ФАЙЛОВ ВХОДНЫХ И ВЫХОДНЫХ ДАННЫХ.
Input.txt
4
smallvirus 2F3E?4E
bigvirys A5*FF?00*A6*23??24
viRusamarlNA 1F?07?5F
polymorph 22*33

Output.txt
smallvirus
polymorph


Помогите !!!!

Это сообщение отредактировал(а) IvanK2 - 24.3.2006, 14:29
PM MAIL   Вверх
IvanK2
Дата 24.3.2006, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 24.3.2006

Репутация: нет
Всего: нет



Есть написанный код в паскале, нужно же написать в 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.



Это сообщение отредактировал(а) Fixin - 25.3.2006, 16:01
PM MAIL   Вверх
Damp1L
Дата 30.3.2006, 08:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 21.3.2006

Репутация: нет
Всего: нет



Да вообще тут всё просто, нада просто парсить указанный файл и всё, вообще нада только найти определённую сточку и сказать что типа найдено то или то.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0409 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.