program Check_with_dictionar var dic array 100 of String cnt Integer f

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
program Check_with_dictionary;
var
dic: array [1..100] of String[8];
cnt: Integer;
function Compare (word1, word2: String): Boolean;
{Истинна, если исходное слово и текущее слово из словаря различны на 1 букву}
var
count, i: Integer;
begin
Compare := FALSE;
if Length (word1) = Length (word2) then begin
count := 0;
for i := 1 to Length (word1) do
if word1[i] <> word2[i] then
Inc (count);
if count = 1 then
Compare := TRUE
end;
end;
function Correct (var word: String): Boolean;
{Сравнение исходного слова со словами из словаря}
var
i: Integer;
begin
Correct := TRUE;
for i := 1 to cnt do
if Compare (word, dic[i]) then begin
word := dic[i];
Correct := FALSE;
Break;
end;
end;
var
word: String;
ch: Char;
NumOfErr: Integer;
begin
{Чтение словаря в массив}
Readln (word);
cnt := 1;
while word <> '#' do begin
dic[cnt] := word;
Inc (cnt);
Readln (word);
end;
{Обработка текста}
word := '';
NumOfErr := 0;
while not Eof do begin
Read (ch);
if ch in ['a'..'z'] then
word := word + ch
else begin
if not Correct (word) then
Inc (NumOfErr);
Write (word+ch);
word := '';
end;
end;
{Вывод последнего слова}
if ch in ['a'..'z'] then
Write (word);
Write (NumOfErr);
end