Дан список чисел. Определите, сколько в этом списке элементов, которые больше двух своих соседей и выведите ко - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Дан список чисел. Определите, сколько в этом списке элементов, которые больше двух своих соседей и выведите количество таких элементов. Входные данные Вводится список чисел. Все числа списка находятся на одной строке. Выходные данные Выведите ответ на задачу. Примеры входные данные 1 2 3 4 5 выходные данные 0

Решение задачи: «Дан список чисел. Определите, сколько в этом списке элементов, которые больше двух своих соседей и выведите ко»

textual
Листинг программы
Type ukazat= ^S; 
   S= record 
      Inf: integer; 
      Next: ukazat; 
   End; 
var u,t:ukazat;
    i,k,tmp,err:integer;
    n:string;
procedure addelem(var s:ukazat;dat:integer);
var hv:ukazat;
begin
 if s=nil 
  then begin new(s);s^.next:=nil;s^.inf:=dat end
  else
   begin
    hv:=s;
    while hv^.next<>nil do hv:=hv^.next;
    new( hv^. next);
    hv:= hv^.next; 
    hv^.next:= nil; 
    hv^. inf:= dat; 
   end
end;
begin
 readln(n);n:=n+' ';
 u:=nil;
 repeat
  val(copy(n,1,pos(' ',n)-1),tmp,err);
  delete(n,1,pos(' ',n));
  if err=0 then addelem(u,tmp);
 until n=''; 
 k:=0;
 while u^.next<>nil do
  begin
   tmp:=u^.inf;
   u:=u^.next;
   t:=u;
   if u^.Next<>nil 
    then begin
          t:=u^.next;
          if (tmp<u^.inf)and(u^.inf>t^.inf) then inc(k)
         end
  end;
 writeln(k)
end.

Объяснение кода листинга программы

Данный код написан на языке Turbo Pascal и предназначен для решения задачи, которая заключается в определении количества элементов в списке чисел, которые больше двух своих соседей. В начале кода определяется тип данных ukazat, который представляет собой запись с полями Inf (инф) и Next (следующий элемент). Затем объявляются переменные u, t, i, k, tmp и err типа ukazat и integer. Процесс выполнения программы начинается с инициализации переменной u как nil. Затем происходит чтение строки с помощью функции readln(). Введенная строка сохраняется в переменной n. Далее идет цикл, в котором происходит обработка каждого символа в строке n. Если текущий символ является пробелом, то происходит переход к следующему символу. Если текущий символ не является пробелом, то он добавляется в начало строки n. Если в процессе обработки строки n не было найдено ни одного числа, то переменная u инициализируется как nil. В противном случае, происходит создание нового элемента hv и переход к нему из предыдущего элемента hv. Затем происходит повторное создание элемента hv и переход к нему из предыдущего элемента hv. После этого происходит изменение значения поля inf в элементе hv на значение dat. После завершения цикла обработка строки n происходит вывод значения переменной k, которое представляет количество элементов в списке, удовлетворяющих условию задачи. Вложенных списков в данном коде нет.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.75 из 5
Похожие ответы