Является ли интервалом объединение интервалов? - 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.

Объяснение кода листинга программы

  1. Создаётся тип данных inter, который представляет собой набор двух чисел с плавающей точкой.
  2. Создаётся массив mas из 10 элементов типа inter.
  3. Создается переменная m, которая является массивом mas.
  4. Создаются временные переменные temp, t, max и min.
  5. Переменные i и j инициализируются значениями от 1 до 10 (n).
  6. В цикле 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.
  7. В цикле for i>=1 до n-1 выполняется следующий код:
    • Для каждой пары элементов массива mas с индексами i и i+1 выполняется следующий код:
      • Если значение a1 у элемента с индексом i больше значения a1 у элемента с индексом i+1, то значения переменных a1, a2 и t меняются местами с помощью блока begin...end.
    • Переменная max устанавливается равной максимальному значению a2 среди всех элементов массива mas.
  8. В цикле for i>=2 до n-1 выполняется следующий код:
    • Если значение a2 у элемента с индексом i больше значения a2 у элемента с индексом i-1, то значения переменных a1, a2 и t меняются местами с помощью блока begin...end.
    • Переменная max устанавливается равной максимальному значению a2 среди всех элементов массива mas.
  9. В цикле for i=1 до n выполняется следующий код:
    • Значение переменной min устанавливается равным минимальному значению a2 среди всех элементов массива mas.
    • Если min равно max, то выводится сообщение интервал (min, max) является объединением всех интервалов.
    • Если min не равно max, то выводится сообщение объединение всех интервалов не интервал.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.222 из 5
Похожие ответы