АвтокорректорРефераты >> Программирование и компьютеры >> Автокорректор
begin
rs:='';
if s>'' then
for pos:= 1 to ord(s[0]) do
rs:=rs+to_upper(s[pos]);
str_to_upper:=rs;
end;
function str_equal(s1:string; s2:string):boolean;
var equal:boolean; pos,len:byte;
begin
equal:=true;
len:=length(s1);
if len<>length(s2) then equal:=false
else begin
if len>0 then begin
for pos:=1 to len do begin
if s1[pos]<>s2[pos] then begin
equal:=false;
break;
end;
end;
end;
end;
str_equal:=equal;
end;
function is_in_dictionary(w:string):boolean;
var found:boolean; dw:string;
begin
found:=false;
reset(dictionary);
w:=str_to_upper(w);
while (not eof (dictionary)) do begin
readln (dictionary,dw);
if dw>'' then begin
dw:=str_to_upper(dw);
if str_equal(w,dw) then begin
found:=true;
break;
end;
end
end;
close(dictionary);
is_in_dictionary:=found;
end;
function correct_word(w:string):string;
var answer:char; new_word:string;
begin
if not is_in_dictionary(w) then begin
writeln;
writeln ('Слова <',w,'> нет в словаре (ENTER-пропустить, "Пробел"-изменить)');
answer:=readkey;
case ord(answer) of
13: correct_word:=w;
ord(' '):
begin
write('Введите правильное слово -- ');
readln(new_word);
correct_word:=new_word;
end;
end;
end
else correct_word:=w;
end;
function correct_string(s:string):string;
var pos,len:integer; in_word:boolean; result,w:string;
begin
len:=length(s);
in_word:=false;
w:='';
result:='';
for pos:=1 to len do begin
if is_rus_alpha(s[pos]) then begin
in_word:=true;
w:=w+s[pos];
end
else begin
if in_word then begin
w:=correct_word(w);
write(w);
result:=result+w;
in_word:=false;
w:='';
end;
result:=result+s[pos];
write(s[pos]);
end;
end;
correct_string:=result;
end;
{$I-}
begin
tmp_file_name:='ОТВЕТ';
write('Введите имя обрабатываемого файла: '); readln(in_file_name);
assign(input_file,in_file_name); reset(input_file);
if (ioresult<>0) or (in_file_name='') then begin
writeln ('Ошибка при открытии файла: ',in_file_name);
readln;
halt;
end;
assign(output_file,tmp_file_name); rewrite(output_file);
assign(dictionary,'dic.txt');
while (not EOF(input_file)) do begin
readln(input_file,line);
line:=correct_string(line);
writeln(output_file,line);
end;
close(input_file);
close(output_file);
end.
Приложение 2
Исходный текст:
По мере роспросттранения кйомпютеров и ускорения их цнтральных процесров стал популярнмы дилаоговый режим работы. Уедельные затраты машиных рисурсов аказывались нескалько выше зато ползователю предаставлялась возможность снять очереднное затруденение.
Текст после проверки:
По мере распространения компьютеров и ускорения их центральных процессов стал популярным диалоговый режим работы. Удельные затраты машинных ресурсов оказывались несколько выше зато пользователю предоставлялась возможность снять очередное затруднение.
Приложение 3.
Текст словаря (dic.txt):
по
мере
и
их
снять
ускорения
стал
режим
работы
затраты
зато
выше
возможность
снять
Приложение 4.
Блок-схема исходного текста программы.
|
|
|
|
|