dimiff5
?>

Определите наименьшее расстояние между двумя локальными максимумами последовательности натуральных чисел, завершающейся числом 0. если в последовательности нет двух локальных максимумов, выведите число 0. начальное и конечное значение при этом локальными максимумами не считаются. pascal или python

Информатика

Ответы

манукян29
Под локальным максимумом, скорее всего, имеется в виду число, большее чем оба его соседа, за исключением случая, когда соседом справа является 0. в таком случае достаточно однократно пройтись по всем числам, запоминая минимальное из расстояний между новым и предыдущим обнаруженными максимумами. программа (язык pascal abc.net) var i1,i2,i3: integer;       i: integer;       curr,minr,lastmax: integer; begin   readln(i1,i2);   i: =2;   minr: =1000000;   repeat       readln(i3);       if (i2> i1) and (i2> i3) and (i3< > 0) then begin           curr: =i-lastmax;           if curr< minr then minr: =curr;           lastmax: =i;       end;             i1: =i2;       i2: =i3;       i+=1;   until i2=0;   if minr=1000000 then writeln(0) else writeln(minr); {стоило бы добавить булевую переменную в качестве флага - был ли хоть один max, но вряд ли расстояние между ними превысит миллион : -} end.
alekseev13602

предполагается, что вводимые числа - целые.

1) с цикла repeat until

 

program n1; uses crt; var s,k,i: integer; sr: real; beginwriteln('vvodite chisla. vvedite 0 dlya okoncania vvoda'); repeatreadln(i); s: =s+i; inc(k); until i=0; sr: =s/(k-1); writeln('srednee arifmeticheskoe = ',sr: 4: 4); readlnend.

 

2) с цикла while

program n1; uses crt; var s,k,i: integer; sr: real; beginwriteln('vvodite chisla. vvedite 0 dlya okoncania vvoda'); i: =1; while i< > 0 dobeginreadln(i); s: =s+i; inc(k); end; sr: =s/(k-1); writeln('srednee arifmeticheskoe = ',sr: 4: 4); readlnend.

 

3) с цикла for

 

program n1; uses crt; var s,j,k,i: integer; sr: real; beginwriteln('vvedite kolichestvo chisel'); readln(k); writeln('vvodite chisla'); for j: =1 to k do begin readln(i); s: =s+i; end; sr: =s/k; writeln('srednee arifmeticheskoe = ',sr: 4: 4); readlnend.

 

 

molodoychek

Данная задача состоит из двух подзадач:

Определить цифры, из которых состоит число.

Отсортировать их в порядке возрастания.

Поскольку стоит вопрос о сортировке, то уместно цифры числа помещать массив. Цифры из заданного числа извлекаются путем последовательного нахождения остатка от деления на 10.

const N = 10;

var

   arr: array[1..N] of byte;

   m: longint;

   i, j, k, b: byte;

begin

   readln(m);

   k := 0;

   while m > 0 do begin

       k := k + 1;

       arr[k] := m mod 10;

       m := m div 10;

   end;

 

   for i:=1 to k-1 do

       for j:=1 to k-i do  

           if arr[j] > arr[j+1] then begin

               b := arr[j];

               arr[j] := arr[j+1];

               arr[j+1] := b;

           end;        

 

   for i:=1 to k do  

       write(arr[i],' ');

   writeln;

end.

Объяснение:

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Определите наименьшее расстояние между двумя локальными максимумами последовательности натуральных чисел, завершающейся числом 0. если в последовательности нет двух локальных максимумов, выведите число 0. начальное и конечное значение при этом локальными максимумами не считаются. pascal или python
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

generallor3
maximovpavel9114
istok11
Sadikova Gavrikov
oldprince840
madjk
Sergei_Olga658
Андрей_Станиславовна
rublevaoe392
Оздоевский
alexst123012225
Radikovnanikolaeva
marusyamr
yurazharov
myatadinamo