// PascalABC.NET 3.1, сборка 1204 от 24.03.2016 begin var a:=SeqRandom(ReadInteger('n='),-20,20) .Select(i->real(i)).ToArray; a.Println; var b:=a[0]*a.Skip(1).Where(x->x>0).Aggregate(1.0,(p,x)->p*x); Writeln(b); end.
Пояснения по каждому оператору 1. Запрашивается количество элементов в последовательности n, генерируется последовательность из n целых чисел в диапазоне от -20 до 20, затем элементы последовательности преобразуются в вещественное представление и образуют динамический массив а. 2. Элементы массива а выводятся на экран. 3. Первый элемент массива умножается на произведение остальных положительных элементов и результат присваивается переменной b. 4. Значение переменной b выводится на экран. В целях небольшого упрощения предполагается, что n>1 и что среди элементов массива, за исключением первого, имеется хотя бы один положительный элемент. Это связано с тем, что в задании отсутствует описание действий в случае, если вышеописанное предположение окажется неверным.
Переход к вещественному представлению чисел связан с обходом переполнения разрядной сетки при целочисленном умножении для больших значений n.
Program pr; uses crt; Var a,k,k1:integer; Begin Writeln('Введите a'); readln(a); k1:=1; k:=0; While (a<>0) and (k1<1000) do Begin if (a<0) and (a mod 2=0) and (abs(a)<=30000) then k:=k+1; k1:=k1+1; readln(a); end; Writeln('k=',k); readln; end.
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota
Оформи подписку