===== PascalABC.NET =====
#1
y := (a * x + 2 * b * x * x) * Abs(Cos(x * x)) / (Pi * Exp(x));
y := (a * Ln(b * x)) ** (1 / 3) / (1 + Sqr(Sin(a * x)));
y := (Abs(Sin(x ** 3)) + a) * Exp(a) / (b * b + c * c) ** (1 / 3);
#2
begin
var (a, x) := ReadReal2('Введите a и x:');
var t := x ** 3 - a;
t := Sign(t) * Abs(t) ** (1 / 3);
var y := t + Sin(x * x) / a;
Print('y =', y)
end.
Операция возведения в степень ** в PascalABC.NET определена только для неотрицательного аргумента, поскольку она выполняется с использованием логарифма. В то же время, в математике операция извлечения корней нечетной степени для отрицательного аргумента опеределена и допустима. В соответствии с этим, извлечение кубического корня в программе производится из абсолютной величины аргумента и последующим присваиванием знака этого аргумента результату. Если имеется потребность вычислять подобные корни в нескольких местах программы, имеет смысл ввести для этого собственную функцию.
var
n,a,k,sum,i,j: integer;
s: string;
begin
sum:=0;
write ('Введите количество чисел: ');
readln (n);
for i:=1 to n do begin
write ('Введите число: ');
readln (a);
Str(a,s);
k:=0;
for j:=1 to length(s) do
if s[j]='5' then k:=k+1;
if k=2 then sum:=sum+a;
end;
writeln ('Sum = ',sum);
end.
2 вариант через div и mod
var
n,a,x,k,sum,i: integer;
begin
sum:=0;
write ('Введите количество чисел: ');
readln (n);
for i:=1 to n do begin
write ('Введите число: ');
readln (a);
x:=abs(a);
k:=0;
while x>0 do begin
if x mod 10 =5 then k:=k+1;
x:=x div 10;
end;
if k=2 then sum:=sum+a;
end;
writeln ('Sum = ',sum);
end.
пример результата:
Введите количество чисел: 3
Введите число: 550001
Введите число: -550000
Введите число: 123456
Sum = 1