Дана возрастающая последовательность натуральных чисел, определяющая номера страниц документа, которые необходимо распечатать. Оказалось, что такой формат представления информации не эффективен, так как для печати всего документа необходимо перечислить все страницы. Задача преобразовать данные в новый формат, в котором несколько подряд идущих страниц задаются не перечислением, а указанием интервала начальной и конечной страницы так, как указано в примере — Pascal(Паскаль)

Пример:
12
1 3 4 6 7 8 10 12 13 14 15 20
1 3-4 6-8 10 12-15 20
uses crt;
var N, i, s : integer;
a: array[1..100]of integer;
 
begin
    clrscr;
    write('N -> ');
    readln(N);
    for i:=1 to N do read(a[i]);
    readln;
    i:=1;
    while i <= N do
    begin
        s:=i;
        while (i < N) and (a[i] + 1 = a[i+1]) do inc(i);
        if s=i then write(a[s],' ') else write(a[s],'-',a[i],' ');
        inc(i);
    end;
    readln;
end.

Leave a Comment

− 3 = 2