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

0 голосов
75 просмотров

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


Информатика (15 баллов) | 75 просмотров
Дано ответов: 2
0 голосов
Правильный ответ

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

(17.3k баллов)
0 голосов
// PascalABC.NET 3.2, сборка 1492 от 03.07.2017
// Внимание! Если программа не работает, обновите версию!

begin
  var a:=ArrRandom(ReadInteger('n='),-5,5).Select(m->m/10).ToArray;
  a.Println;
  Writeln('Номер максимального элемента ',a.IndexMax+1);
  var s:=a.IndexesOf(x->x=0).Take(2);
  if s.Count<2 then Writeln('Массив не содержит двух нулей')<br>  else if s.First+1=s.Last then Writeln('Нулевые элементы соседствуют')
  else
    Writeln('Произведение элементов между первой парой нулей ',
        a[s.First+1:s.Last].Aggregate(1.0,(x,y)->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
(150k баллов)