Вычислить значение выражения free Paskal

Ответить
anuta1995
Сообщения: 2
Зарегистрирован: 23 дек 2013, 23:50

Найти Z=(x^k1)*(y^k2)/(S1+S2) , где x,y - заданные числа ; S1 и k1 - сумма и количество положительных элементов заданного массиве (a1,a2......,a30), S2 и k2 сумма и количество отрицательных элементов заданного массива(b1,b2.......,b20)
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

В чем сложность?
Пройти в цикле по массиву a, если очередной i-й элемент положительный - увеличить s1 на a, k1 на 1. Аналогично массив b с отрицательными.
x^k1 в паскале вычисляется как exp(k1*ln(x)).
Не забудьте проверить, что s1!=s2.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
anuta1995
Сообщения: 2
Зарегистрирован: 23 дек 2013, 23:50

Хыиуду писал(а):В чем сложность?
Пройти в цикле по массиву a, если очередной i-й элемент положительный - увеличить s1 на a, k1 на 1. Аналогично массив b с отрицательными.
x^k1 в паскале вычисляется как exp(k1*ln(x)).
Не забудьте проверить, что s1!=s2.


var
a: array [ 1 .. 20] of integer;
b: array [ 1.. 30] of integer;
z : real;
j: integer;
s1,s2,k1,k2,x,y : integer;

begin
randomize;
for i:= Low(a) to high(a) do begin a:=Random( 10)- 3; if a> 0 then s1:=s1+a;inc(k1); end;
for i:= Low(b) to high(b) do begin b:=Random( 10)- 3; if b< 0 then s2:=s2+b;inc(k2); end;

z:=(exp(k1*ln(x))+exp(k2*ln(y))) /(s1*s2);
WriteLn(z);
ReadLn;
end .
можете проверить . просто выдаёт ошибку и я не могу исправить
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

s1:=s1+a;inc(k1);заключить между begin и end, в следующей строке тоже.
Проверьте, что у вас в знаменателе - s1*s2 или s1+s2. В любом случае проверьте, что знаменатель не нулевой.
А какую ошибку выдает? Подозреваю, что ошибку выполнения операции с плавающей запятой, потому что x и y вы объявили, но значения им не задали, по умолчанию они скорее всего равны 0, а ln(0) не существует
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Ответить