<em>// PascalABC.NET 3.2, сборка 1417 от 28.03.2017</em>
<em>// Внимание! Если программа не работает, обновите версию!</em>
begin
var a:=ArrRandom(ReadInteger('n='),-20,20); a.Println;
Writeln(a[:a.IndexMax].Where(x->(x>=1) and (x<=12)).Count)
end.
<u>Пример</u>
n= 15
3 12 -1 10 -7 18 10 19 8 9 -2 4 0 19 13
4
<em>А вот так учат писать эту же программу в школе...</em>
const
nn=100;
var
a:array[1..nn] of integer;
i,n,imax,k:integer;
begin
Randomize;
Write('n='); Read(n);
for i:=1 to n do begin
a[i]:=Random(41)-20;
Write(a[i],' ');
end;
Writeln;
imax:=1;
for i:=2 to n do
if a[i]>a[imax] then imax:=i;
k:=0;
for i:=1 to imax do
if (a[i]>=1) and (a[i]<=12) then k:=k+1;
Writeln(k)
end.
<u>Вот отсюда и вопрос: для чего учить писать длинно, сложно и малопонятно?</u>
Элементарно!
1) Разбиваем 27 монет на 3 кучки по 9 монет. Сравниваем 2 кучки.
Какая легче - в той и фальшивая монета. Если они равны, то фальшивая в третьей кучке, которую не взвешивали.
Получилась кучка из 9 монет, одна фальшивая. Осталось 2 взвешивания.
2) Точно также разбиваем 9 монет на 3 по 3 монеты и сравниваем две.
Какая легче - в той и фальшивая монета. Если они равны, то фальшивая в третьей кучке, которую не взвешивали.
Получилась кучка из 3 монет, одна фальшивая. Осталось 1 взвешивание.
3) Сравниваем 2 монеты. Какая легче - та и фальшивая.
Если они равны, то фальшивая третья, которую не взвешивали.
Очистка к примеру грязную воду очищают это фильтрация