Консультация № 155147
20.12.2008, 23:16
0.00 руб.
0 9 1
уважаемые эксперты помогите решить данную задачу.
Задана последовательность из N вещественных чисел. Вычислить
значение функции : корень N-ой степени из IX1*X2*X3*...*XNI

Обсуждение

давно
Профессор
401888
1232
21.12.2008, 08:46
общий
IX1*X2*X3*...*XNI Я так понял, что произведение взято по модулю?
давно
Профессор
401888
1232
21.12.2008, 09:07
общий
это ответ
Здравствуйте, Bel9illi!
Решение в приложении. Понял что произведение взято по модулю.

Приложение:
uses crt;
const nmax=100;
var x:array[1..nmax]of extended;
n,i:integer;
p:real;
begin
clrscr;
randomize;
write('n=');readln(n);
writeln('Massiv:');
p:=1.0;
for i:=1 to n do
begin
x[i]:=10*random-3;
p:=p*x[i]; {считаем произведение}
write(x[i]:5:2);
end;
writeln;
write('Koren=',exp(ln(abs(p))*(1/n)):0:4);{находим корень по формуле y=p^1/n=exp(ln(|p|)*1/n)}
readln
end.
Неизвестный
21.12.2008, 11:31
общий
вроде да, вообще это все что было дано.
Неизвестный
23.12.2008, 00:01
общий
x[i]:=10*random-3; вот в этой строчке выдает такую ошибку"error 116: Must be in 8087 mode to compile this." я понимаю что это с компиляцией связано, а как от этого избавиться?
давно
Профессор
401888
1232
23.12.2008, 07:05
общий
Если у Вас Турбо Паскаль, откройте вкладку меню Options -> Compiler ->Numeric processing -> Против 8087/80287 поставьте крестик Х
Неизвестный
23.12.2008, 13:16
общий
все, зработало, а что это было?
давно
Профессор
401888
1232
23.12.2008, 13:18
общий
Нужно настроить опции компилятора.
Неизвестный
23.12.2008, 13:49
общий
не, за что отвечала именно эта опция? интересно же, не всегда же спрашивать. и еще такой вопрос, если переписать программу для ввода элементов массива с клавиатуры, как изменится строка подсчета корня?
uses crt;
const nmax=100;
var x:array[1..nmax]of extended;
n,i:integer;
begin
clrscr;
write('n=');readln(n);
writeln('Massiv:');
for i:=1 to n do
readln(x[i]);
writeln;
writeln;
write('Koren=',exp(ln(abs(p))*(1/n)):0:4);{находим корень по формуле y=p^1/n=exp(ln(|p|)*1/n)}
readln
end.
давно
Профессор
401888
1232
23.12.2008, 14:03
общий
Произведение все равно надо считать, и эта строка никак не изменится, изменится вычисление произведения.
p:=1.0;
for i:=1 to n do
begin
readln(x[i]);
p:=p*x[i];
end;
Насчет опции - это директива компилятора $N (80х87) отвечает за подключение числового сопроцессора. Все это написано во встроенном Хэлпе Паскаля, и не надо каждый раз спрашивать.
Форма ответа