Записи. Тексты программ

Материал из Вики проекта PascalABC.NET
Версия от 15:51, 19 января 2010; Mikst (обсуждение | вклад) (→‎Ссылки)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигацииПерейти к поиску

Ввод и вывод данных о персонах

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.

Ссылки