Проверка строгого чередования в массиве

      Комментарии к записи Проверка строгого чередования в массиве отключены

Главная Форумы Программирование Программирование на Pascal Проверка строгого чередования в массиве

В этой теме 0 ответов, 1 участник, последнее обновление  Васильев Владимир Сергеевич 2 нед., 4 дн. назад.

  • Автор
    Сообщения
  • #4231

    Задача: дана таблица а[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 …

    В противном случае, если условие не выполняется, то выходим из цикла и возвращаем «НЕТ» — как ответ на задачу.

    Код программы:

    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.

    Основной проблемой при работе с массивами в Turbo Pascal, является отсутствие динамичности длины массива, поскольку все переменные в Паскале необходимо объявлять в разделе описания. То есть фактически нет возможности задать размер массива в теле операторов, в момент выполнения программы. Поэтому в подобных задачах, в разделе описания создаем массив, с размерностью, которая заранее превосходит размерность массива, которую может ввести пользователь (в рамках разумного конечно). В программе же работаем с тем числом первых элементов, которое ввел пользователь, игнорируя те элементы, позиция которых превосходяь введеное пользователем число.

Для ответа в этой теме необходимо авторизоваться.