Является ли интервалом объединение интервалов? - Pascal ABC
Формулировка задачи:
Пусть даны вещественные числа a1, a2, …, a2n. Эти точки определяют n интервалов числовой оси (a1, a2),(a3, a4),...,(a2n-i, a2n). Является ли интервалом объединение этих интервалов? Если да, то указать концы объединенного интервала.
Решение задачи: «Является ли интервалом объединение интервалов?»
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.
Объяснение кода листинга программы
- Создаётся тип данных
inter
, который представляет собой набор двух чисел с плавающей точкой. - Создаётся массив
mas
из 10 элементов типаinter
. - Создается переменная
m
, которая является массивомmas
. - Создаются временные переменные
temp
,t
,max
иmin
. - Переменные
i
иj
инициализируются значениями от 1 до 10 (n). - В цикле for i:=1 до n происходит следующее:
- Для каждого элемента массива
mas
с индексом i выполняется следующий код:- Значения переменных
a1
иa2
устанавливаются случайным образом в интервале от -50 до 50. - С помощью оператора
write
выводится открытый интервал в формате(a1, a2)
. - Если
a2
меньшеa1
, то значения переменныхa1
,a2
иt
меняются местами с помощью блока begin...end.
- Значения переменных
- Переменная
max
устанавливается равной максимальному значениюa2
среди всех элементов массиваmas
. - Переменная
min
устанавливается равной минимальному значениюa2
среди всех элементов массиваmas
.
- Для каждого элемента массива
- В цикле for i>=1 до n-1 выполняется следующий код:
- Для каждой пары элементов массива
mas
с индексами i и i+1 выполняется следующий код:- Если значение
a1
у элемента с индексом i больше значенияa1
у элемента с индексом i+1, то значения переменныхa1
,a2
иt
меняются местами с помощью блока begin...end.
- Если значение
- Переменная
max
устанавливается равной максимальному значениюa2
среди всех элементов массиваmas
.
- Для каждой пары элементов массива
- В цикле for i>=2 до n-1 выполняется следующий код:
- Если значение
a2
у элемента с индексом i больше значенияa2
у элемента с индексом i-1, то значения переменныхa1
,a2
иt
меняются местами с помощью блока begin...end. - Переменная
max
устанавливается равной максимальному значениюa2
среди всех элементов массиваmas
.
- Если значение
- В цикле for i=1 до n выполняется следующий код:
- Значение переменной
min
устанавливается равным минимальному значениюa2
среди всех элементов массиваmas
. - Если
min
равноmax
, то выводится сообщениеинтервал (min, max) является объединением всех интервалов
. - Если
min
не равноmax
, то выводится сообщениеобъединение всех интервалов не интервал
.
- Значение переменной
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д