функция вычисления суммы S=12+22+…+n2; Public Function FunS(n) Dim s As Integer Dim i As Integer s=0 For i = 1 To n s=s+i^2 Next FunS=s End Function функция вычисления приближенного значения sin(x) по формуле у=x/1!-x3/3!+x5/5!….+x2n+1/(2n+1)! с заданной погрешностью; Public Function sinus(x, погрешность) i=2 p=x s=x While Abs(p) > погрешность p = -p * x ^ 2 / (i * (i + 1)) i=i+2 s=s+p Wend sinus = s End Function Задание1 найти S n 1 / i , где n заданное число i 1 Public Function FunSum(n) s=0 For i = 1 To n s=s+1/i Next i FunSum = s End Function Задание 3 вычисления суммы S=103+113+…+n3; Public Function SumKub(n) Dim s As Integer Dim i As Integer s=0 i = 10 While i <= n s=s+i^3 i=i+1 Wend SumKub = s End Function n Задание 4 найти P ( 2 * i ) i m Public Function Proizv(m, n) p=1 For i = m To n p=p*2*i Next i Proizv = p End Function Задание 5 вычислить сумму кубов трехзначных четных чисел Public Function Sum1() p=0 For i = 100 To 999 p = p +i^3 Next i Sum1= p End Function Задание 6 вычислить сумму квадратов тех четырехзначных чисел, которые при делении на 5 дают в остатке 2 Public Function SumKvCh() s=0 For i = 1000 To 9999 If i Mod 5 = 2 Then s=s+i^2 End If Next i SumKvCh = s End Function Задание 7 найти сумму всех несократимых дробей, со знаменателем к, содержащихся между целыми числами m и n, где к простое число; Public Function drobi(m, n, k) s=0 For i = k * m To k * n If i Mod k <> 0 Then s=s+i/k End If Next i drobi = s End Function Задание 8 найти сумму S=1*100+2*99+3*98+…+ 50 *51 Public Function SummPr() s=0 For i = 1 To 50 s = s + i * (101 - i) Next i SummPr = s End Function Задание 13 вычисления суммы S= 1!+2!+3!+……+ n!; Public Function SumFactor(n) p=1 s=0 For i = 1 To n p=p*i s=s+p Next i SumFactor = s End Function Задание 12 нахождения такой суммы S=1+2+3+…, для которой |S-M| минимально. M – заданное число; Public Function Summin(m) s=0 i=1 While s <= m tn = s s=s+i i=i+1 Wend If s - m < m - tn Then Summin = s Else Summin = tn End If End Function Задание 14 вычисления приближенного значения cos(x) по формуле у=1-x2/2!+x4/4!….+x2n/(2n)! для заданного числа n; Public Function cosinus(x, n) Public Function Fun14(x As Double, n As Double) As Double Dim i As Double, i1 As Double Dim s As Double Dim p As Double i=2 p=1 s=1 For i1 = 2 To n p = -p * x ^ 2 / (i * (i - 1)) s=s+p i=i+2 Next Fun14 = s End Function Задание 15 вычисления приближенного значения ex по формуле x x2 xn y 1 ... ..., с заданной точностью E; 1! 2! n! Public Function ekspon(x, E) i=1 p=1 s=1 While Abs(p) > E p = (p * x) / i i=i+1 s=s+p Wend ekspon = s End Function Public Function Простое_число(k As Integer) As String 'Является k простым числом или нет Dim i As Integer For i = 2 To k - 1 If k Mod i = 0 Then Exit For Next i If i < k - 1 Or k = 0 Or k = 1 Then Простое_число = "Нет" Else Простое_число = "Да" End If End Function Лабораторная работа №5_3. Разработка функций обработки целых чисел. Примеры функций функция нахождения суммы цифр целого числа n; Public Function сумма_цифр_числа(n) s=0 While n <> 0 c = n Mod 10 s=s+c n = n \ 10 Wend сумма_цифр_числа = s End Function функция нахождения НОД двух натуральных чисел a и b Public Function НОД(a, b) While a <> b If a > b Then a=a-b Else b=b-a End If Wend НОД = a End Function Задание 1получения числа, записанного цифрами заданного числа в обратном порядке; Public Function Fun1(n) While n <> 0 c = n Mod 10 s = s * 10 + c n = n \ 10 Wend Fun1 = s End Function Задание 2 нахождения суммы делителей числа N. Public Function Fun2 (k) p=0 For i = 1 To k If k Mod i = 0 Then p=p+i End If Next Fun2 = p End Function Нок двух Public Function NOK(a, b) Dim X As Integer Dim y As Integer NOK = X * y / NOD(a, b) End Function Нод трех Public Function NOD3(a, b, c) d = NOD(a, b) If a * b * c <> 0 Then While c <> d If Abs(c) > d Then c = Abs(c) - d Else d = d - Abs(c) End If Wend NOD3 = c Else NOD3 = “ ошибка ” End If End Function Public Function NOK3(a, b, c) d = NOK(a, b) If a * b * c <> 0 Then NOK3 = d * c / NOD(d, c) Else NOK3 = ‘ошибка’ End If End Function Задание 4 вычисления суммы первых n чисел Фибоначчи (числа Фибоначчи 1,1,2,3,5,8 и т.д., т.е. каждое последующее число равно сумме двух предыдущих). Public Function Fibonachi(n) If n <= 2 Then Fibonachi = 1 Exit Function End If Fibonachi = Fibonachi(n - 1) + Fibonachi(n - 2) End Function Public Function Summafib(n) s=0 For i = 1 To n s = s + Fibonachi(i) Next Summafib = s End Function Задание 5 определения, является ли число простым (число называется простым, если оно делится только на 1 и на само число) Public Function Prostoe(ByVal n As Long) As Boolean Dim i As Integer n = Abs(n) i=2 Do While i < n If n Mod i <> 0 Then i=i+1 Else Exit Do End If Loop If i >= n Then Prostoe = True Else Prostoe = False End Function Public Function Prostoe2(ByVal n As Long) As Boolean Dim i As Integer, Koren As Double If n Mod 2 <= 0 And n <> 2 Or n <= 1 Or n <= 0 Then Prostoe2 = False Else i=3 Koren = Sqr(n) While i <= Koren And n Mod i <> 0 i=i+2 Wend If i > Koren Then Prostoe2 = True Else Prostoe2 = False End If End Function Задание 6 определения, является ли заданное число N совершенным. Число называется совершенным, если оно равно сумме своих правильных (меньше этого числа) делителей (6=1+2+3). Public Function Soversh(ByVal n As Long) As Boolean s=0 For i = 1 To (n - 1) If n Mod i = 0 Then s=s+i Else s=s End If Next If s = n Then Soversh = True Else Soversh = False End Function Задание 7 определения, является ли заданное число N автоморфным. Число называется автоморфным, если после возведения в квадрат оно совпадает с младшими разрядами числа (52=25, 252=625). Public Function avtomorf(n) c = (n ^ 2) Mod 10 ^ kolcifr(n) If n = c Then avtomorf = "истина" Else avtomorf = "ложь" End If End Function Задание 8 определения, является ли заданное число P числом Армстронга. Число, состоящее из n цифр, называется числом Армстронга, если оно равно сумме n-х степеней своих цифр (153= 13+53+33). Public Function armstrong(ByVal R) s=0 Rnach = R a = kolcifr(R) While R <> 0 c = R Mod 10 s=s+c^a R = R \ 10 Wend If Rnach = s Then armstrong = "истина" Else armstrong = "ложь" End If End Function Задание 9 определения, является ли заданное число N полиндромом. Полиндромом называется число, которое читается одинаково слева направо и справа налево (121,676 и т.д.). Public Function polindrom(n) If n = число_обр(n) Then polindrom = "истина" Else polindrom = "ложь" End If End Function Public Function Polindr(ByVal n As Double) As Boolean m=n While m <> 0 i = m Mod 10 s = s * 10 + i m = m \ 10 Wend If s = n Then Polindr = True Else Polindr False End Function Количество цифр Public Function kolich(ByVal m As Double) s=0 While m <> 0 s=s+1 m = m \ 10 Wend kolich = s End Function Задание 14.На отрезке [n, m] найти все числа Армстронга. Public Function Fun1(n, m) s = "" For i = n To m If Armstrong(i) Then s = s + Str(i) + ", " Next Fun1 = s + "-числа Армстронга на отрезке [" + Str(n) + ", " + Str(m) + "]" End Function Задание 15 На отрезке [n, m] найти все числа близнецы. Два простых числа называются близнецами, если расстояние между ними равно 2. Public Function blizn(n, m) blizn = "" ipred = 0 For i = n To m If prostoe_chislo(i) Then If ipred <> 0 And i - ipred = 2 Then blizn = blizn & Str(ipred) & "," & Str(i) & ";" & " " End If ipred = i End If Next i End Function Лабораторная работа №5_4. Разработка процедур и функций обработки массивов функция вычисления суммы элементов массива А 1-й способ Public Function Сумма_массива(A As Variant) Dim s, x s=0 For Each x In A s=s+x Next x Сумма_массива = s End Function 2-й способ Public Function SumMas(a As Variant) n = a.Columns.Count 'количество столбцов m = a.Rows.Count ' количество строк s=0 For r = 1 To m For c = 1 To n s = s + a(r, c) Next c Next r SumMas=s End Function функция подсчета количества положительных элементов массива А Public Function CountP(a As Variant) n = a.Columns.Count m = a.Rows.Count k= 0 For r = 1 To m For c = 1 To n If a(r,c) > 0 Then k=k+1 Next c Next r CountP=k End Function нахождения максимального и минимального значения массива А Public Function max_min_A(a As Variant) n = a.Columns.Count m = a.Rows.Count minimal = a(1, 1) maximal = a(1, 1) For r = 1 To m For c = 1 To n If a(r, c) < minimal Then minimal = a(r, c) If a(r, c) > maximal Then maximal = a(r, c) Next c Next r max_min_A = "Минимальный эл-т:" + Str(minimal) + ", максимальный эл-т:" + Str(maximal) End Function Задание 2.нахождения суммы (количества) (нечетных) местах; Public Function CountP(a As Variant) n = a.Columns.Count m = a.Rows.Count элементов массива стоящих на четных k=0 For r = 1 To m For c = 1 To n If r Mod 2 = 0 And c Mod 2 = 0 Then k = k + 1 Next c Next r CountP = k End Function Public Function Chetn(a As Variant) n = a.Columns.Count m = a.Rows.Count k=0 For r = 2 To m Step 2 For c = 2 To n Step 2 k=k+1 Next c Next r Chetn = k End Function Задание 4. подсчета количества отрицательных (положительных, нулевых, кратных k) элементов массива; Public Function Sumkrat(k, A As Variant) S=0 n = A.Columns.Count m = A.Rows.Count For r = 1 To m For c = 1 To n If A(r, c) Mod k = 0 Then S = S + A(r, c) Next c Next r Sumkrat = S End Function Задание 6. нахождения НОД (НОК) элементов массива; 'NOD Public Function NOD(ByVal A, ByVal B) x = Abs(A) y = Abs(B) If x * y <> 0 Then While x <> y If x > y Then x = x - y Else y = y - x Wend NOD = x Else NOD = "ошибка" End If End Function 'NOD массива Public Function NODmassiv(A As Variant) n = A.Columns.Count m = A.Rows.Count NOD1 = NOD(A(1, 1), A(1, 2)) For r = 1 To m For c = 1 To n NOD2 = NOD(NOD1, A(r, c)) If NOD1 > NOD2 Then NOD1 = NOD2 End If Next c Next r NODmassiv = NOD2 End Function 'NOK Public Function NOK(ByVal A, ByVal B) x = Abs(A) y = Abs(B) If x * y <> 0 Then NOK = (y * x) / NOD(A, B) Else NOK = "ошибка" End If End Function 'NOK масства Public Function NOKmassiv(A As Variant) n = A.Columns.Count m = A.Rows.Count NOK1 = NOK(A(1, 1), A(1, 2)) For r = 1 To m For c = 1 To n NOK2 = NOK(NOK1, A(r, c)) If NOK1 < NOK2 Then NOK1 = NOK2 End If Next c Next r NOKmassiv = NOK2 End Function Задание 7.нахождения минимального (максимального) элемента массива и места его расположения в массиве (номера строки и номера столбца); Public Function maximel(A As Variant) n = A.Columns.Count m = A.Rows.Count Maximal = A(1, 1) For r = 1 To m For c = 1 To n If A(r, c) > Maximal Then Maximal = A(r, c) strok = r stolb = c End If Next c Next r maximel = "максимальный элемент" + ":" + Str(Maximal) + "(" + Str(strok) + "," + Str(stolb) + ")" End Function Задание 8. нахождения максимального среди отрицательных (минимального среди положительных элементов массива); Public Function maxotr(A As Variant) n = A.Columns.Count m = A.Rows.Count For r = 1 To m For c = 1 To n If A(r, c) < 0 Then otr = A(r, c) Next c Next r For r = 1 To m For c = 1 To n If A(r, c) < 0 And A(r, c) > otr Then otr = A(r, c) Next c Next r maxotr = otr End Function Задание 9. Нахождения двух самых больших (самых маленьких) элементов массива Public Function dbabolsh(A As Variant) n = A.Columns.Count m = A.Rows.Count maxel = A(1, 1) For r = 1 To m For c = 1 To n If A(r, c) > maxel Then maxel = A(r, c) Next c Next r max1 = maxel max2 = A(1, 1) For r = 1 To m For c = 1 To n If A(r, c) < max1 And A(r, c) > max2 Then max2 = A(r, c) Next c Next r max3 = max2 dbabolsh = "1-ый максим." + ":" + Str(max1) + ";" + " " + "2-ой максим." + ":" + Str(max3) End Function Задание 10. расположения элементов массива в следующем порядке – положительные, отрицательные и нулевые; 'Вспомогательная функция Public Function ves(ByVal A) If A > 0 Then ves = 1 ElseIf A < 0 Then ves = 2 Else ves = 3 End If End Function Public Function polotrnul(A As Variant) n = A.Columns.Count m = A.Rows.Count k=n*m ReDim B(1 To k) For i = 1 To k B(i) = A(i) Next i For i = 1 To k - 1 For j = i + 1 To k If ves(B(j)) < ves(B(i)) Then p = B(j) B(j) = B(i) B(i) = p End If Next j Next i polotrnul = B End Function Public Function Massiv11(ByVal a As Variant) As Variant Dim b() As Variant, n As Integer, t 'n = a.Columns.Count n = UBound(a, 1) ReDim b(1 To n) For i = 1 To n b(i) = a(i) Next For i = 1 To n - 1 For j = i + 1 To n If b(i) < b(j) Then t = b(i) b(i) = b(j) b(j) = t End If Next Next Massiv11 = b End Function Задание 12. в упорядоченном массиве, найти такие два элемента, произведение которых максимально (минимально); Public Function Massiv(a As Variant) As Variant Dim b() As Variant n = a.Columns.Count ReDim b(1 To n) For i = 1 To n b(i) = a(i) Next For i = 1 To n - 1 For j = i + 1 To n If b(i) < b(j) Then t = b(i) b(i) = b(j) b(j) = t End If Next Next If b(n) * b(n - 1) < b(1) * b(2) Then k = b(1) * b(2) Else: k = b(n) * b(n - 1) End If If b(n) < 0 Then l = b(n) * b(1) Else: l = b(n) * b(n - 1) End If Massiv = Str(k) + "-максимальное произведение" + "; " + Str(l) + "-минимальное произведение" End Function Лабораторная работа №5_5. Разработка функций обработки многочленов, векторов и матриц на VBA Примеры функций обработки многочленов, векторов и матриц функция вычисления значения многочлена Pn(x) в точке Х0 Public Function Значение_Полинома_в_Точке(a As Variant, x As Double) ‘ функция вычисления значения многочлена Pn(x) в точке Х0 Dim n As Integer Dim i As Integer Dim p As Double n = a.Columns.Count p = a(1) For i = 2 To n p = p * x + a(i) Next i Значение_Полинома_в_Точке = p End Function функция вычисления суммы двух многочленов Pm(x) и Qn(x) Public Function Коэффициенты_суммы_двух_полиномов (A As Variant, b As Variant) ‘ Коэффициенты суммы двух полиномов Dim M As Integer Dim N As Integer Dim I As Integer M = A.Columns.Count N = b.Columns.Count If M >= N Then ReDim c(1 To M) As Variant Else ReDim c(1 To N) As Variant End If If M = N Then For I = 1 To M c(I) = A(I) + b(I) Next I End If If M > N Then For I = 1 To M - N c(I) = A(I) Next I For I = 1 To N c(M - N + I) = A(M - N + I) + b(I) Next I End If If N > M Then For I = 1 To N - M c(I) = b(I) Next I For I = 1 To M c(N - M + I) = b(N - M + I) + A(I) Next I End If Коэффициенты_суммы_двух_ полиномов = c End Function В результате выполнения функции должен получиться массив коэффициентов нового многочлена. Поэтому для вызова функции необходимо вначале выделить необходимый диапазон ячеек для результата, после чего вызвать функцию и завершить вызов функции комбинацией клавиш CTRL+Shift+Enter функция вычисления сумм столбцов матрицы Public Function Сумма_по_столбцам (Матрица As Variant) ‘ функция вычисления сумм столбцов матрицы и получения вектора сумм Dim M As Integer, N As Integer, I As Integer, J As Integer M = Матрица.Rows.Count N = Матрица.Columns.Count ReDim b(1 To N) As Variant For J = 1 To N b(J) = 0 For I = 1 To M b(J) = b(J) + Матрица (I, J) Next I Next J Сумма_по_столбцам = b End Function В результате выполнения функции должен получиться массив сумм столбцов матрицы. Поэтому для вызова функции необходимо вначале выделить необходимый диапазон ячеек для сумм столбцов, а затем вызвать функцию и завершить вызов функции комбинацией клавиш CTRL+Shift+Enter Задание 2. найти коэффициенты производной от полинома Pn(x), т.е. найти многочлен Rn1= (Pn(x))' Public Function Proizv(A As Variant) Dim b() As Variant Dim M As Integer Dim I As Integer M = A.Columns.Count ReDim b(1 To M) For I = 1 To M b(I) = A(I) * (M - I) Next I Proizv = b End Function Задание 3. найти коэффициенты первообразной от полинома Pn(x); Public Function Pervoobr(A As Variant) Dim b() As Variant Dim M As Integer Dim I As Integer M = A.Columns.Count ReDim b(1 To M) For I = 1 To M b(I) = A(I) / (M + 1 - I) Next I Pervoobr = b End Function Задание 7. найти произведение двух полиномов Public Function Proizv(a As Variant, b As Variant) As Variant Dim n, m, i, j As Integer Dim c(): n = a.Columns.Count m = b.Columns.Count ReDim c(1 To m + n - 1) For i = 1 To n For j = 1 To m c(i + j - 1) = c(i + j - 1) + a(i) * b(j) Next j Next i Proizv= c End Function Лабораторная работа №5_6. Разработка функций обработки строк и текстовой информации на VBA Примеры функций обработки строк функция подсчета количества символа пробел в строке Public Function CountSpace(s As String) As Integer ‘ функция подсчета количества символа пробел в строке Dim i As Integer Dim p As Integer p=0 For i = 1 To Len(s) If Mid(s, i, 1) = " " Then p=p+1 End If Next CountSpace = p End Function Задание 1. Сформировать строку длины N (N — четное), которая состоит из чередующихся символов C1 и C2, начиная с C1. Public Function Fun1(N As Integer, c1 As String, c2 As String) As String Dim i As Integer Dim S As String S = "" If N Mod 2 = 0 Then For i = 1 To N / 2 S = S + c1 + c2 Next Else S = "" End If Fun1 = S End Function Задание 3. Дана строка S и число N. Преобразовать строку S в строку длины N следующим образом: если длина строки S больше N, то отбросить первые символы, если длина строки S меньше N, то в ее начало добавить символы "." (точка). Public Function Fun3(S As String, N As Integer) As String If Len(S) > N Then Fun3 = Right(S, N) Else Fun3 = String(N - Len(S), ".") + S End If End Function Задание 2. Дана строка. Получить строку, содержащую те же символы, но расположенные в обратном порядке. Public Function Fun2(S As String) As String Fun2 = StrReverse(S) End Function Public Function Fun2_(S As String) As String Dim i As Integer Dim p As String p = "" For i = Len(S) To 1 Step -1 p = p + Mid(S, i, 1) Next Fun2_ = p End Function Задание 3. Дана строка S и число N. Преобразовать строку S в строку длины N следующим образом: если длина строки S больше N, то отбросить первые символы, если длина строки S меньше N, то в ее начало добавить символы "." (точка). Public Function Fun3(S As String, N As Integer) As String If Len(S) > N Then Fun3 = Right(S, N) Else Fun3 = String(N - Len(S), ".") + S End If If s = n Then fun3 = s End Function Задание 4.Даны два числа: N1 и N2, и две строки: S1 и S2. Получить из этих строк новую строку, объединив N1 первых символов строки S1 и N2 последних символов строки S2. Public Function Fun4(N1 As Integer, N2 As Integer, S1 As String, S2 As String) As String Fun4 = Left(S1, N1) + Right(S2, N2) End Function Задание5. Даны две строки: S1 и S2. Проверить, содержится ли строка S2 в строке S1. Если да, то вывести номер позиции, начиная с которой S2 содержится в S1, если нет, то вывести 0. Public Function Fun5(S1 As String, S2 As String) As Integer Fun5 = InStr(S1, S2) End Function Public Function fun2(s1 As String, s2 As String) As Double Dim a As Double, i As Integer, j As Integer, t As Integer a=0 i = Len(s1) j = Len(s2) For t = 1 To i If Mid(s1, t, j) = s2 Then a=t End If If a <> 0 Then Exit For End If Next t fun2 = a End Function Задание 6.Даны две строки: S1 и S2. Определить количество вхождений строки S2 в строку S1. Public Function Fun6(S1 As String, S2 As String) As Integer Dim k As Integer Dim N As Integer k=0 N = InStr(1, S1, S2) While N > 0 k=k+1 N = InStr(N + 1, S1, S2) Wend Fun6 = k End Function Задание 7. Дана строка S и символ C. Удвоить каждое вхождение символа C в строку S. Public Function Fun7(S As String, C As String) As String Fun7 = Replace(S, C, C + C) End Function Задание 8. Даны строки S1, S2 и символ C. Перед (после) каждого вхождения символа C в строку S1 вставить строку S2. Public Function Fun8(S1 As String, S2 As String, C As String) As String Fun8 = Replace(S1, C, S2 + C) End Function Задание 9. Даны две строки: S1 и S2. Удалить из строки S1 первую (последнюю) подстроки, совпадающие с S2. Если таких подстрок нет, то вывести S1 без изменений. Public Function Fun9(S1 As String, S2 As String) As String Dim N As Integer Dim k As Integer N = InStr(1, S1, S2) Fun9 = Left(S1, N - 1) + Right(S1, Len(S1) - (N - 1 + Len(S2))) End Function Задание 10. Даны три строки: S1, S2, S3. Заменить в строке S1 первое вхождения строки S2 на S3. Public Function Fun10(S1 As String, S2 As String, S3 As String) As String Dim N As Integer N = InStr(1, S1, S2) Fun10 = Replace(S1, S2, S3, N - 1) End Function Задание 11. Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Определить количество слов в строке. Public Function Fun11(s As String) As String Dim i As Integer, a As Integer a=1 If Len(s) = 0 Then a=0 Else For i = 1 To Len(s) If Mid(s, i, 1) <> " " And Mid(s, i + 1, 1) = " " Then a=a+1 End If Next i End If Fun11= "Количество слов в строке: " + Format(a) End Function Задание12. Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Определить количество слов, которые начинаются и заканчиваются одной и той же буквой. Public Function Fun12(s As String) As String Dim c As String, n As Integer, i As Integer, perv As String, posl As String c=s+"" n=0 i=1 While i <= Len(c) While Mid(c, i, 1) = " " i=i+1 Wend perv = Mid(c, i, 1) i=i+1 While Mid(c, i, 1) <> " " i=i+1 Wend posl = Mid(c, i - 1, 1) If perv = posl Then n = n + 1 i=i+1 Wend Fun12 = "Количество слов, которые начинаются и заканчиваются одной и той же буквой: " + Str(n) End Function Задание13. Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Определить количество слов, которые содержат ровно три буквы "А". Public Function Fun13(s As String) As String Dim c As String, i As Integer, n As Integer, m As Integer c=s+"" i=1 While i <= Len(c) n=0 While Mid(c, i, 1) = " " i=i+1 Wend i=i+1 While Mid(c, i, 1) <> " " If Mid(c, i, 1) = "à" Then n=n+1 Else n=n End If i=i+1 Wend If n = 3 Then m=m+1 Else m=m End If i=i+1 Wend Fun13 = "Количество слов..: " + Str(m) End Function Задание14.Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Определить длину самого короткого (длинного) слова. Public Function Fun14(s As String) As String Dim c As String, i As Integer, n As Integer, m As Integer c=s+"" m = 100 i=1 While i <= Len(c) n=1 While Mid(c, i, 1) = " " i=i+1 Wend i=i+1 While Mid(c, i, 1) <> " " n=n+1 i=i+1 Wend If n < m Then m = n i=i+1 Wend Fun14 = Длина самого короткого слова: " + Str(m) End Function Задание 15. Дана строка-предложение на русском языке. Вывести самое короткое (длинное) слово в предложении (если таких слов несколько, то вывести первое из них). Public Function Fun15(s As String) As String Dim c As String, i As Integer, n As Integer, m As Integer c=s+"" m = 100 i=1 Dim sl As String While i <= Len(c) n=0 sl = "" While Mid(c, i, 1) = " " i=i+1 Wend While Mid(c, i, 1) <> " " n=n+1 sl = sl + Mid(c, i, 1) i=i+1 Wend If n < m Then m = n: Fun15 = "Ñàìîå êîðîòêîå ñëîâî â ïðåäëîæåíèè: " + sl i=i+1 Wend End Function Задание 16. Дана строка-предложение, содержащая избыточные пробелы. Преобразовать ее так, чтобы между словами был ровно один пробел. Public Function Fun16(s As String) As String Dim n As Integer n = InStr(1, s, " ") While n <> 0 s = Mid(s, 1, n - 1) + " " + Mid(s, n + 2, Len(s)) n = InStr(1, s, " ") Wend Fun16 = s End Function