1.
var a:array [1..10] of integer;
i,k:integer;
begin
k:=0;
write('Массив: ');
for i:=1 to 10 do
begin
a[i]:=random(100);
write(a[i]:4);
if a[i] mod 2 = 1 then k:=k+1
end;
writeln;
if k>0 then writeln ('Количество нечетных чисел равно ',k)
else writeln ('Нечетных чисел нет')
end.
2.
var a:array [1..10] of integer;
i,m:integer;
begin
m:=99;
write('Массив: ');
for i:=1 to 10 do
begin
a[i]:=random(100);
write(a[i]:4);
if a[i] < m then m:=a[i]
end;
writeln;
writeln ('min = ',m)
end.
Объяснение:
var a:array [1..10] of integer;
i,k,m:integer;
begin
k:=0;
m:=99;
write('Массив: ');
for i:=1 to 10 do
begin
a[i]:=random(100);
write(a[i]:4);
if a[i] mod 2 = 1 then k:=k+1;
if a[i] < m then m:=a[i]
end;
writeln;
if k>0 then writeln ('Количество нечетных чисел равно ',k)
else writeln ('Нечетных чисел нет');
writeln ('min = ',m)
end.
Некоторые языки программирования это допускают, но правила разработки алгоритмов строго запрещают такие манипуляции, потому что нарушаются каноны современного программирования. В связи с этим большинство языков прямо запрещают модификацию параметра цикла в теле цикла.
Если нужно конкретно - в Pascal и Fortran оператор цикла с пратметром строгий, запрещающий менять значение параметра в теле цикла. Обнаруживается при компиляции, запустить на выполнение нельзя. В языках cемейства С оператор for нестрогий, цикл с параметром там моделируется и компилятор не отслеживает модификацию параметра цикла в теле цикла. В бейсиках также можно модифицировать параметр цикла в теле цикла.
Function Bin(s As String, z As Integer) As String
Dim c As Integer
Dim oct As Integer
c = Val(s)
Do
oc = c Mod 2
c = c \ 2
Bin = Bin & Str(oc)
Loop Until c = 0
Bin = StrReverse(Bin)
If z = -1 Then Bin = "-" & Bin
End Function
Sub z()
Dim s As String, s1 As String
Dim n As Integer, i As Integer, z As Integer
Dim max
s = InputBox("Введите строку: ")
max = Null
i = 1
Do While i <= Len(s)
Select Case Mid(s, i, 1)
Case 0 To 9
If z = 0 And i > 1 Then
z = IIf(Mid(s, i - 1, 1) = "-", -1, 1)
Else: z = 1
End If
s1 = s1 + Mid(s, i, 1)
If i = Len(s) Then GoSub 1
Case Else:
If s1 <> "" Then GoSub 1
End Select
i = i + 1
Loop
MsgBox ("max=" & max)
End
1: n = z * Val(s1)
MsgBox (n & "; двоичная форма: " & Bin(s1, z))
If IsNull(max) Then max = n
If max < n Then max = n
z = 0
s1 = ""
Return
End Sub