// PascalABC.NET 3.1, сборка 1213 от 04.04.2016 const n=14; begin var a:=ArrRandom(n,-50,50); a.Println; var min:=a.Min; var b:=a.Where(x->(x>min) and (x<0)); if b.Count>0 then Writeln('Искомое произведение равно ', b.Aggregate(1.0,(p,x)->p*x)) else Writeln('Нет отрицательных чисел, меньших минимального') end.
Тестовое решение: 44 -35 -10 43 -25 -32 -32 -43 4 -50 29 -7 42 3 Искомое произведение равно -2696960000
2. Школьный вариант
// PascalABC.NET 3.1, сборка 1213 от 04.04.2016 const n=14; var i,min,k:integer; a:array[1..n] of integer; p:real; begin Randomize; min:=100; // любое, большее максимального 50 for i:=1 to n do begin a[i]:=Random(101)-50; Write(a[i],' '); if a[i]<min then min:=a[i] end; Writeln; p:=1.0; k:=1; for i:=1 to n do if (a[i]>min) and (a[i]<0) then begin p:=p*a[i]; Inc(k) end; if k>0 then Writeln('Искомое произведение равно ',p) else Writeln('Нет отрицательных чисел, меньших минимального') end.
Тестовое решение: 40 49 27 -14 -34 -45 -41 -23 50 1 40 -18 -27 -20 Искомое произведение равно -4362996960
В формулировке ошибка - не for i:-1 to 5 do, а for i:=1 to 5 do. Теперь к заданию. Цикл повторяется 5 раз, значит счётчик i будет иметь значение 1 на первом шаге, 2 на втором, 3 на третьем, 4 на четвёртом и 5 на пятом. В цикле мы обращаемся к элементу одномерного массива b, чей индекс равен i, то есть на первом шаге мы обратимся к первому элементу массива, на втором - ко второму и так далее. По формуле: 2*i+i. Опять же видим, что тут фигурирует наш счётчик цикла i, из чего следует что для первого шага первому элементу массива будет присвоено значение 2*1+1=3. Для пятого элемента массива значение будет равно 2*5+5=15. После выхода из цикла мы запрашивается вывод пятого элемента массива b, значение которого задано в цикле и равно 15. ответ: 15
+
Понятность, массовость
-
Неопределённость, неформальные выполнение, неточность