КТП.Процедуры и функции.Символьные переменные
.pdf21
3.Задана матрица Х(n,m) цілих чисел. Знайти число рядків, що упорядковані по споданню . Перевірку на упорядкованість оформити процедурою.
Варіант 28
2. Надані дійсні числа a, b, c. Обчислити вираз
z = max(a,b,c) −max2 (a +b, ac, a +b) . max(ab, a +c,bc) −1
2. Задано масив дійсних чисел X (n). Обчислити кількість елементів масиву, що належать кожному з відрізків [0,2], [-3,2] і [1,3] .
4. Для кожній із матриць A (4,4), B (5,5) і C (3,3) знайти Min елементів що лежать нижче головної діагоналі.
Варіант 29
1. Надано масив дійсних чисел A(10). Обчислити вираз z = f (2) −3 f (3)2 + f 2 (1), де
f(x ) = ∑ai x i .
i=1
2.Задано три масиви дійсних чисел: X(7), Y(12) , Z(18) .10
З'ясувати, скільки у масиві X |
елементів, більших ніж 5, у Y - |
більших ніж -3, у масиві Z - елементів, більших ніж 12. |
|
3.Вивести до друку елементи |
матриць N(4,6) і M(3,5) цілих |
чисел , що кратні 5. |
|
Варіант 30
1. Наданий масив дійсних чисел a(6) Обчислити для x=1,2,3
значення z= f2(x+1)-f(x), де f(y)=a1 y6+a 2 y5+…+a 6 y
2.Задано масиви дійсних чисел: X(10), Y(10), Z(10) Одержати
22
масив G(10),кожний елемент якого рахується так
min y |
i |
+ min z |
i, |
якщо |
х |
і |
≥ 0; |
||
|
|
|
|
|
|
|
|||
gi = |
|
+ [x |
]2 ,для |
|
інших |
|
|
випадків |
|
z |
i |
|
|
|
|||||
|
|
і |
|
|
|
|
|
|
3. Матриці A(3,4) і B(4,5) перетворити так, щоб у кожному стовпчику всі елементи, що розташовані за першим від’ємним стали рівними нулю. Передбачається, що у кожному стовпчику є хоча би один від’ємний елемент.
2 СИМВОЛЬНІ ЗМІННІ ТА РЯДКИ
2.1 Загальні вказівки
Рядок - це набір символів. Рядок повинен бути обмежений лапками. Наприклад “Студент повинен вчити інформатику”. Рядок не може перевищувати 255 символів. В Visual Basic існує багато функій для обробки рядків, наведемо декотрі з них.
Ucase$(S), Lcase$(S) - змінює регістр букв даного рядка S на вищий чи нижчій відповідно.
Instr(S,S1) |
виконує пошук підрядка S1 в рядку S. |
|||
Len(S) - знаходить довжину рядка. |
|
|
||
Left$(S,n),Right$(S,n) - |
повертає |
n |
символів з початку чи |
|
кінця рядка відповідно. |
|
|
|
|
Mid$(S,I,n) |
- повертає n |
символів |
рядка S починаючи з I -й |
|
позиції. Може користуватись також |
для заміщення деякий |
|||
частини рядка S на другий рядок. |
|
|
||
Ltrim$(S), |
Rtrim$(S),Trim$(s) =вилучає пробіли з початку , |
кінця або з двох боків рядка S відповідно.
Chr$(n),Asc(S) - перетворює код символу n в символ та символ в код відповідно.
Приклад 2.1
Дан рядок символів, у якому є знаки оклику. 1.Надрукувати
23
підрядок, який знаходиться між першим та другим знаками оклику (якщо другого символу “!” немає, то підрядок знаходити до кінця рядка). 2.За бажанням користувача підрахувати в цьому підрядку кількість символів “a”.Для виконання пункту 2 передбачити кнопку.
Інтерфейс задачі даний на рис.2.1
txtS txtPs
cmdRes1
cmdRes2 txtKs
Рисунок2.1 –Форма для приклада 2.1
Код програми
Dim Ps As String ‘переменная Ps доступная во всех процедурах ‘формы
Private Sub Form_Load() ‘процедура установки начальных ‘условий
txtS = "" txtPs = ""
cmdRes2.Visible = False ‘сделали невидимой кнопку cmdRes2
End Sub
Private Sub cmdRes1_Click()
Dim S As String, n1 As Integer, n2 As Integer
S = txtS.Text ‘считывание текста
24
n1 = InStr(S, "!") ‘нахождение номера первого “!” n2 = InStr(n1 + 1, S, "!") ‘нахождение номера второго “!”
If n2 = 0 Then n2 = Len(S) + 1 |
‘выделение подстроки |
Ps = Mid(S, n1 + 1, n2 - n1 - 1) |
|
txtPs.Text = Ps |
‘подстроку записали в txtPs |
cmdRes2.Visible = True ‘сделали видимой кнопку cmdRes2 End Sub
Private Sub cmdRes2_Click() Dim n As Integer, i As Integer n = 0
For i = 1 To Len(Ps)
If Mid(Ps, i, 1) = "a" Then n = n + 1 ‘подсчет кол-ва символов “a” Next i
txtKs.Text = CStr(n) End Sub
Приклад 2.2
Дан рядок . Підрахувати кількість пробілів у рядку. Інтерфейс задачі даний на рис.2.2
txtS
cmdRes
txtRes
Рисунок2.2 –Форма для приклада 2.1
Код програми
Private Sub cmdRes_Click()
25
Dim S As String, n As Integer Dim m As Integer, i As Integer S = txtS.Text
n = Len(S): m = 0 For i = 1 To n
If Mid(S, i, 1) = " " Then m = m + 1 Next i
txtRes.Text = CStr(m) End Sub
Приклад 2.3
Дано два рядка символів S1 та S2. Вилучити із рядка S1 ті символи які є в рядку S2.Інтерфейс задачі даний на рис.2.3
txtS1
txtS2
cmdRes
txtRes
Рисунок2.3 –Форма для приклада 2.3
Код програми
Private Sub cmdRes_Click()
Dim S As String, S1 As String
Dim S2 As String
Dim i As Integer, n As Integer
S1 = txtS1.Text: S2 = txtS2.Text
26
i = 1
Do While i <= Len(S1)
S = Mid(S1, i, 1): n = InStr(S2, S) If n <> 0 Then
S1 = Left(S1, i - 1) & Right(S1, Len(S1) - i) Else
i = i + 1 End If Loop
txtRes.Text = S1 End Sub
Приклад 2.4
Дано речення. Підрахувати кількість слів якщо вони відрізняються одним чи декілька пробілами. Інтерфейс задачі даний на рис.2.2
Код програми
Private Sub cmdRes_Click() Dim S As String, n As Integer Dim i As Integer
S = txtS.Text
S = Trim$(S) ‘удаление пробелов вначале и в конце строки Do While InStr(S, " ") > 0 ‘удаление кратных пробелов
n = InStr(S, " ")
S = Left(S, n) & Right(S, Len(S) - n - 1) Loop
n = 1
For i = 1 To Len(S) ‘подсчет количества пробелов (слов)
If Mid(S, i, 1) = " " Then n = n + 1 Next i
txtRes.Text = CStr(n) End Sub
27
2.2 Варіанти завдань
Варіант 1
1. Надан рядок символів; підрахувати кількість входжень до рядку букви “х”.
2.Надан рядок символів. Будемо називати словами групи символів у рядку, що розділені пробілами (одним або декількома) та не мають пробілів у середині. Надрукувати слово, яке знаходиться між першим та другим пробілами. За бажанням користувача вилучити з цого слова букви “а” ,для цого передбачити кнопку.
3. Написати програму, що визначає кількість символів “а” ,“у” та “с” у тексті, що складається з 5 рядків. Обчислення кількості символів у рядку тексту оформити у вигляді підпрограми.
Варіант 2
1.Надан рядок символів. Підрахувати, скільки в ньому символів " + " і скільки символів " * " .
2.Надан рядок символів. Відомо, що серед символів є принаймні один "!". .Надрукувати підрядок, який знаходиться між першим та другим знаками оклику (якщо другого символу “!” немає, то підрядок знаходити до кінця рядка). За бажанням користувача вилучити з підрядка усі групи букв "abcd",для цого передбачити кнопку.
3.Надан текст, що складається з 5 рядків. Замінити кожний символ"!" на символ "." Заміну символу “!” строкової змінної символом "." оформити у вигляді підпрограми.
Варіант 3
1. Надан рядок символів; підрахувати, загальну кількість символів " + "," - "," * " у даній послідовності.
28
2..Надан рядок символів. Будемо називати словами групи символів у рядку, що розділені пробілами (одним або декількома) та не мають пробілів у середині. Надрукувати підрядок, що містить символи, які знаходяться між першим та третім пробілами. За бажанням користувача змінити місцями перше та друге слово ,для цого передбачити кнопку.
3.Відредагувати текст, що складається з n рядків, вилучивши
вкожному рядку всі символи, розташовані між круглими дужками "(" і ")", і самі дужки. Редагування рядка виконувати у підпрограми.
Варіант 4
1.Надан рядок символів. Перетворити дану послідовність, замінивши усі знаки оклику точками.
2.Надан рядок символів, перший символ якого не пробіл, а серед інших символів є хоча б один пробіл. Надрукувати підрядок, до першого пробілу. За бажанням користувача у підрядку усі цифри змінити на “*”.,для цого передбачити кнопку.
3.Щоб зашифрувати текст, записаний за допомогою російських букв, його можна переписати, замінивши кожну букву іншою, що міститься безпосередньо за нею за алфавітом (буква "я" заміняється на букву "а"). Скласти програму для шифровки тексту, оформивши у виді підпрограми шифровку одного символу.
Варіант 5
1.Надан рядок символів. Перетворити дану послідовність, замінивши кожну крапку трьома крапками.
2.Надан рядок символів, серед яких є двокрапка. Надрукувати підрядок символів, розташованих після першої двокрапки . За
29
бажанням користувача у підрядку усі цифри змінити на “$”.,для цого передбачити кнопку.
3. Скласти підпрограму "стискування" вихідної послідовності символів за таким алгоритмом: кожна послідовність, що складається з декількох однакових символів, замінюється одним таким символом
Варіант 6
1.Надан рядок символів. Перетворити дану послідовність, замінивши кожну з груп точок однією.
2.Надан рядок символів, серед яких є двокрапка. Надрукувати підрядок символів, розташованих між першою і другою двокрапкою. Якщо другої двокрапки немає, то одержати усі символи, що розташовані після єдиної двокрапки. За бажанням користувача у підрядку групи символів “child” замінити на “children”,для цього передбачити кнопку.
3.Розробити підпрограму, яка складає рядок ,який містить символи першого заданого рядка, що належать до другого заданого рядка.
Варіант 7
1.Надан рядок символів. Перетворити дану послідовність, замінивши в ній кожну з груп крапок трьома крапками.
2.Надан рядок символів, серед яких є дві дужки "(" і ")" . Виключити з нього символи, що розташовані між дужками "(" і ")" та самі За бажанням користувача у підрядку групи символів “війна” замінити на “мир”,для цього передбачити кнопку.
3.Написати програму, що визначає частоту появи символів “+”,”-” у тексті, що складається з 5 рядків. Обчислення частоти повторiв символів у рядку тексту оформити у виді підпрограми.
30
Варіант 8
1.Надан рядок символів. З'ясувати, чи містить він підрядок “авс” 2.Надан рядок символів, серед яких є двокрапки. Надрукувати
підрядок символів, розташованих між першою і третьою двокрапками. Якщо третьої двокрапки немає, то одержати усі символи, що розташовані після першої двокрапки. За бажанням користувача у одержаному підрядку замінити кожен символ, що зустрічається після першого входження символу "*", на символ "-"”,для цього передбачити кнопку.
3.Скласти підпрограму, що дозволяє визначити позиції першого входження у заданий рядок символів з другого заданого рядка. Якщо перший рядок не містить жодного символу, що належить до другого заданого рядка, повідомити про це. Позицію символа визначати за допомогою підпрограми.
Варіант 9
1. Надан рядок символів. Одержати номер першого входження "аа". Якщо такої групи немає, то повідомити про це.
2.Надан рядок символів. Будемо називати словами групи символів у рядку, що розділені пробілами (одним або декількома) та не мають пробілів у середині. Надрукувати слово, яке знаходиться між другим та третім пробілами. За бажанням користувача знайти в цьому слові кількість входжень групи букв "abc".,для цього передбачити кнопку.
3. Скласти підпрограму, що заміняє у рядку символів всі одиниці нулями та всі нулі одиницями. Заміна повинна виконуватися, починаючи з заданої позиції рядка.
Варіант 10
1. Надан рядок символів. Відомо , що у рядку є принаймні одна кома. Знайти номер першої коми.