Является ли интервалом объединение интервалов? - Pascal ABC

Формулировка задачи:

Пусть даны вещественные числа a1, a2, …, a2n. Эти точки определяют n интервалов числовой оси (a1, a2),(a3, a4),...,(a2n-i, a2n). Является ли интервалом объединение этих интервалов? Если да, то указать концы объединенного интервала.

Код к задаче: «Является ли интервалом объединение интервалов? - Pascal ABC»

textual
const n=10;
type inter=record
       a1,a2:real
      end;
     mas=array[1..n] of inter;
var m:mas;
    temp:inter;
    t,max,min:real;
    i,j:integer;
begin
 randomize;
 for i:=1 to n do
  with m[i] do
   begin
    a1:=-random*(20)+random*(20);
    a2:=-random*(20)+random*(20);
    write('(',a1:0:1,',',a2:0:1,') ');
    {если начало интервала меньше чем значение конца - меняем их местами}
    if a2<a1 then begin t:=a1;a1:=a2;a2:=t end;
   end;
 {сортируем интервалы по началу}
 for i:=1 to n-1 do
  for j:=1 to n-i do
    if m[j].a1>m[j+1].a1
     then
      begin
       temp:=m[j];
       m[j]:=m[j+1];
       m[j+1]:=temp
      end;
  max:=m[1].a2;    
  {находим максимальное значение конца интервалов}
  for i:=2 to n do if m[i].a2>max then max:=m[i].a2;
  writeln;
  min:=m[1].a2;
  {сдвигаем min так, чтобы интервалы перекрывали друг друга}
  for i:=1 to n do 
   with m[i] do
    if (a1<min)and(min<a2) then min:=a2;
  {вывод результата}
  if min=max
   then
    begin
     min:=m[1].a1;
     writeln('интервал (',min:0:1,', ',max:0:1,') является объединением всех интервалов');
    end
   else writeln('объединение всех интервалов не интервал') 
end.

9   голосов, оценка 4.222 из 5


СОХРАНИТЬ ССЫЛКУ