
Сильвестр
5 год назад
В одномерном массиве, состоящем из n вещественных элементов , вычислить номер максимального элемента массива; произведение элементов массива расположенных между первым и вторым нулевыми элементами.

ОТВЕТЫ

Gavriil
Oct 24, 2020
Sub Mass_Task()
'Заполнение массива
N = 20
Dim mas(20)
S = ""
Randomize
For i = 1 To N
mas(i) = Round(Rnd(100) * 100)
If mas(i) > 90 Then
mas(i) = 0
End If
S = S + Str(mas(i)) + ","
Next i
'Поиск номера максимального элемента
maxindex = 1 'предполагаем что максимальное число в первом элементе массива
'поиск номеров первого и последующего нулей
indF0 = -1: indL0 = -1
For i = 1 To N
If mas(i) > mas(maxindex) Then
maxindex = i
End If
If mas(i) = 0 Then
If indF0 = -1 Then
indF0 = i
Else
If indL0 = -1 Then
indL0 = i
End If
End If
End If
Next i
'вычисление произведения
multiplication = 1
If (indL0 = -1) Or (indF0 = -1) Or (indF0 + 1 = indL0) Then
MsgBox "Нулей или чисел между нулями нет"
Else
For i = indF0 + 1 To indL0 - 1
multiplication = multiplication * mas(i)
Next i
MsgBox "произведение чисел находящихся между первым и следующим нулями" + Str(multiplication)
End If
MsgBox "последовательность чисел " + S + " номер максимального элемента " + Str(maxindex)
End Sub
Sub test()
Mass_Task
End Sub
'-Пример--------------------------------------------------------------------
Произведение 3532800
Последовательность
6,58,83,12,84,87,34,68,16,17,0,60,40,64,23,0,0,49,58,42
Номер максимального элемента 6
'Заполнение массива
N = 20
Dim mas(20)
S = ""
Randomize
For i = 1 To N
mas(i) = Round(Rnd(100) * 100)
If mas(i) > 90 Then
mas(i) = 0
End If
S = S + Str(mas(i)) + ","
Next i
'Поиск номера максимального элемента
maxindex = 1 'предполагаем что максимальное число в первом элементе массива
'поиск номеров первого и последующего нулей
indF0 = -1: indL0 = -1
For i = 1 To N
If mas(i) > mas(maxindex) Then
maxindex = i
End If
If mas(i) = 0 Then
If indF0 = -1 Then
indF0 = i
Else
If indL0 = -1 Then
indL0 = i
End If
End If
End If
Next i
'вычисление произведения
multiplication = 1
If (indL0 = -1) Or (indF0 = -1) Or (indF0 + 1 = indL0) Then
MsgBox "Нулей или чисел между нулями нет"
Else
For i = indF0 + 1 To indL0 - 1
multiplication = multiplication * mas(i)
Next i
MsgBox "произведение чисел находящихся между первым и следующим нулями" + Str(multiplication)
End If
MsgBox "последовательность чисел " + S + " номер максимального элемента " + Str(maxindex)
End Sub
Sub test()
Mass_Task
End Sub
'-Пример--------------------------------------------------------------------
Произведение 3532800
Последовательность
6,58,83,12,84,87,34,68,16,17,0,60,40,64,23,0,0,49,58,42
Номер максимального элемента 6
- "Нормальный" такой вывод через всплывающее окно! Первым выводится некое произведение, чтобы его проверить, надо на бумажке записать. Ну да ладно, это одно число. Далее окно схлопывается, выводится сам массив. Хорошо, проверили все. Теперь окно снова схлопнулось и появилось сообщение о максимальном элементе. Вот только посмотреть уже негде... массив-то исчез с экрана!
914
Смежные вопросы: