Записи. Тексты программ
Материал из Вики проекта 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.
