• Предмет: Информатика
  • Автор: simonovagalina8372
  • Вопрос задан 2 года назад

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


vunderkid: какой язык использовать
Аноним: вундеркиндский))

Ответы

Ответ дал: Аноним
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('Массив не содержит двух нулей')
  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

vunderkid: Использование готовых классов сводит написание алгоритмов к изучению использования функций...
Аноним: Смешно. А ничего, что все базовые типы, процедуры ввода-вывода и т.д. в PascalABC.NET - это тоже "готовые классы"?
Аноним: И второе. Никому не интересно стократное (ибо в каждой задаче) написание одних и тех же алгоритмов поиска максимума, минимума, индекса, сортировки и т.д. Посему это и включено в язык. Заметьте: не во внешнюю подключаемую библиотеку, как в Питоне, например, а именно в ядро. С тем, чтобы не нарушать требований ЕГЭ и олимпиад использовать лишь СТАНДАРТНЫЕ базовые библиотеки.
Аноним: А алгоритм решения задачи - что же, он прекрасно виден. Что им как ищется, что откуда берется.
Ответ дал: vunderkid
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
Приложения:

vunderkid: Я вам и не указываю ничего.
Аноним: "Займитесь своим делом" - это не Ваши слова?
Аноним: Откуда Вам знать, может это и мое дело тоже?
vunderkid: Если модераторы не знают чем архивариусы должны заниматься, то наверное это ваша личная проблема.
vunderkid: Судя по всему ваше дело - соблюдать субординацию и не соваться
Аноним: "Нормальный" такой вывод через всплывающее окно! Первым выводится некое произведение, чтобы его проверить, надо на бумажке записать. Ну да ладно, это одно число. Далее окно схлопывается, выводится сам массив. Хорошо, проверили все. Теперь окно снова схлопнулось и появилось сообщение о максимальном элементе. Вот только посмотреть уже негде... массив-то исчез с экрана!
Аноним: Почему Вы не думаете, когда конструируете вывод ?
vunderkid: Внимательность тренируйте. Она очень часто бывает требуема.
Аноним: Вы считаете это содержательным ответом?
vunderkid: Я считаю с помощью калькулятора и ещё раз говорю что ответ недоступен для изменения и форматирования.
Вас заинтересует