const
abc = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя';
var
i, j, k: integer;
q: boolean;
t: text;
s1, s2, w: string;
begin
writeln('Введите закодированное слово');
readln(s1);
q := false; // Инициализация переменной q
for i := 1 to 33 do
begin
s2 := ''; // Переинициализация s2 для каждого нового сдвига
for j := 1 to length(s1) do
begin
for k := 1 to 33 do
if s1[j] = abc[k] then
begin
s2 := s2 + abc[(k + i - 1) mod 33 + 1]; // Исправлено вычисление сдвига
break; // Выход из вложенного цикла после успешного сопоставления и замены символа
end;
end;
assign(t, 'words.txt');
reset(t);
while not eof(t) do
begin
readln(t, w);
if w = s2 then
begin
q := true;
writeln('Исходное слово: ', w, ', сдвиг ', i); // Исправлен вывод сдвига
break; // Выход из цикла чтения после нахождения слова
end;
end;
close(t);
if q then break; // Выход из внешнего цикла после успешного нахождения слова
end;
if not q then
begin
writeln('Слова нет в памяти. Добавьте новое слово:');
readln(w); // Изменено на чтение в переменную w для избежания путаницы
assign(t, 'words.txt');
append(t);
writeln(t, w);
close(t);
end;
readln;
end.
abc = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя';
var
i, j, k: integer;
q: boolean;
t: text;
s1, s2, w: string;
begin
writeln('Введите закодированное слово');
readln(s1);
s2 := s1;
for i := 1 to 33 do
begin
for j := 1 to length(s1) do
begin
for k := 1 to 33 do
if s1[j] = abc[k] then s2[j] := abc[(k + i) mod 33 + 1];
end;
assign(t, 'words.txt');
reset(t);
while w <> s2 do
begin
readln(t, w);
if w = s2 then
begin
q := true;
writeln('Исходное слово: ', s2, ', сдвиг ', (33-i - 1) mod 33);
end;
if w = '' then break;
end;
close(t);
end;
if q = false then
begin
writeln('Слова нет в памяти. Добавьте новое слово:');
readln(s1);
assign(t, 'words.txt');
append(t);
writeln(t, s1);
close(t);
end;
readln;
end.