Цитата(MariyaVo @ 26.11.2008, 07:04 ) | | не могу вначале сделать сортировку... |
А не надо никакой сортировки... Чтобы проверить, имеют ли отрезки общие точки, достаточно:
| Код | function min(a, b: real): real; begin min := a; if b < a then min := b; end; function max(a, b: real): real; begin max := a; if b > a then max := b; end;
const a: array[1 .. 6] of real = ( 1, 7, 3, 9, 2, 5 );
var int_start, int_finish: real; i: integer;
begin int_start := a[1]; int_finish := a[2]; i := 3; while i < 6 do begin if (a[i] > int_finish) or (a[i + 1] < int_start) then begin writeln('no'); halt(1); end else begin int_start := max(int_start, a[i]); int_finish := min(int_finish, a[i + 1]); end; inc(i, 2); end;
writeln(int_start:5:2, ' - ', int_finish:5:2); end. |
(это пример для 3-х отрезков, для твоих 25 будет тот же самый алгоритм... Любая точка, попадающая в конечный интервал, может быть напечатана в качестве результата. К примеру, чтобы не ошибиться, напечатай среднее арифметическое int_start и int_finish)... |