p := sign(y + 13 * a) * power(abs(y + 13 * a), 1/3);
Объяснение:
Единственная проблема тут - как записать кубический корень. В паскале есть функция power(a, p), которая возводит a в степень p, но если p не целое, оно работает только для положительных (для p > 0 неотрицательных) a. Кубический корень же определён для всех a.
Решение такое: посчитать кубический корень для модуля , а потом поставить такой же знак, что и под корнем.
Полностью программа может выглядеть, например, так:
var p, y, a: real;
begin
read(y, a);
p := sign(y + 13 * a) * power(abs(y + 13 * a), 1/3);
write(p)
end.
const n = 5;
m = 5;
var
a: array[1..n, 1..m] of integer;
i, j, tmp, s_s: integer;
magic: boolean;
begin
magic := true;
for i := 1 to n do begin
for j := 1 to m do begin
a[i, j] := random(50);
write(a[i, j]:4);
if(i = 1) then s_s := s_s + a[i, j];
if(j mod m = 0) then writeln;
end;
end;
for i := 2 to n do begin
tmp := 0;
for j := 1 to m do begin
tmp := tmp + a[i, j];
end;
if(tmp <> s_s) then begin
magic := false;
break;
end;
end;
for i := 1 to n do begin
tmp := 0;
for j := 1 to m do begin
tmp := tmp + a[j, i];
end;
if(tmp <> s_s) then begin
magic := false;
break;
end;
end;
if(magic) then writeln('Матрица является магическим квадратом') else
writeln('Матрица не является магическим квадратом');
end.