1)
Function check7(a As Range) As Integer
Dim r As Range
Dim i As Integer
For Each r In a
i = i + 1 - Sgn((Abs(r) + 3) Mod 10)
Next
check7 = i
End Function
Excel VBA
2)
А что здесь программировать-то?
Задача сводится к с следующей: Дано два ящика и 7 мячиков. Сколькими можно разместить эти 7 мячиков в этих двух ящиках?
Бросаем все мячики в первый ящик (это первое размещение), затем перекладываем по одному мячика из первого ящика во второй.
Получаем варианты:
7|0
6|1
5|2
4|3
3|4
2|5
1|6
Итого 7 вариантов (варианта 0|7 быть не может, поскольку двузначное число с нуля не начинается).
В общем-то и без вычислений всем очевидно, что разместить 7 мячиков в двух ящиков ровно 7.
Что должна вычислять программа?
i,j,t,x:integer;
a:array[1..10]of integer;
begin
writeln('Исходный массив:');
for i:=1 to 10 do
begin
a[i]:=random(-100,100);
write(a[i]:5)
end;
i:=2;
while i<11 do
begin
t:=a[i];
a[i]:=a[i-1];
a[i-1]:=t;
i:=i+2
end;
writeln;
writeln('Переставленный массив:');
for i:=1 to 10 do
begin
write(a[i]:5);
if a[i] mod 2=0 then x:=x+1
end;
writeln;
writeln('Четных элементов: ',x);
//Гномья сортировка
i:= 2;
j:= 3;
while i < 11 do
if a[i - 1] > a[i] then
begin
i:= j;
j:= j + 1
end
else
begin
t:= a[i - 1];
a[i - 1]:= a[i];
a[i]:=t;
i:= i - 1;
if i = 1 then
begin
i:= j;
j:= j + 1
end
end;
writeln('Отсортированный массив:');
for i:=1 to 10 do write(a[i]:5)
end.