Вычислить функцию - PascalABC.NET (25235)
Формулировка задачи:
Вычислить функцию P =2.7lgL-cos2B+T2, где L, B и T-суммы элементов, стоящих на чётных местах в массивах А, В, С, соответственно.
Решение задачи: «Вычислить функцию»
textual
Листинг программы
uses System.Linq;
var
a,b,c:array of integer;
l,k,t:integer;
begin
randomize;
a:=Enumerable.Range(0,Random(10)+5).Select(r->Random(50)-10).ToArray();
l:=enumerable.Range(0,length(a)).Select(i->a[i]*ord(not odd(i))).Sum();
writeln('A:',a,' ; l=',l);
b:=Enumerable.Range(0,Random(10)+5).Select(r->Random(50)-25).ToArray();
k:=enumerable.Range(0,length(b)).Select(i->b[i]*ord(not odd(i))).Sum();
writeln('B:',b,' ; b=',k);
c:=Enumerable.Range(0,Random(10)+5).Select(r->Random(50)-25).ToArray();
t:=enumerable.Range(0,length(c)).Select(i->c[i]*ord(not odd(i))).Sum();
writeln('C:',c,' ; t=',t);
if l<=0 then writeln('P-Функция не определена')else
writeln('P=',2.7*log10(l)-sqr(cos(k))+t*t);
end.
Объяснение кода листинга программы
- Используется пространство имен
System.Linq, которое предоставляет набор методов для работы с последовательностями (arrays, lists и т.д.) - Задаются переменные
a, b, cтипаarray of integerи переменныеl, k, tтипаinteger. - Выполняется инициализация генератора случайных чисел с помощью функции
randomize. - Заполняются массивы a, b, c случайными числами с помощью метода
Enumerable.Range(0,Random(10)+5).Select(r->Random(50)-10).ToArray(). - Вычисляются суммы элементов массивов a и b с использованием метода
Sum()и условного оператораord(not odd(i)), который возвращает 0 для четных и 1 для нечетных индексов. - Выводятся на экран массивы a, b, c и значения l, k, t с помощью функции
writeln(). - Проверяется условие
l <= 0, и если оно истинно, то выводится сообщение об ошибкеP-Функция не определена. - Вычисляется значение P-функции с использованием формулы
2.7*log10(l)-sqr(cos(k))+t*t.