Дана таблица а[1..n], состоящая из нулей и единиц. Проверить существует ли строгое чередование.
Для решения задачи, необходимо в цикле пройтись по всему массиву, проверяя текущий и следующий за ним элементы на чередование. Текущий элемент(a[i]) может быть равен либо единице (1), тогда следующий элемент (a[i+1]) должен будет быть равным нулю(0), либо текущий равен нулю, а следующий за ним единице. Это условие запишеться следующим образом:
If ((a[i]=1)and(a[i+1]=0))or((a[i]=0)and(a[i+1]=1)) Then …
В противном случае, если условие не выполняется, то выходим из цикла и возвращаем «НЕТ» — как ответ на задачу.
Основной проблемой при работе с массивами в Turbo Pascal, является отсутствие динамичности длины массива, поскольку все переменные в Паскале необходимо объявлять в разделе описания. То есть фактически нет возможности задать размер массива в теле операторов, в момент выполнения программы. Поэтому в подобных задачах, в разделе описания создаем массив, с размерностью, которая заранее превосходит размерность массива, которую может ввести пользователь (в рамках разумного конечно). В программе же работаем с тем числом первых элементов, которое ввел пользователь, игнорируя те элементы, позиция которых превосходят введенное пользователем число.
Uses Crt;
Var
a:Array[1..10] Of Integer;
Flag,i,k,n:Integer;
Begin
ClrScr;
Write('Количество элементов таблицы, n=');
ReadLn(n);
For i:=1 To n Do
Begin
Write('a[',i,']=');
ReadLn(a[i]);
End;
i:=1;
While i<=n-1 do
Begin
Flag:=0;
If ((a[i]=1)and(a[i+1]=0))or((a[i]=0)and(a[i+1]=1))
Then Flag:=1
Else
Begin
Write('нет');
Flag:=0;
ReadLn;
Halt;
End;
i:=i+2;
End;
If Flag=1 Then Write('Чередование существует');
Readln;
End.