8192
Объяснение:
Данная незамысловатая функция Excel VBA формирует строку, согласно условию.
Function replstr(str As String, n As Integer) As String
Dim a(1 To 3), b(1 To 3) As String, i, j As Integer
a(1) = "A": a(2) = "B": a(3) = "AB"
b(1) = "AB": b(2) = "AB": b(3) = "A"
For i = 1 To n
j = (i - 1) Mod 3 + 1
str = Replace(str, a(j), b(j))
Next
replstr = str
End Function
Аргументы функции:
1) Исходная строка (а данном случае “AA”)
2) Число операций с исходной строкой
Значение первых 13 операций:
=replstr("AA";1) ABAB
=replstr("AA";2) AABAAB
=replstr("AA";3)
=replstr("AA";4) ABABABAB
=replstr("AA";5) AABAABAABAAB
=replstr("AA";6)
=replstr("AA";7) ABABABABABABABAB
=replstr("AA";8) AABAABAABAABAABAABAABAAB
=replstr("AA";9)
=replstr("AA";10)
=replstr("AA";11)
=replstr("AA";12)
=replstr("AA";13)
Для подсчета символов “A” в строке, используем еще одну функцию:
Function chrcount(str1 As String, str2 As String) As Integer
Dim str() As String
str = Split(str1, str2)
chrcount = UBound(str, 1)
1) Cтрока
2) Символ (последовательность символов), число которых требуется найти
Например, результатом использования функции =chrcount(replstr("AA";20);"A") в ячейке Excel будет число 256
Используя описанные функции, посчитаем символы “A”в первых 13 строках
Номер операции (i) Число символов “A” в строке
1 2
2 4
3 4
4 4
5 8
6 8
7 8
8 16
9 16
10 16
11 32
12 32
13 32
Как видно из таблицы, число символов в строке образует числовую последовательность 2^1; 2^2; 2^2; 2^2; 2^3; 2^3; 2^3; … 2^([(i-2)/3]+2)
Таким образом, мы получили формулу для вычисления числа символов “A”в строке по номеру операции.
Соответственно, 2^([(35-2)/3]+2) = 8192
program raf105;
const
n = 10;
var
a,b,c: array[1..n] of integer;
i,j,x,max,mpos,b1,c1: integer;
begin
write('Введите максимальное число: ');
readln(x);
writeln('Заполните массив из ',n,' элементов');
for i:=1 to n do
readln(a[i]);
if a[i] > x
then begin
b1:= b1+1;
b[b1]:= a[i];
end
else begin
c1:= c1+1;
c[c1]:= a[i];
end;
for i:=1 to c1 do
max:= -10000;
for j:=i to c1 do
if c[j] >= max
max:= c[j];
mpos:= j;
c[mpos]:= c[i];
c[i]:= max;
for i:=1 to b1 do
a[i]:= b[i];
a[i+b1]:= c[i];
write('Отсортированный массив: ');
write(a[i],' ');
end.
8192
Объяснение:
Данная незамысловатая функция Excel VBA формирует строку, согласно условию.
Function replstr(str As String, n As Integer) As String
Dim a(1 To 3), b(1 To 3) As String, i, j As Integer
a(1) = "A": a(2) = "B": a(3) = "AB"
b(1) = "AB": b(2) = "AB": b(3) = "A"
For i = 1 To n
j = (i - 1) Mod 3 + 1
str = Replace(str, a(j), b(j))
Next
replstr = str
End Function
Аргументы функции:
1) Исходная строка (а данном случае “AA”)
2) Число операций с исходной строкой
Значение первых 13 операций:
=replstr("AA";1) ABAB
=replstr("AA";2) AABAAB
=replstr("AA";3)
=replstr("AA";4) ABABABAB
=replstr("AA";5) AABAABAABAAB
=replstr("AA";6)
=replstr("AA";7) ABABABABABABABAB
=replstr("AA";8) AABAABAABAABAABAABAABAAB
=replstr("AA";9)
=replstr("AA";10)
=replstr("AA";11)
=replstr("AA";12)
=replstr("AA";13)
Для подсчета символов “A” в строке, используем еще одну функцию:
Function chrcount(str1 As String, str2 As String) As Integer
Dim str() As String
str = Split(str1, str2)
chrcount = UBound(str, 1)
End Function
Аргументы функции:
1) Cтрока
2) Символ (последовательность символов), число которых требуется найти
Например, результатом использования функции =chrcount(replstr("AA";20);"A") в ячейке Excel будет число 256
Используя описанные функции, посчитаем символы “A”в первых 13 строках
Номер операции (i) Число символов “A” в строке
1 2
2 4
3 4
4 4
5 8
6 8
7 8
8 16
9 16
10 16
11 32
12 32
13 32
Как видно из таблицы, число символов в строке образует числовую последовательность 2^1; 2^2; 2^2; 2^2; 2^3; 2^3; 2^3; … 2^([(i-2)/3]+2)
Таким образом, мы получили формулу для вычисления числа символов “A”в строке по номеру операции.
Соответственно, 2^([(35-2)/3]+2) = 8192
program raf105;
const
n = 10;
var
a,b,c: array[1..n] of integer;
i,j,x,max,mpos,b1,c1: integer;
begin
write('Введите максимальное число: ');
readln(x);
writeln('Заполните массив из ',n,' элементов');
for i:=1 to n do
begin
readln(a[i]);
if a[i] > x
then begin
b1:= b1+1;
b[b1]:= a[i];
end
else begin
c1:= c1+1;
c[c1]:= a[i];
end;
end;
for i:=1 to c1 do
begin
max:= -10000;
for j:=i to c1 do
if c[j] >= max
then begin
max:= c[j];
mpos:= j;
end;
c[mpos]:= c[i];
c[i]:= max;
end;
for i:=1 to b1 do
a[i]:= b[i];
for i:=1 to c1 do
a[i+b1]:= c[i];
write('Отсортированный массив: ');
for i:=1 to n do
write(a[i],' ');
end.
PascalABC 3.4.2