Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Почему в паскале выдаёт ошибку Неизвестное имя 'i'

EVS20 Ученик (133), на голосовании 3 месяца назад
Только начал изучать паскаль. Хочу написать маленьку программу.

program FamilyNames;

{ Структура для хранения фамилии }
type
Name = string[40];

{ Список фамилий }
type
NamesList = array of Name;

var
names: NamesList; { Текущий список фамилий }
currentName: Name; { Текущая фамилия для редактирования/удаления }
newName: Name; { Новая фамилия для добавления }
index: Integer; { Индекс текущего выбранного элемента }
numNames: Integer; { Количество фамилий в списке }

procedure AddName();
begin
// Добавление новой фамилии в конец списка
SetLength(names, Length(names) + 1);
names[High(names)] := newName;
end;

procedure EditName();
begin
if (index >= 0) and (index <= High(names)) then
begin
Write('Введите новую фамилию: ');
ReadLn(newName);
names[index] := newName;
end;
end;

procedure RemoveName();
begin
if (index >= 0) and (index <= High(names)) then
begin
SetLength(names, High(names) - index);
for i := index to High(names) do
names[i - 1] := names[i];
end;
end;

procedure ShowNames();
var
i: Integer;
begin
Writeln('Список фамилий:');
for i := Low(names) to High(names) do
Write(names[i] + ', ');
Writeln;
end;

begin
numNames := 0; { Инициализация количества фамилий }
SetLength(names, 0); { Инициализация пустого списка фамилий }

repeat
Write('1. Показать список фамилий');
Write('2. Добавить фамилию');
Write('3. Редактировать фамилию');
Write('4. Удалить фамилию');
Write('5. Выйти');
Write('Выберите операцию: ');
ReadLn(index);

case index of
1: ShowNames();
2: begin
Write('Введите фамилию для добавления: ');
ReadLn(newName);
AddName();
inc(numNames);
end;
3: begin
if numNames > 0 then
begin
index := 0;
for i := Low(names) to High(names) do
if names[i] <> '' then
begin
index := i;
break;
end;
if index >= 0 then
EditName();
end;
end;
4: begin
if numNames > 0 then
begin
index := 0;
for i := Low(names) to High(names) do
if names[i] <> '' then
begin
index := i;
break;
end;
if index >= 0 then
RemoveName();
dec(numNames);
end;
end;
5: Break;
end;
until index = 5;

if numNames = 0 then
WriteLn('Список фамилий пуст')
else
WriteLn('Программа завершена. Сохранено ' + IntToStr(numNames) + ' фамилий.');
end.
Голосование за лучший ответ
lil ilusha Профи (972) 4 месяца назад
i =input ()
вставь это вначало
EVS20Ученик (133) 4 месяца назад
Уже нашёл ошибку for i := Low(names) to High(names) do, а должно быть for var i := Low(names) to High(names) do
Похожие вопросы