Записи. Тексты программ
Материал из Вики проекта PascalABC.NET
Перейти к навигацииПерейти к поиску
Ввод и вывод данных о персонах
type
Person = record
name: string;
age: integer;
end;
var p1,p2: Person;
begin
readln(p1.name,p1.age);
writeln(p1.name,' ',p1.age);
p2.name := 'Иванов';
p2.age := 20;
p1 := p2;
writeln(p1.name,' ',p1.age);
end.
Поиск в массиве персон по фамилии
type
Person = record
name: string;
age: integer;
end;
var a: array[1..5] of Person;
begin
a[1].name :='Попова'; a[1].age := 20;
a[2].name :='Петрова'; a[2].age := 18;
a[3].name :='Крылов'; a[3].age := 23;
a[4].name :='Иванов'; a[4].age := 25;
a[5].name :='Сидоров'; a[5].age := 17;
var fio: string;
write('Введите фамилию: ');
readln(fio);
var ind := 0;
for var i:=1 to 5 do
if a[i].name=fio then
begin
ind := i;
break
end;
if ind>0 then
writeln('Найдено: ',a[ind].name,' ',a[ind].age)
else writeln('Человека с такой фамилией нет в списке');
end.
Подсчет количества персон с данным возрастом
type
Person = record
name: string;
age: integer;
end;
var
a: array [1..5] of Person;
count: integer;
begin
a[1].name :='Попова'; a[1].age := 20;
a[2].name :='Петрова'; a[2].age := 20;
a[3].name :='Крылов'; a[3].age := 23;
a[4].name :='Иванов'; a[4].age := 20;
a[5].name :='Сидоров'; a[5].age := 17;
var age := 20;
count := 0;
for var i:=1 to 5 do
if a[i].age=age then
count += 1;
writeln('Количество человек с возрастом ',age,' равно ',count);
end.
Выбор из массива точек точки, наиболее близкой к началу координат
type
Point = record
x,y: integer;
end;
var
a: array [1..5] of Point;
min: real;
indmin: integer;
begin
a[1].x := 5; a[1].y := 3;
a[2].x := 4; a[2].y := 4;
a[3].x := 1; a[3].y := 8;
a[4].x := -3; a[4].y := 2;
a[5].x := -2; a[5].y := 4;
min := MaxDouble;
for var i:=1 to 5 do
begin
var p := sqr(a[i].x)+sqr(a[i].y);
if p<min then
begin
min := p;
indmin := i;
end;
end;
writeln('Точка, ближайшая к началу координат: ',a[indmin].x,' ',a[indmin].y);
writeln('Ее расстояние до начала координат: ', sqrt(min):5:3);
end.
Сортировка массива персон по возрасту
type
Person = record
name: string;
age: integer;
end;
const n=5;
var
a: array [1..n] of Person;
begin
a[1].name :='Попова'; a[1].age := 22;
a[2].name :='Петрова'; a[2].age := 15;
a[3].name :='Крылов'; a[3].age := 23;
a[4].name :='Иванов'; a[4].age := 21;
a[5].name :='Сидоров'; a[5].age := 17;
for var i:=n downto 2 do
for var j:=1 to i-1 do
if a[j+1].age<a[j].age then
Swap(a[j+1],a[j]);
writeln('Массив персон, отсортированный по возрастанию возраста:');
for var i:=1 to n do
writeln(a[i].name:8,a[i].age:4);
end.