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

Помогите плз
Найти произведение элементов больше 4 в каждой строке массива E(20, 10), номер которой кратен 5


alexcolesnikof: Забыл сказать, что нужно написать не программу, а схему алгоритма
Аноним: Поздно....
Аноним: Мысли читать люди пока не научились. А Вы пока еще, увы, не научились даже всего лишь уважать чужой труд. Потому что "забываете" указать, что именно Вам нужно.
alexcolesnikof: Ничего страшного, получилось даже лучше. Я за это получу оценку больше, спасибо

Ответы

Ответ дал: Аноним
1
Номер кратен 5 - это строки номер 5, 10, 15 и 20, т.е. от 5 с шагом 5.

// PascalABC.NET 3.3, сборка 1627 от 27.01.2018
// Внимание! Если программа не работает, обновите версию!

begin
  var (m,n):=(20,10);
  Writeln('*** Исходный массив ***');
  var E:=MatrRandom(m,n,1,99);
  E.Println(3); Writeln(3*E.ColCount*'-');
  var p:=BigInteger(1);
  ForEach var i in Range(4,m-1,5) do
    p:=E.Row(i).Where(t->t>4).Aggregate(p,(x,y)->x*y);
  Println('Произведение равно',p)
end.
Приложения:

alexcolesnikof: Спасибо, так еще лучше
Аноним: Возможно. Только условие я понял так, что произведение нужно общее. Оно неоднозначно записано, его еще можно понять, что произведение нужно не общее, а в каждой из таких строк отдельно.
Аноним: Тогда вместо строк
Аноним: ForEach var i in Range(4,m-1,5) do
p:=E.Row(i).Where(t->t>4).Aggregate(p,(x,y)->x*y);
Println('Произведение равно',p)
Аноним: надо написать
Аноним: ForEach var i in Range(4,m-1,5) do
E.Row(i).Where(t->t>4).Aggregate(BigInteger(1),(x,y)->x*y).Println
Аноним: И убрать строку var p:=BigInteger(1);
Вас заинтересует