1. Составьте подпрограмму, изменяющую исходный вектор путем деления его положительных элементов на свои индексы и считающую число таких замен.
Скачать 48.1 Kb.
|
1. Составьте подпрограмму, изменяющую исходный вектор путем деления его положительных элементов на свои индексы и считающую число таких замен. Используя эту подпрограмму, определите, в каком из двух заданных векторов А или В будет больше измененных элементов. Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim A() As Single, B() As Single Dim i, ma, mb, k, kola, kolb As Integer TextBox1.Clear() ma = InputBox("Введите размер вектора А") ReDim A(ma) For i = 1 To ma A(i) = InputBox("A(" & i & ")=?") Next mb = InputBox("Введите размер вектора В") ReDim B(mb) For i = 1 To mb B(i) = InputBox("B(" & i & ")=?") Next k = 0 Kolzamen(A, ma, k) kola = k Kolzamen(B, mb, k) kolb = k If kola > kolb Then TextBox1.AppendText("В векторе А больше положительных элементов") Else If kola < kolb Then TextBox1.AppendText("В векторе B больше положительных элементов") Else TextBox1.AppendText("Одинаковое количество положительных элементов") End If End If End Sub Private Sub Kolzamen(ByRef A() As Single, ByVal m As Integer, ByRef k As Integer) Dim i As Integer k = 0 For i = 1 To m If A(i) > 0 Then k = k + 1 A(i) = A(i) / i End If Next End Sub End Class 2. Составьте функцию, принимающую значение True, если все элементы вектора упорядочены по убыванию, и False – в противном случае. Применяя эту функцию к двум заданным векторам ТА и ТВ, выведите вектор, если его элементы не упорядочены в порядке убывания их значений. В противном случае выведите сообщение: «ТА упорядочен» или «ТВ упорядочен»
3. Составьте функцию, принимающую значение True, если все элементы вектора имеют значения больше некоторой заданной величины, или значение False – в противном случае. Применяя эту функцию для каждого из двух заданных векторов СТ и DT, измените значение каждого элемента вектора на обратное, если окажется, что все элементы вектора имеют исходное значение больше H. В противном случае выведите сообщение: «Условие для CT не выполнено», или «Условие для DT не выполнено». Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim CT() As Single, DT() As Single Dim i, mc, md As Integer Dim H As Single Dim flc, fld As Boolean TextBox1.Clear() mc = InputBox("Введите размер вектора CT") ReDim CT(mc) For i = 1 To mc CT(i) = InputBox("СТ(" & i & ")=?") Next md = InputBox("Введите размер вектора DT") ReDim DT(md) For i = 1 To md DT(i) = InputBox("DT(" & i & ")=?") Next H = InputBox("Введите величину Н") flc = obr(CT, mc, H) fld = obr(DT, md, H) If flc Then TextBox1.AppendText("CT: ") For i = 1 To mc CT(i) = -CT(i) TextBox1.AppendText(Str(CT(i)) + " ") Next Else TextBox1.AppendText("Условие для CT не выполнено. ") End If If fld Then TextBox1.AppendText("DT: ") For i = 1 To mc DT(i) = -DT(i) TextBox1.AppendText(Str(DT(i)) + " ") Next Else TextBox1.AppendText("Условие для DT не выполнено. ") End If End Sub Private Function obr(ByRef A() As Single, ByVal m As Integer, ByVal hh As Single) As Boolean Dim i As Integer Dim flag As Boolean flag = True For i = 1 To m If A(i) < hh Then flag = False End If Next obr = flag Return obr End Function End Class 4. Составьте подпрограмму, заменяющую все элементы вектора, меньшие заданной величины на значение этой величины и считающую число таких замен. Используя эту подпрограмму, измените каждый из двух векторов Р и С и выведите тот вектор, в котором оказалось большее число замен. Если же эти числа замен будут равны, выведите число замен Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim P() As Single, C() As Single Dim i, mp, mc, kp, kc As Integer Dim H As Single TextBox1.Clear() mp = InputBox("Введите размер вектора P") ReDim P(mp) For i = 1 To mp P(i) = InputBox("P(" & i & ")=?") Next mc = InputBox("Введите размер вектора C") ReDim C(mc) For i = 1 To mc C(i) = InputBox("C(" & i & ")=?") Next H = InputBox("Введите значение величины") kp = 0 zamena(P, mp, H, kp) kc = 0 zamena(C, mc, H, kc) If kp > kc Then TextBox1.AppendText("P: ") For i = 1 To mp TextBox1.AppendText(Str(P(i)) + " ") Next Else If kp < kc Then TextBox1.AppendText("C: ") For i = 1 To mc TextBox1.AppendText(Str(C(i)) + " ") Next Else TextBox1.AppendText("Число замен = " + Str(kp)) End If End If End Sub Private Sub zamena(ByRef A() As Single, ByVal m As Integer, ByVal hh As Single, ByRef kolzam As Integer) Dim i As Integer kolzam = 0 For i = 1 To m If A(i) < hh Then kolzam = kolzam + 1 A(i) = hh End If Next End Sub End Class 5. Составьте функцию, принимающую значение True, если в двух векторах нет равных элементов, и значение False – в противном случае. Используя эту функцию для трех векторов R, S и T, в зависимости от результатов проверок выведите сообщение: «Равных элементов нет» или «Равные элементы есть». Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim R() As Single, S() As Single, T() As Single Dim mr, ms, mt, i As Integer Dim frs, fst, frt As Boolean TextBox1.Clear() mr = InputBox("Введите размер вектора R") ReDim R(mr) For i = 1 To mr R(i) = InputBox("R(" & i & ")=?") Next ms = InputBox("Введите размер вектора S") ReDim S(ms) For i = 1 To ms S(i) = InputBox("S(" & i & ")=?") Next mt = InputBox("Введите размер вектора T") ReDim T(mt) For i = 1 To mt T(i) = InputBox("T(" & i & ")=?") Next frs = rav(R, mr, S, ms) fst = rav(S, ms, T, mt) frt = rav(R, mr, T, mt) If (frs And fst And frt) Then TextBox1.AppendText("Равных элементов нет") Else TextBox1.AppendText("Равные элементы есть") End If End Sub Private Function rav(ByRef A() As Single, ByVal ma As Integer, ByRef B() As Single, ByVal mb As Integer) As Boolean Dim i, j As Integer rav = True For i = 1 To ma For j = 1 To mb If A(i) = B(j) Then rav = False End If Next Next Return rav End Function End Class 6. Составьте функцию, принимающую значение True, если в первом из двух заданных векторов количество отрицательных элементов окажется больше, чем во втором, и значение False – в противном случае. Применив эту функцию к двум заданным векторам A и B, измените на противоположный знак значения элементов того вектора, у которого оказалось больше отрицательных элементов. Если количество отрицательных элементов одинаково, то выведите соответствующее сообщение. Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim A() As Single, B() As Single Dim i, ma, mb, kola, kolb As Integer Dim flag As Boolean TextBox1.Clear() ma = InputBox("Введите размер вектора А") ReDim A(ma) For i = 1 To ma A(i) = InputBox("A(" & i & ")=?") Next mb = InputBox("Введите размер вектора В") ReDim B(mb) For i = 1 To mb B(i) = InputBox("B(" & i & ")=?") Next flag = bol(A, ma, B, mb, kola, kolb) If flag Then TextBox1.AppendText("В векторе А больше отриц. элем") For i = 1 To ma A(i) = -A(i) Next Else If kola < kolb Then TextBox1.AppendText("В векторе B больше отриц. элем.") For i = 1 To mb B(i) = -B(i) Next Else TextBox1.AppendText("Одинаковое количество отриц. элем.") End If End If End Sub Private Function bol(ByRef M() As Single, ByVal mm As Integer, ByRef P() As Single, ByVal pp As Integer, ByRef km As Integer, ByRef kp As Integer) Dim i As Integer km = 0 For i = 1 To mm If M(i) < 0 Then km = km + 1 End If Next kp = 0 For i = 1 To pp If P(i) < 0 Then kp = kp + 1 End If Next If km > kp Then bol = True Else bol = False End If Return bol End Function End Class 7. Составьте функцию, определяющую значение индекса элемента вектора, равного заданной величине К и расположенного ближе к началу массива, если он не единственный. Используя эту функцию, выведите тот из двух заданных векторов А и В, в котором элемент, равный К, находится ближе к началу массива. При одинаковом положении такого элемента от начала выведите сообщение «Позиция одинакова». Если же хотя бы в одном из двух заданных векторов нет элемента, равного К, выведите сообщение: «Равный К элемент не обнаружен». Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim A() As Single, B() As Single Dim i, ma, mb, inda, indb As Integer Dim K As Single TextBox1.Clear() ma = InputBox("Введите размер вектора А") ReDim A(ma) For i = 1 To ma A(i) = InputBox("A(" & i & ")=?") Next mb = InputBox("Введите размер вектора В") ReDim B(mb) For i = 1 To mb B(i) = InputBox("B(" & i & ")=?") Next K = InputBox("Введите величину К") inda = Ind(A, ma, K) indb = Ind(B, mb, K) If (inda <> 0 And indb <> 0) Then If inda < indb Then TextBox1.AppendText("В векторе A нужный элемент ближе к началу") Else If inda > indb Then TextBox1.AppendText("В векторе B нужный элемент ближе к началу") Else TextBox1.AppendText("Позиция одинакова") End If End If Else TextBox1.AppendText("Равный К элемент не обнаружен") End If End Sub Private Function Ind(ByRef M() As Single, ByVal mm As Integer, ByVal KK As Single) As Integer Dim j, ii As Integer Dim fl As Boolean ii = 0 j = 1 fl = True Do While fl And j <= mm If M(j) = KK Then ii = j fl = False End If j = j + 1 Loop Ind = ii Return Ind End Function End Class |