Используя boost библиотеку можно было это сделать ещё проще (нужно заканчивать баловаться boost'ом, ато совсем мозги атрофируются :D). Если посидеть и подумать чуть дольше 5 минут, можно и это решение улучшить, но оставлю это Вам)
1) procedure F (n:integer); 2) begin 3) if n > 2 then begin 4) writeln (n); 5) F (n-3); 6) F (n-4) 7) end 8) end;
-первый вызов- со входным параметром n=10 -в строке 3 проверяется, что n больше двух, -так как n действительно больше двух, то выполняются три следующие строки № 4,5,6 (а строка 7 -это указатель конца блока, выполняемого при истинности проверки) -строка 4 печатает значение n, то есть 10 -строка 5 вызывает этот алгоритм вновь, со входным параметром 7 -строка 6 опять вызывает алгоритм, со входным параметром 6 И в каждом вызове будут ещё два вызова, со входными параметрами на три и четыре меньше, чем был И так далее, каждый вызов будет вновь вызывать алгоритм, и печатать n до тех пор, пока n будет больше двух.
итак, получим ветвление вызовов, и вот значение n в каждом из них: 10 7 6 4 3 3 2 1 0 0 -1 0 -1
но, не все из этих n будут напечатаны, а только те, которые больше двух. если по порядку, то вот что будет напечатано: 10 7 4 3 6 3
Т.к. нам не задан откуда будет отсчет 6 чисел, будет задавать пользователь.
var
a,i,s:integer;
begin
s:=0;
readln(a);
for i:=a to a+11 do begin
if (i mod 2)=0 then
s:=s+i;
end;
writeln(s);
end.