1. Составьте подпрограмму, изменяющую исходный вектор путем деления его положительных элементов на свои индексы и считающую число таких замен.
Скачать 48.1 Kb.
|
8. Составьте функцию, определяющую значение индекса элемента вектора, значение которого отрицательно и расположенного ближе к началу массива, если он не единственный. Используя эту функцию, рассчитайте среднее арифметическое значение элементов того из двух заданных векторов С и Т, в котором отрицательный элемент расположен ближе к началу вектора. В случае равенства индексов таких элементов рассчитайте среднее арифметическое для каждого из этих двух векторов. Если же хотя бы у одного из двух заданных векторов нет отрицательных элементов, то выведите сообщение: «Нет отрицательных элементов». Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim C() As Single, T() As Single Dim i, ma, mb, inda, indb As Integer Dim sr, sr1 As Single TextBox1.Clear() ma = InputBox("Введите размер вектора С") ReDim C(ma) For i = 1 To ma C(i) = InputBox("С(" & i & ")=?") Next mb = InputBox("Введите размер вектора Т") ReDim T(mb) For i = 1 To mb T(i) = InputBox("T(" & i & ")=?") Next inda = Ind(C, ma) indb = Ind(T, mb) sr = 0 sr1 = 0 If (inda <> 0 And indb <> 0) Then If inda < indb Then For i = 1 To ma sr = sr + C(i) Next sr = sr / ma TextBox1.AppendText("В векторе C нужный элемент ближе к началу. Среднее арифм. = " + Str(sr)) Else If inda > indb Then For i = 1 To mb sr = sr + T(i) Next sr = sr / mb TextBox1.AppendText("В векторе T нужный элемент ближе к началу. Среднее арифм. = " + Str(sr)) Else For i = 1 To ma sr = sr + C(i) Next sr = sr / ma For i = 1 To mb sr1 = sr1 + T(i) Next sr1 = sr1 / mb TextBox1.AppendText("Позиция одинакова. Среднее арифм. С = " + Str(sr) + " Среднее арифм. T = " + Str(sr1)) End If End If Else TextBox1.AppendText("Нет отрицательных элементов") End If End Sub Private Function Ind(ByRef M() As Single, ByVal mm As Integer) 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) < 0 Then ii = j fl = False End If j = j + 1 Loop Ind = ii Return Ind End Function End Class 9. Составьте функцию для определения количества нулевых элементов в векторе. Используя эту функцию, установите, в каком из этих двух заданных векторов IC и IE количество нулевых элементов меньше, и выведите сумму элементов этого массива. В случае равенства количества нулевых элементов, выведите лишь это значение Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim IC() As Single, IE() As Single Dim i, ma, mb, inda, indb As Integer Dim sr As Single TextBox1.Clear() ma = InputBox("Введите размер вектора IC") ReDim IC(ma) For i = 1 To ma IC(i) = InputBox("IC(" & i & ")=?") Next mb = InputBox("Введите размер вектора IE") ReDim IE(mb) For i = 1 To mb IE(i) = InputBox("IE(" & i & ")=?") Next inda = Ind(IC, ma) indb = Ind(IE, mb) sr = 0 If inda < indb Then For i = 1 To ma sr = sr + IC(i) Next TextBox1.AppendText("В векторе IC количество нулевых элементов меньше. Сумма элем. = " + Str(sr)) Else If inda > indb Then For i = 1 To mb sr = sr + IE(i) Next TextBox1.AppendText("В векторе IE количество нулевых элементов меньше. Сумма элем. = " + Str(sr)) Else TextBox1.AppendText("Количество нулевых элементов = " + Str(inda)) End If End If End Sub Private Function Ind(ByRef M() As Single, ByVal mm As Integer) As Integer Dim j, ii As Integer ii = 0 For j = 1 To mm If M(j) = 0 Then ii = ii + 1 End If Next Ind = ii Return Ind End Function End Class 11. Составьте функцию, принимающую значение True, если количество положительных элементов исходного вектора больше количества его отрицательных элементов, и значение False – в противном случае. Для каждого из двух заданных векторов А и В получите сумму положительных элементов, если положительных элементов в векторе больше, чем отрицательных, иначе – определить сумму отрицательных элементов. 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 As Integer Dim sr As Single Dim ina, inb As Boolean TextBox1.Clear() ma = InputBox("Введите размер вектора A") ReDim A(ma) For i = 1 To ma A(i) = InputBox("A(" & i & ")=?") Next mb = InputBox("Введите размер вектора B") ReDim B(mb) For i = 1 To mb B(i) = InputBox("B(" & i & ")=?") Next ina = Kol(A, ma) inb = Kol(B, mb) If ina Then sr = 0 For i = 1 To ma If A(i) > 0 Then sr = sr + A(i) End If Next TextBox1.AppendText("Сумма положительных элементов в А = " + Str(sr)) Else sr = 0 For i = 1 To ma If A(i) < 0 Then sr = sr + A(i) End If Next TextBox1.AppendText("Сумма отрицательных элементов в А = " + Str(sr)) End If If inb Then sr = 0 For i = 1 To mb If B(i) > 0 Then sr = sr + B(i) End If Next TextBox1.AppendText(" Сумма положительных элементов в B = " + Str(sr)) Else sr = 0 For i = 1 To ma If B(i) < 0 Then sr = sr + B(i) End If Next TextBox1.AppendText(" Сумма отрицательных элементов в B = " + Str(sr)) End If End Sub Private Function Kol(ByRef M() As Single, ByVal mm As Integer) As Boolean Dim j, pol, otr As Integer pol = 0 otr = 0 For j = 1 To mm If M(j) > 0 Then pol = pol + 1 Else If M(j) < 0 Then otr = otr + 1 End If End If Next Kol = False If pol > otr Then Kol = True End If Return Kol End Function End Class 12. Составьте функцию, принимающую значение True, если количество отрицательных элементов вектора больше количества его нулевых элементов, и значение False – в противном случае. Применяя эту функцию, выполните следующие вычисления для каждого из двух заданных векторов А и В. Если отрицательных элементов массиве больше, чем нулевых, вычислите произведение отрицательных элементов, иначе – определите сумму индексов нулевых элементов. 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 As Integer Dim sr As Single Dim ina, inb As Boolean TextBox1.Clear() ma = InputBox("Введите размер вектора A") ReDim A(ma) For i = 1 To ma A(i) = InputBox("A(" & i & ")=?") Next mb = InputBox("Введите размер вектора B") ReDim B(mb) For i = 1 To mb B(i) = InputBox("B(" & i & ")=?") Next ina = Kol(A, ma) inb = Kol(B, mb) If ina Then sr = 1 For i = 1 To ma If A(i) < 0 Then sr = sr * A(i) End If Next TextBox1.AppendText("Произведение отрицательных элементов в А = " + Str(sr)) Else k = 0 For i = 1 To ma If A(i) = 0 Then k = k + i End If Next TextBox1.AppendText("Сумма индексов нулевых элементов в А = " + Str(k)) End If If inb Then sr = 1 For i = 1 To mb If B(i) < 0 Then sr = sr * B(i) End If Next TextBox1.AppendText(" Произведение отрицательных элементов в B = " + Str(sr)) Else k = 0 For i = 1 To mb If B(i) = 0 Then k = k + i End If Next TextBox1.AppendText(" Сумма индексов нулевых элементов в B = " + Str(k)) End If End Sub Private Function Kol(ByRef M() As Single, ByVal mm As Integer) As Boolean Dim j, nol, otr As Integer nol = 0 otr = 0 For j = 1 To mm If M(j) = 0 Then nol = nol + 1 Else If M(j) < 0 Then otr = otr + 1 End If End If Next Kol = False If otr > nol Then Kol = True End If Return Kol End Function End Class 13. Составьте подпрограмму, определяющую среднее арифметическое значение тех элементов заданного одномерного массива, квадрат значений которых больше некоторой заданной величины. Если среднее арифметическое значение элементов вектора А, квадрат которых больше Н, меньше среднего арифметического значения аналогичных элементов вектора В, то выведите сообщение: «Среднее А меньше нормы». В противном случае выведите сообщение: «Среднее А в норме». Если же хотя бы в одном из векторов А или В не окажется элемента, значение которого больше Н, то выведите сообщение: «Нет запаса». 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 As Integer Dim H, sr As Single Dim fla As Boolean TextBox1.Clear() ma = InputBox("Введите размер вектора A") ReDim A(ma) For i = 1 To ma A(i) = InputBox("A(" & i & ")=?") Next mb = InputBox("Введите размер вектора B") ReDim B(mb) For i = 1 To mb B(i) = InputBox("B(" & i & ")=?") Next H = InputBox("Введите заданную величину") Kol(A, ma, H, sr, fla) If fla Then TextBox1.AppendText("Элементы А: ") For i = 1 To ma If A(i) > sr Then TextBox1.AppendText(Str(A(i)) + " , ") End If Next Else TextBox1.AppendText("В А среднего не существует!") End If Kol(B, mb, H, sr, fla) If fla Then TextBox1.AppendText(" Элементы B: ") For i = 1 To mb If B(i) > sr Then TextBox1.AppendText(Str(sr) + " ") End If Next Else TextBox1.AppendText(" В B среднего не существует!") End If End Sub Private Sub Kol(ByRef M() As Single, ByVal mm As Integer, ByVal HH As Single, ByRef ss As Single, ByRef fl As Boolean) Dim j, kk As Integer Dim sr As Single sr = 0 kk = 0 fl = True For j = 1 To mm If Math.Abs(M(j)) < HH Then sr = sr + M(j) kk = kk + 1 End If Next If kk <> 0 Then sr = sr / kk Else fl = False End If ss = sr End Sub End Class |