С#
Произведение находится за вычетом максимального и минимального элементов. Если они встречаются несколько раз, то вычетаются по одному разу.
Код:
using System;using System.Collections.Generic;using System.Linq;namespace ThisAnswerIsNotMine { class Program { private static int Size => 7; private static void Main() { int seedMin = new Random().Next(1, 40); int seedMax = new Random().Next(seedMin + 5, seedMin + 40); var arr = Enumerable.Repeat(0, Size) .Select(_ => new Random().Next(seedMin, seedMax)) .ToArray(); int max = arr[0], min = arr[0]; foreach (var el in arr) { max = Math.Max(el, max); min = Math.Min(el, min); } int product = 1; bool maxIsCatched = false, minIsCatched = false; foreach (var el in arr) { if (!maxIsCatched && el == max) { maxIsCatched = true; continue; } if (!minIsCatched && el == min) { minIsCatched = true; continue; } product *= el; } PrintArr(arr); Console.WriteLine($"Max: {max}; Min: {min}; Product: {product}."); } private static void PrintArr<T>(IEnumerable<T> arr) { foreach (var el in arr) { Console.Write(el); Console.Write(" "); } Console.WriteLine(); } }}