РЕКУРСИЯ Дана последовательность натуральных чисел (одно число в строке), завершающаяся двумя числами 0 подряд. Определите, сколько раз в этой последовательности встречается число 1. Числа, идущие после трех нулей, необходимо игнорировать.
В этой задаче нельзя использовать глобальные переменные и параметры, передаваемые в функцию. Функция получает данные, считывая их с клавиатуры, а не получая их в виде параметров.
Ввод Вывод
1 2
0
0
0
1
1
n=5;
Var
ar:array[1..n] of integer;
ar2:array[1..n] of integer;
i,k:integer;
function prost(a:integer):boolean;
var i:integer;
b:boolean;
begin
b:=true;
for i:=2 to a div 2 do
if a mod i=0 then
begin;
b:=false;
break;
end;
if a=1 then b:=false;
prost:=b;
end;
begin;
randomize;
k:=0;
for i:=1 to n do
begin;
ar[i]:=random(101);
write(ar[i]:4);
end;
writeln;
for i:=1 to n do
if prost(ar[i]) then
begin;
inc(k);
ar2[k]:=ar[i];
write(ar2[k]:4);
end;
end.
(х > 4) и ((х < 10) или (х < 13)) были истинными одновременно.
Чтобы ((х < 10) или (х < 13)) было истинными, необходимо, чтобы либо (х < 10), либо (х < 13) были истинными, либо оба одновременно. =>
13>x>4 => Всего 8 чисел (12, 11, 10, 9, 8, 7, 6, 5)
Можно проверить:
(12 > 4) и ((12 < 10) или (12 < 13)) =1 и (0 или 1)=1и1=1
(11 > 4) и ((11 < 10) или (11 < 13)) =1 и (0 или 1)=1и1=1
(10 > 4) и ((10 < 10) или (10 < 13)) =1 и (0 или 1)=1и1=1
(9 > 4) и ((9 < 10) или (9 < 13)) =1 и (1 или 1)=1и1=1
(8 > 4) и ((8 < 10) или (8 < 13)) =1 и (1 или 1)=1и1=1
(7 > 4) и ((7 < 10) или (7 < 13)) =1 и (1 или 1)=1и1=1
(6 > 4) и ((6< 10) или (6 < 13)) =1 и (1 или 1)=1и1=1
(5 > 4) и ((5 < 10) или (5 < 13)) =1 и (1 или 1)=1и1=1
ответ: 8