
Другие языки программирования и технологии
Помогите пожалуйста решить задачу в Pascal

uses math;
function f(x: real; i: integer): real;
begin
f:=exp(cos(power(x, 2*i)))*sin(power(x, 3*i));
end;
var
mi, ma, r, x, y: real;
i, n :integer;
begin
readln(x, n);
mi:=exp(2);
ma:=-exp(2);
r:=0.999999999;
for i:=0 to n do
begin
y:=f(x, i);
if y < mi then mi:=y;
if y > ma then ma:=y;
if frac(abs(y))<frac(abs(r)) then r:=y;
end;
writeln(mi, ma, r);
end.
function f(x: real; i: integer): real;
begin
f:=exp(cos(power(x, 2*i)))*sin(power(x, 3*i));
end;
var
mi, ma, r, x, y: real;
i, n :integer;
begin
readln(x, n);
mi:=exp(2);
ma:=-exp(2);
r:=0.999999999;
for i:=0 to n do
begin
y:=f(x, i);
if y < mi then mi:=y;
if y > ma then ma:=y;
if frac(abs(y))<frac(abs(r)) then r:=y;
end;
writeln(mi, ma, r);
end.
Данное выражение генерирует значения в диапазоне [-e;e]. Т. е. всего 5 ближайших целых чисел: -3..3
Для каждого из чисел тупо храним минимальную по модулю разность с этим целым числом.
var
diff: array[-3..3] of real;
i, j, n: integer;
min, max, a, x: real;
begin
for i := -3 to 3 do diff[i] := 10.0;
min := 1.0;
max := -1.0;
readln(n, x);
for i := 1 to n do begin
a := exp(cos(pow(x, 2.0 * i))) * sin(pow(x, 3.0 * i));
if a < min then min := a;
if a > max then max := a;
for j := -3 to 3 do if abs(a - j) < abs(diff[j]) then diff[j] := a - j
end;
writeln('min = ', min);
writeln('max = ', max);
for j := -3 to 3 do writeln(j, ': ', j + diff[j]) {Ближайшие к целым}
end.
P.S. Вероятно, я неправильно понял задание и вариант Jurijus Zaksas корректнее.
Для каждого из чисел тупо храним минимальную по модулю разность с этим целым числом.
var
diff: array[-3..3] of real;
i, j, n: integer;
min, max, a, x: real;
begin
for i := -3 to 3 do diff[i] := 10.0;
min := 1.0;
max := -1.0;
readln(n, x);
for i := 1 to n do begin
a := exp(cos(pow(x, 2.0 * i))) * sin(pow(x, 3.0 * i));
if a < min then min := a;
if a > max then max := a;
for j := -3 to 3 do if abs(a - j) < abs(diff[j]) then diff[j] := a - j
end;
writeln('min = ', min);
writeln('max = ', max);
for j := -3 to 3 do writeln(j, ': ', j + diff[j]) {Ближайшие к целым}
end.
P.S. Вероятно, я неправильно понял задание и вариант Jurijus Zaksas корректнее.
Похожие вопросы
- Помогите пожалуйста решить задачу в Pascal ABC
- Pascal. Помогите пожалуйста решить задачу в паскале !
- помогите пожалуйста решить задачу по работе компьютера!
- Помогите пожалуйста решить задачу по программированию. В чем я ошибаюсь?
- Помогите,пожалуйста,решить задачу в Паскале.
- Помогите пожалуйста написать задачи на "Pascal"? Хотя бы несколько.
- Помогите пожалуйста решить задачи по программированию. P.S: задачи по паскалю.
- Помогите,пожалуйста,решить задачу на двумерные массивы,в паскале.(задача вн.)Спасибо.
- Помогите пожалуйста решить задачу С++
- Помогите пожалуйста решить задачи по информатике, одномерные массивы. Си шарп. Очень срочно. Пожалуйста!!!!