Другие языки программирования и технологии

Помогите дописать программу!!

Вот у меня есть задача: Есть справочник. В нём есть все статьи из журнала за текущ год. В каждой строке название, рубрика и номер журнала. По введённым ключ словам найти в этом списке подходящие статьи.
И вот есть почти доделаный код, но не пойму что нужно доделать

Program er;
Label r;
Const
n=2;
var
fail: text;
z,Result: string;
key: array [1..10] of string;
probel: string;
keyslova,slovo,s1: string;
shet: integer;
j: integer;
Flag: boolean;

BEGIN

{Ввод ключевых слов}
probel:=' ';
shet:=0;
while probel<>'' do begin
readln (keyslova);
If probel<>'' then begin
shet:= shet+1;
key[shet]:= keyslova;
end;
if shet=n then begin
probel:='';
writeln('Хватит');
end;
end;

{Открытие файла}
assign(fail,'c:\wfile.txt');
reset(fail);

{Чтение файла}
while not eof(fail) do begin
ReadLn(fail,z);

{Удаление пробелов в начале}
while (z[1] = ' ') and (Length(z) > 0) do Delete(z,1,1);

{Удаление пробелов в конце}
while (z[Length(z)] = ' ') and (Length(z) > 0) do Delete(z,Length(z),1);

{Удаление повторяющихся пробелов}
for j:= Length(z) downto 2 do
while (z[J] = ' ') and (z[J - 1] = ' ') do
Delete(z, J, 1);

{Выделение слов}
slovo := z + ' ';
while Pos(' ', slovo) > 0 do begin
shet:=0;
while shet<>2 do begin
shet:=shet+1;
s1 := Copy(slovo, 1, Pos(' ',slovo)-1);
Delete (slovo, 1, Pos(' ', slovo));
end;
end;

{Сам Поиск}
Flag := False; {пока совпадений нет}
for j:=1 to n do begin
if Pos(key[j], s1) > 0 then Flag := True;
if Flag=true then WriteLn(slovo);
end;

end;

close(fail);
ReadLn; {чтобы увидеть результат}
END.
Доброго времени суток.

uses Crt;
const n = 6;
var
InF : Text;
z, s1, slovo : String;
KeyWord : array [1..n] of String;
KeyCount, j, m : integer;
Flag : Boolean;

begin
ClrScr;

{Ввод ключевых слов}
s1 := ' ';
KeyCount:=0;
while s1 <> '' do begin
ReadLn (s1);
if s1 <> '' then begin
KeyCount := KeyCount + 1;
KeyWord[KeyCount] := s1;
end;
if KeyCount = n then begin
s1 := '';
WriteLn('Хватит');
end;
end;

{Открытие файла}
Assign(InF,'wfile.txt');

Reset(InF);

{Чтение файла}
while not Eof(InF) do begin
ReadLn(InF,z);

{Удаление пробелов в начале}
while (z[1] = ' ') and (Length(z) > 0) do Delete(z,1,1);

{Удаление пробелов в конце}
while (z[Length(z)] = ' ') and (Length(z) > 0) do Delete(z,Length(z),1);

{Удаление повторяющихся пробелов}
for j:= Length(z) downto 2 do
while (z[J] = ' ') and (z[J - 1] = ' ') do Delete(z, J, 1);

{Выделение слов}
slovo := z + ' '; {если здесь добавляется пробел, то можно не удалять концевые пробелы ранее}

m := 0;
while Pos(' ', slovo) > 0 do begin
s1 := Copy(slovo, 1, Pos(' ',slovo)-1);
Delete (slovo, 1, Pos(' ', slovo));
m := m + 1; {счетчик выделенных слов}
if m = 2 then begin
{Сам Поиск}
Flag := False; {пока совпадений нет}
for j:=1 to KeyCount do
if Pos(KeyWord[j], s1) > 0 then Flag := True;
if Flag then WriteLn(z); {если есть хоть одно совпадение - выводим сторку из файла}
end;
end;
end;

{Закрытие файла}
Close(InF);

ReadLn; {чтобы увидеть результат}
end.

Примерно так. По уму, надо перед сравнением ключевого слова и выделенного привести их к одному регистру, чтобы компьютер и Компьютер считались одним словом. Или все делать в одном регистре.

Удачи!
РН
Рахымжан Наеков
59 612
Лучший ответ