Только начал изучать паскаль. Хочу написать маленьку программу.
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); { Инициализация пустого списка фамилий }
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.
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.