Процедура неправильно добавляет слово в массив
решил написать подобие орфографического словаря на паскале, но она работает неправильно (не знаю почему). Когда добавляешь слово, а потом пытаешься это же слово добавить повторно, то он сообщает, что слово уже есть в массиве. Но если добавить слово, а потом его распечатать, то в списке его не будет.
var mass: array [0..1000] of string; s:string; dev,kol:integer;
procedure Dub();
var b: boolean; y: char; i:integer;
begin
repeat
b:=true;
write('Введите слово: ');
readln(s);
for i := 0 to kol - 1 do begin
if mass[i] = s then b := false;
end;
if b then begin
mass[kol]:= s;
kol:= kol + 1;
end
else writeln('Это слово есть в списке!');
writeln(kol);
write('Есть еще слова?(Д/Н): ');
readln(y);
until y = 'Н';
end;
procedure print();
var i:integer;
begin
writeln('Список слов:');
for i:=0 to kol - 1 do writeln(' ', mass[i]);
writeln('Всего: ', kol);
end;
begin
repeat
mass[0] := 'кое за чем';
mass[1] := 'брошюра';
kol:=2;
writeln('Действия:');
writeln(' 1: Добавить слово');
writeln(' 2: Распечатать слова');
writeln(' 0: Выход');
write('Введите действие: ');
readln(dev);
case dev of
1: Dub();
2: print();
0: break;
else writeln('Нет такой команды!');
end;
until false;
readln;
end.
Ответы (1 шт):
Автор решения: Ainar-G
→ Ссылка
Так вы же сами внутри цикла список перезаписываете:
BEGIN
REPEAT
mass[0] := 'кое за чем';
mass[1] := 'брошюра';
kol := 2;
WriteLn('Действия: ');
{ … }
Вынесите инициализацию за пределы цикла.