Распаковка массива

Задача: 

Вводится массив, представляющий собой сжатие серий нулей и единиц, где каждый элемент обозначает количество элементов в очередной серии нулей или единиц. Но если первым элементом вводимого массива является 0, значит первая серия распакованного массива - единицы. Например:

  • массив [2, 3] распаковывается как 00111,
  • массив [0, 4, 1, 2] распаковывается как 1111011.

Требуется написать программу распаковки вводимого массива.

Алгоритм решения задачи: 

Если первый элемент массива 0, то в дальнейшем следует делать перебор массива со второго элемента (i := 2) и сначала выводить на экран единицы (j := 1). Если же первый элемент массива другой, то его перебор начинаем с первого элемента и сначала выводим нули.

Перебираем массив. На каждой итерации выводим на экран количество нулей или единиц, соответствующее очередному значению элемента массива. После этого обращаем значение переменной j (с 1 на 0 или наоборот).

Программа на языке Паскаль: 

const M = 10;
var   
    a: array[1..M] of byte;
    q, i, j, count: byte;
begin
    write('количество элементов массива: ');
    readln(q);
    write ('вводите элементы через пробел: ');
    for i:=1 to q do begin
        read(a[i]);
    end;
    if a[1] = 0 then begin
        i := 2;
        j := 1;
    end
    else begin
        i := 1;
        j := 0;
    end;
    for i:=i to q do begin
        for count:=1 to a[i] do
            write(j);
        if j = 1 then j:=0
        else if j = 0 then j:=1;
    end;
    writeln;
 
end.

Пример выполнения кода:

количество элементов массива: 5
вводите элементы через пробел: 0 4 5 4 3 
1111000001111000

Комментарии

помогите ришит задачу программа цифровой михрометер на компьютер

Помогите решить задачу ,программы цифровой михрометр на компьютер что бы , показывала на мониторе, щупом брал на провод обмоточный и показивала на мониторе диаметр провода

ваывпв

Получите и распишитесь

procedure TForm1.Button1Click(Sender: TObject);
var
mas:array of integer;
kol,i,j,s4,p:integer;
begin
p:=0;
s4:=1;
kol:=0;
for i:=0 to length(edit1.Text) do
 
if edit1.Text[i]=',' then
inc(kol);
inc(kol);
setlength(mas,kol);
 
 
 
for i:=1 to length(edit1.Text)  do
begin
 
 
if edit1.Text[i]=',' then continue;
 
mas[p]:=strtoint(edit1.Text[i]);
inc(p);
end;
 
 
for i:=0 to high(mas) do
begin
if mas[i]=0 then continue;
 if s4=1 then
s4:=2 else s4:=1 ;
 
 if mas[i-1]=0 then
 s4:=2;
for j:=1 to mas[i] do
 
if s4=1 then
memo1.Lines.Add(inttostr(0))
else
memo1.Lines.Add(inttostr(1))
 
 end;
 
end;