Это основной код макроса с циклом перебора всех нечетных чисел
Sub SummFactorial()
Dim summ As Long
Dim i As Byte
For i = 1 To 9 Step 2
summ = summ + Fact(i)
Next i
MsgBox (summ)
End Sub
а эта функция вызывает сама себя (рекурсия) для расчета факториала<em>
</em>
Function Fact(s As Byte) As Long
If s <= 1 Then
Fact = 1
Else
Fact = s * Fact(s - 1)
End If
<span>End Function
и уточните, если нужно, что должно быть в подпрограмме - весь код или только расчет факториала
</span>
<u /><em></em><em>VAR</em>
<em> n, m, sum, i, j: Integer;</em>
<em> a: Array [1..10000] of Array [1..10000] of Integer;</em>
<em>BEGIN</em>
<em> Read(n, m);</em>
<em></em>
<em> For i := 1 to n do</em>
<em> For j := 1 to m do Read(a[i][j]);</em>
<em></em>
<em> For i := 1 to n do</em>
<em> For j := 1 to m do</em>
<em> If (a[i][j] > 0) then sum := sum + a[i][j];</em>
<em></em>
<em> Write(sum);</em>
<em>END. </em>
<em></em>
<u>Но для экономии времени и сил можно не создавать массив:</u>
<em>VAR</em>
<span><em> n, m, sum, el, i, j: Integer;</em></span>
<em>BEGIN</em>
<span><em> Read(n, m);</em></span>
<em></em>
<span><em> For i := 1 to n do</em></span>
<span><em> For j := 1 to m do begin </em></span>
<span><em> Read(el);</em></span>
<span><em> If (el > 0) then sum := sum + el;</em></span>
<span><em> End;</em></span>
<em></em>
<span><em> Write(sum);</em></span>
<em>END.</em>
Вот так гораздо проще.
var s:string;
begin
readln(s);
writeln(length(s));
end.
256 символов стандартного алфавита стало недостаточно (русский, английский и некоторые спец символы). для ютого ввели unicode, где на каждый символ уже отводится 2 байта, с помошью него уже можно закодировать 65536 символов (и арабский и иероглифы и спецсимволы новые, почти все письменные языки и символы)