Графики, задачи, диаграммы, расчеты и т.д.
<u>PascalABC.NET 3.3.5, сборка 1660 от 20.04.2018</u>
<u>Внимание! Если программа не работает, обновите версию!</u>
begin
var a:=ArrRandom(49,-50,50); a.Println;
Writeln('Сумма равна ',a.Sum);
if not a.Any(t->t=0) then Writeln('Произведение равно ',
a.Aggregate(BigInteger(1),(p,q)->p*q))
end.
<u>Пример</u>
-26 -4 -2 -12 -38 -3 3 -12 -22 -30 -41 -38 34 20 34 -7 -10 -34 16 -1 -20 -17 49 -48 50 -37 -30 25 -42 -24 16 7 -27 2 8 44 -31 42 39 -29 -4 21 19 41 -34 -9 -4 48 47
Сумма равна -71
Произведение равно -5875206582842929080605341032818854321985176247205888000000000
По синтаксису Паскаля, между блоками if и else не должна стоять точка с запятой. Иначе компилятор сочтёт это за два раздельных блока и выдаст ошибку компиляции.
if (x >= 0) and (...) then writeln('Входит')
else writeln('Не входит');
То есть, после writeln('Входит') не должно быть точки с запятой.
Только тогда в блоке "else" не нужны условия ("else (...) and (...) ..." выдаст ошибку компиляции).
Ещё можно "else" заменить на "if", и получится два раздельных if-блока. Скорее всего, это и имел в виду компилятор.
Я сделала ввод массива с клавиатуры, но ты можешь сделать его рандомными числами
const N=5;
var A: array [1..N] of real;
i: integer;
begin
writeln('Введите массив');
for i:=1 to N do
readln(A[i]);
writeln('Положительные элементы:');
for i:=1 to N do
if A[i]>0 then
writeln('A[', i, ']=', A[i]);
end.
3, и 4 неправильно. После переименования, или название не стоит точка
а в программном блоке может оканчиваться не только var