Тут имеется один "подвох" и на него часто ловятся. Можно воспользоваться функций Power для возведения в степень 1/3, либо применить известную формулу Но в обоих случаях используется (явно или скрыто) вычисление логарифма. А мы помним, что логарифм определен только для положительного аргумента. По заданию нужно найти кубический корень из a+b. И этот корень определен для любого вещественного числа, в отличии от логарифма. Вспоминаем:
И только теперь можно писать программу.
// PascalABC.NET 3.2, сборка 1353 от 27.11.2016 // Внимание! Если программа не работает, обновите версию!
begin var a,b,c:real; Read(a,b); c:=a+b; Writeln(sign(c)*power(abs(c),1/3)) end.
const N = 5; var a, S1, S2: Integer; i, Q1, Q2: Byte; begin S1 := 0; Q1 := 0; S2 := 0; Q2 := 0; writeln('Введите ', N, ' чисел:'); for i := 1 to N do begin read(a); if a < 0 then begin S1 := S1 + a; inc(Q1) end; if a > 0 then begin S2 := S2 + a; inc(Q2) end; end; writeln; if Q1 > 0 then begin writeln('Сумма отрицательных чисел: ', S1); writeln('Количество отрицательных: ', Q1) end else writeln('Отрицательных нет'); if Q2 > 0 then begin writeln('Сумма положительных чисел: ', S2); writeln('Количество положительных: ', Q2) end else writeln('Положительных нет') end.
Можно воспользоваться функций Power для возведения в степень 1/3, либо применить известную формулу
Но в обоих случаях используется (явно или скрыто) вычисление логарифма. А мы помним, что логарифм определен только для положительного аргумента.
По заданию нужно найти кубический корень из a+b. И этот корень определен для любого вещественного числа, в отличии от логарифма.
Вспоминаем:
И только теперь можно писать программу.
// PascalABC.NET 3.2, сборка 1353 от 27.11.2016
// Внимание! Если программа не работает, обновите версию!
begin
var a,b,c:real; Read(a,b);
c:=a+b;
Writeln(sign(c)*power(abs(c),1/3))
end.
Примеры
14.283 -32.17
-2.61524573390822
13.183 -13.183
0
var a, S1, S2: Integer;
i, Q1, Q2: Byte;
begin
S1 := 0; Q1 := 0;
S2 := 0; Q2 := 0;
writeln('Введите ', N, ' чисел:');
for i := 1 to N do
begin
read(a);
if a < 0 then
begin
S1 := S1 + a;
inc(Q1)
end;
if a > 0 then
begin
S2 := S2 + a;
inc(Q2)
end;
end;
writeln;
if Q1 > 0 then
begin
writeln('Сумма отрицательных чисел: ', S1);
writeln('Количество отрицательных: ', Q1)
end
else
writeln('Отрицательных нет');
if Q2 > 0 then
begin
writeln('Сумма положительных чисел: ', S2);
writeln('Количество положительных: ', Q2)
end
else
writeln('Положительных нет')
end.