Помощь - Поиск - Пользователи - Календарь
Полная версия: Вычислить значение функции
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
MaxiMum
Здравствуйте!!!
Помогите , пожалуйста, написал алгоритм, но там явная ошибка, только не пойму где.
Задача такая: нужно вычислить значение функции
w=sqrt(a*t*t+b*sin(t)+1) при t<0.1
w=a*t+b при t=0.1
w=sqrt(a*t*t+b*cos(t)+1) при t>0.1
a=2.5
b=0.4
t принадлежит отрезку [-1;1] при шаге дельта t равном 0,1

PROGRAM INTEGRAL;
VAR A, B, TK, TN, DT, T, W: REAl;
Begin
READ (A, B, TN, TK, DT);
T:=TN;
REPEAT
IF T<0.1 THEN W:=SQRT(A*T*T+B*SIN(T)+1);
IF T=0.1 THEN W:=A*T+B
ELSE W:=SQRT(A*T*T+B*COS(T)+1);
WRITELN ('W=',W,'T=',T:4:1,'A=',A:3:1,'B=',B:3:1); T':=T+DT
UNTIL T>TK
END

Michael_Rybak
1) после первого if'а поставь else
2) действительные числа сравниваются неточно, поэтому равенство "T=0.1" может не наступить; сравнивай лучше так: Abs(t - 0.1) < 1e-8.
3) "T':=T+DT" - че за апостроф? У тебя компилится?
AnTiDoD
Ошибка в цикле по-моему
volvo
AnTiDoD, очень мудрое замечание - особенно если учесть, что ВНЕ цикла в программе 3 строки...

Автору: выложи сюда свой код в аттаче или СКОПИРУЙ, но не перепечатывай (пока ты его перепечатываешь - вносишь ошибки, получается испорченный телефон...)
MaxiMum
Цитата(volvo @ 11.12.2006 17:47) *

AnTiDoD, очень мудрое замечание - особенно если учесть, что ВНЕ цикла в программе 3 строки...

Автору: выложи сюда свой код в аттаче или СКОПИРУЙ, но не перепечатывай (пока ты его перепечатываешь - вносишь ошибки, получается испорченный телефон...)

Я его и СКОПИРОВАЛ и вставил (в первом посте).
MaxiMum
Цитата(MaxiMum @ 11.12.2006 20:36) *

Я его и СКОПИРОВАЛ и вставил (в первом посте).

Всё, я её уже решил.
Всем спасибо, все свободны.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.