В одномерном массиве, состоящем из n вещественных частей , вычислить номер

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

Задать свой вопрос
2 ответа
// PascalABC.NET 3.2, сборка 1492 от 03.07.2017
// Внимание! Если программка не работает, обновите версию!

begin
  var a:=ArrRandom(ReadInteger('n='),-5,5).Select(m-gt;m/10).ToArray;
  a.Println;
  Writeln('Номер наибольшего элемента ',a.IndexMax+1);
  var s:=a.IndexesOf(x-gt;x=0).Take(2);
  if s.Countlt;2 then Writeln('Массив не содержит 2-ух нулей')
  else if s.First+1=s.Last then Writeln('Нулевые элементы соседствуют')
  else
    Writeln('Творение элементов меж первой парой нулей ',
        a[s.First+1:s.Last].Aggregate(1.0,(x,y)-gt;x*y))
end.

Пример
n= 15
0.1 -0.4 0 -0.3 0.1 0.2 0 -0.5 -0.5 0.2 -0.3 -0.3 0.5 0.4 0.5
Номер максимального элемента 13
Произведение элементов меж первой парой нулей -0.006
Sub Mass_Task()
'Заполнение массива 

N = 20 
Dim mas(20) 
S = "" 
Randomize 
For i = 1 To N   
   mas(i) = Round(Rnd(100) * 100)   
   If mas(i) gt; 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) gt; 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
, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт