Предмет: Информатика, автор: спирит5ллл

Дан массив, содержащий 2015 положительных целых чисел. Напишите на одном из языков программирования программу, которая находит в этом массиве количество локальных минимумов, значение которых кратно 3. Локальным минимумом называется элемент массива, который меньше всех своих соседей. Например, в массиве из 6 элементов, содержащем числа 4, 6,12, 7, 3, 8, есть два локальных минимума: это элементы, равные 4 и 3. Программа должна вывести общее количество подходящих элементов,
значения элементов выводить не нужно.


alamar: и за раз будет задаваться 2015 елементов ?
спирит5ллл: Возможно, числа задаются рандомом
archery: здается мне что это алимпиадная задачка

Ответы

Автор ответа: archery
0
a=[]
for i in 1..2015
    a<<Random.rand(200)-100
end
p a

k=0
for i in 0...a.size
    if (a[i]%3==0) and ((i==0 and a[0]<a[1]) or (i==a.size-1 and a[i]<a[i-1]) or (a[i]<a[i-1] and a[i]<a[i+1]))
        k+=1
    end
end
p k


Аноним: Посему не надо множить количество неприятностей, надеясь на оптимизацию компилятора.
archery: ок, учту на будущее что компиляторы могут быть не оптимизированы
Аноним: И еще: никогда не стану писать важных программ в системе, которая проверяет каждый операнд на нулл/нил/не объект: это полный идиотизм, тормозящий работу не то, чтобы в разы - в десятки раз!
archery: почему?
Аноним: Написал уже почему. Никому не нужна программа, которая вместо 5с работает 10 минут.
archery: а как же тогда писать?
Аноним: А вот это умение и отличает настоящего программиста от школьника или просто ремесленника-кодировщика.
archery: я так думаю тут нужен конкретный пример, а то мы возможно о разном говорим.
Аноним: А я думаю, мы и так тут достаточно наспамили, уйдя от темы.
Аноним: Советую Вам разыскать книгу Д.Грис "Конструирование компиляторов для цифровых вычислительных машин", по-моему где-то 1972г. издания - я видел её в интернете как-то. Там большой материл по методам разбора выражений и отдельная глава по оптимизации. Кое-что там устарело, но в целом... когда мне нужен был блок разбора выражений для онлайновой работы, алгоритмы я брал там.
Автор ответа: Аноним
1
const
  n=2015;

var
  a:array[1..n] of integer;
  i,k: integer;

begin
  Randomize;
  for i:=1 to n do a[i]:=Random(300)+1;
  if (a[1]<a[2]) and (a[1] mod 3=0) then k:=1 else k:=0;
  if (a[n]<a[n-1]) and (a[n] mod 3=0) then Inc(k);
  for i:=2 to n-1 do
    if (a[i-1]<a[i]) and (a[i]<a[i+1]) and (a[i] mod 3=0) then Inc(k);
  Writeln('Чсло локальных минимумов равно ',k);
end.

Похожие вопросы
Предмет: Русский язык, автор: davysotskaya
пожалуйста опредилите вид односотовного предложение. ОЛП НЛП ОбЛП БЛП
1) за лето сельскую школу отремонтеровали
2) на минуту не дашь мне ручку?
3) если бы можно было разгадать все древние письмена!
4)прочитав "капитанскую дочку" хочется быть добрым и милосердным
5)ранняя весна
6)в воскресенье старайся почаще бывать на свежим воздухе
7)ветра уже нет
8)на улице снова стало прохлодно
9)нервных просят не смотреть
10)с любимой мечтой не хочется сердцу раставаться
11)будем рады вам помочь
12)веселые новогодние праздники
13)нет спасения от духоты июльского
14)виноград собирают осенью
15) оценки за контрольный диктант еще не объявляю
16)цыплят по осени считают
17) уже начинало смеркаться
18)меня попросили сходить за хлебом
19)мне очень хочется оказать вам помощь
20) в доме было тепло
21) и эту отрванность от внешнего мира всегда ощушаешь как счастье
ПОЖАЛУЙСТА ПОМОГИТЕ 8 КЛАСС РУССКИЙ ПРАКТИКУМ СУББОТИН ДРАБКИНА ))))))))))))))))))))))