Помощь - Поиск - Пользователи - Календарь
Полная версия: Помогите отредактировать программу
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Sane
Протабулировать надо, программу я сделал и она работает но с другой функцией. А вот с этой нехочет:
Корень кубический из m*tg(l)+c*sin(l)
пишет ошибку с плавающей точкой:
exp(ln(abs(m*((sin(l)/cos(l))+c*sin(l))/3)))


Как правильно нодо ?
klem4
y := exp((1/3)*ln(m*sin(l)/cos(l) + c * sin(l)))


компилируется без ошибок, ну естественно при y - вещественного типа.
hiv
Код в студию! Тогда точнее сказать можно.
Sane
begin
if l>0 then
y:=exp(ln((m*((sin(l)/cos(l))+c*sin(l))/3)));
end;
я сделал так и она заработала. (через условие)
klem4
ну так правильно, 2 условия есть для этого выражения
1) cos(l) <> 0
2)m*sin(l)/cos(l) + c * sin(l) > 0
hiv
скорее всего в твоей программе переменная l была равна нулю, и в твоем выражении получалось вычисление ln(0) - а это минус бесконечность, о чем тебе компьютер и сообщил: ошибка с плавающей точкой.
Sane
(другое задание)

помогите описать вот это:
sqrt(t+1)*exp(a*x*t)*cos(t-a)
где exp((-a)*x*t) это e в степени -axt

верно ли это ?
если нет напишите пожалуйста свою версию.
Заранее спасибо.
volvo
Цитата
помогите описать вот это:

Sane, ты саму функцию, которая тебе задана приводить можешь? А то неясно что ты хочешь: привел что-то и спрашиваешь "Верно ли это?" Откуда я знаю, ЧТО тебе было задано?
hiv
в смысле описать? как это будет записываться математически на бумажке?
Sane
мне надо протабулировать функцию, это я знаю как сделать, я просто сомниваюсь правильно ли я её записываю в паскале.
volvo
Я еще раз повторяю вопрос: "Какую функцию?" Приведи ее МАТЕМАТИЧЕСКУЮ запись (лучше всего - в виде картинки)...
Sane
как мне написать е в степени -axt ? (вот конкретно что непонятно)
volvo
Цитата
как мне написать е в степени -axt ?

Вот так:
exp(-a * x * t)
Sane
всё понял. Спасибо !
Sane
Вобщем если несложно то глянте в целом правильна ли она работает:
Задание: в программе предусмотреть печать таблицы значений аргументов и функций


program tabulirovanie;

uses crt;
var y,a,b,x,t:real;
i,j:integer;



begin

clrscr;
writeln ('enter ishodniye danniye');
write ('a=');readln (a);


x:=i;
t:=j;
for i:=1 to 2 do
for j:=2 to 3 do
begin
begin
y:=sqrt((t+(1)*exp(-a*x*t))*cos(t-a));
writeln ('x=',x:2:1,' t=',t:2:1,' y=',y:4:5);

t:=t+0.3;
end;
x:=x+0.2;
end;
readln;
clrscr;

end.
begin
clrscr;

end.


Картинка удалена
Atos
To: Sane Ты что, издеваешься? выложи картинку в нормальном формате, Ты думаешь, что все могут мегабайт скачать? И не забывай тег [ code]
Sane
да, конечно,ты прав, вот картинка
volvo
Sane, а , простите, начальное значение T у тебя какое?
Кроме того, есть ведь еще циклы While и Repeat Until, которыми, скорее всего, тебе и надо здесь пользоваться...
Sane
Значение 2 у t
попозже попробую с until ом
volvo
Да, но программа-то этого не знает... Ты же в T заносишь J еще ДО того, как J инициализирован вообще, так что теоретически T содержит мусор ...
Sane
ясно, поймите меня правильно я 2 дня назад только начал изучать паскаль. И ваши советы приму во внимание. Спасибо за помощь.
Sane
Надо протабулировать функцию и аргументы но не при всех a она работает, если нет то выдаёт 207 ошибку. Что надо здесь добавить ? (исх. функция с аргументами в файле)
program tabulirovanie;

uses crt;
var y,a,b,x,t:real;
begin

begin
writeln ('enter ishodniye danniye');
write ('a=');readln (a);
x:=1;
repeat
t:=2;
repeat
y:=sqrt((t+(1)*exp(-a*x*t))*cos(t-a));
writeln ('x=',x:2:1,' t=',t:2:1,' y=',y:4:5);
t:=t+0.3;
until (t>3);
x:=x+0.2;
until (x>2.1)
end;
readln;
clrscr;
end.


М
Тег Кода надо не только открывать, но и закрывать wink.gif
volvo

volvo
Цитата
Что надо здесь добавить ?

Функцию правильно записать:
y:=sqrt(t+1)*exp(-a*x*t)*cos(t-a);


Все нормально работает... Только лишний Begin .. End есть в программе...
Sane
попробуйте при а=5
volvo
Здесь по-твоему, удаленный отладчик? А сам ты попробовать не хотел бы? mad.gif
Sane
Нет я просто непонимаю что мне надо сделать чтоб она не выдавала ошибку. При a=3 она работает а при a=5 нехочет. Почему так ? Просто если несложно объясните.
volvo
Цитата
Просто если несложно объясните.

Сложно объяснить того, что НЕ происходит... У меня вот это:
Цитата
enter ishodniye data:
a = 5
x=1.0 t=2.0  y=-0.00008
x=1.0 t=2.3  y=-0.00002
x=1.0 t=2.6  y=-0.00000
x=1.0 t=2.9  y=-0.00000
x=1.2 t=2.0  y=-0.00001
x=1.2 t=2.3  y=-0.00000
x=1.2 t=2.6  y=-0.00000
x=1.2 t=2.9  y=-0.00000
x=1.4 t=2.0  y=-0.00000
x=1.4 t=2.3  y=-0.00000
x=1.4 t=2.6  y=-0.00000
x=1.4 t=2.9  y=-0.00000
x=1.6 t=2.0  y=-0.00000
x=1.6 t=2.3  y=-0.00000
x=1.6 t=2.6  y=-0.00000
x=1.6 t=2.9  y=-0.00000
x=1.8 t=2.0  y=-0.00000
x=1.8 t=2.3  y=-0.00000
x=1.8 t=2.6  y=-0.00000
x=1.8 t=2.9  y=-0.00000
x=2.0 t=2.0  y=-0.00000
x=2.0 t=2.3  y=-0.00000
x=2.0 t=2.6  y=-0.00000
x=2.0 t=2.9  y=-0.00000
программа выдала при A=5... А какого ты от нее результата ждешь?
Sane
у меня вот так:
volvo
Sane, ну я же тебе сказал, что сделать в посте №23:
Цитата
Функцию правильно записать:


Нет, ты опять по-своему все делаешь... Ну, как знаешь.
Sane
всё ок. Извени просто изменения не записал и закрыл паскаль и запустил потом. Спасибо за помощь.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.