Консультация № 173070
08.10.2009, 19:41
0.00 руб.
0 7 1
Добрый вечер!!!Уважаемые эксперты,помогите пожалуйста с задачкой на Паскале,даны 2 функции,сделать табулирование 2 функций
y:=(1/x+sqrt(x)/(sin(x)))
z:=ln(1/(2+2*x+sqr(x)))+sqrt(cos(x))
то есть чтобы результать выводился в таблицу,например
--------------------------------------------------
x | y | z
--------------------------------------------------
23 | - | -

Обсуждение

Неизвестный
08.10.2009, 20:29
общий
den_stella:
Добрый вечер, den_stella!
Википедия
Табулирование функции - это вычисление значений функции при изменении аргумента от некоторого начального значения до некоторого конечного значения с определённым шагом.
Следовательно, то, что Вы привели - не есть табулирование. Должны быть: интервал (начальное и конечное значения), шаг табуляции. Это учитывается? Каким образом?
Неизвестный
08.10.2009, 20:42
общий
den_stella:
Если вывести в таком виде как Вы хотели тогда просто напишите при выводе ответа:
Writeln ('---------------------');
Writeln ('| y | z | |');
Writeln ('---------------------');
Writeln ('|', y , ' | ', z , '|' );
Writeln ('---------------------');

Или уточните ваш вопрос.
Неизвестный
09.10.2009, 12:28
общий
Полное условие проги:
Вычислить значение 2-ух функций для различных значений аргумента в диапозоне от a до b с шагом h (a,b,h- задаются,a<b)Результат вычислений оформить в виде таблицы Если при каком-то значении х ф-ция неопределена, то в таблицу помещать символ "-"(прочерк)

y:=(1/x+sqrt(x)/(sin(x)))
z:=ln(1/(2+2*x+sqr(x)))+sqrt(cos(x))

P.S. Если вам не трудно уважаемые эксперты скиньте пожалуйста код на мыло : neo-or@mail.ru
Неизвестный
09.10.2009, 15:16
общий
leonid59:
Полное условие проги:
Вычислить значение 2-ух функций для различных значений аргумента в диапозоне от a до b с шагом h (a,b,h- задаются,a<b)Результат вычислений оформить в виде таблицы Если при каком-то значении х ф-ция неопределена, то в таблицу помещать символ "-"(прочерк)

y:=(1/x+sqrt(x)/(sin(x)))
z:=ln(1/(2+2*x+sqr(x)))+sqrt(cos(x))

P.S. Если вам не трудно уважаемые эксперты скиньте пожалуйста код на мыло : neo-or@mail.ru
давно
Академик
320937
2216
10.10.2009, 09:51
общий
это ответ
Здравствуйте, den_stella.
Ответ в приложении. На почту уже выслал.

Приложение:
{
Вопрос 173070
Вычислить значение 2-ух функций для различных значений аргумента в диапозоне
от a до b с шагом h (a,b,h- задаются,a<b)Результат вычислений оформить в виде таблицы
Если при каком-то значении х ф-ция неопределена, то в таблицу помещать символ "-"(прочерк)

}
{
Область определения функции y(x): x>0, x != pi*n, где n=1,2,...
Область определения функции z(x): x>0, pi*n<=x<=pi(1/2+n)
y:=(1/x+sqrt(x)/(sin(x)))
z:=ln(1/(2+2*x+sqr(x)))+sqrt(cos(x))
}
program main;
(* вопрос 173070 *)
var
i: integer; (* шаг цикла *)
a,b: real; (* левая и правая границы интервала *)
h: real; (* шаг табуляции *)
x: real;
const eps = 0.0001; (* допустимая ошибка при сравнении с нулем *)

function IsNegative(const val: real): boolean;
begin
IsNegative := val<0;
end; { IsNegative }

function IsZero(const val, eps: real): boolean;
begin
IsZero := abs(val)<eps;
end; { IsNegative }

function y(const x: real): real;
begin
y:=(1/x+sqrt(x)/(sin(x)))
end; (* y *)

function z(const x: real): real;
begin
z:=ln(1/(2+2*x+sqr(x)))+sqrt(cos(x))
end; (* z *)

begin
write('a=');
readln(a);

write('b=');
readln(b);

write('h=');
readln(h);

writeln(' x | y | z');
writeln('======================');
x:= a;
while (x<=b+eps) do
begin
write(x:6:3);
if (IsNegative(x) or IsZero(sin(x), eps)) then
write(' - ')
else
write(y(x):7:3);
write(' | ');

if (IsNegative(cos(x)) or
IsZero(2+2*x+sqr(x), eps) or
IsNegative(1/(2+2*x+sqr(x))) or
IsZero(1/(2+2*x+sqr(x)), eps))
then
write(' - ')
else
write(z(x):7:3);
writeln;
x:= x+h;
end;
readln;

end.
Неизвестный
11.10.2009, 03:09
общий
leonid59:
Леонид,добрый вечер!А можно сделать эту задачку №173070 без использования функций???
Неизвестный
11.10.2009, 08:45
общий
den_stella:
Доброе утро!
{
Вычислить значение 2-ух функций для различных значений аргумента в диапозоне
от a до b с шагом h (a,b,h- задаются,a<b)Результат вычислений оформить в виде таблицы
Если при каком-то значении х ф-ция неопределена, то в таблицу помещать символ "-"(прочерк)
y:=(1/x+sqrt(x)/(sin(x)))
z:=ln(1/(2+2*x+sqr(x)))+sqrt(cos(x))
Пользовательских функций нет
}
program main;
(* вопрос 173070 *)
var
i: integer; (* шаг цикла *)
a,b: real; (* левая и правая границы интервала *)
h: real; (* шаг табуляции *)
x: real;
const eps = 0.0001; (* допустимая ошибка при сравнении с нулем *)

begin
write('a=');
readln(a);

write('b=');
readln(b);

write('h=');
readln(h);

writeln(' x | y | z');
writeln('======================');
x:= a;
while (x<=b+eps) do
begin
write(x:6:3);
if (x<0) or (abs(sin(x))<eps) then
write(' - ')
else
write(1/x+sqrt(x)/(sin(x)):7:3);
write(' | ');

if ((cos(x)<0) or
(abs(2+2*x+sqr(x))<eps) or
(1/(2+2*x+sqr(x))<0) or
(abs(1/(2+2*x+sqr(x)))<eps))
then
write(' - ')
else
write(ln(1/(2+2*x+sqr(x)))+sqrt(cos(x)):7:3);
writeln;
x:= x+h;
end;
readln;

end.
Форма ответа