Помощь - Поиск - Пользователи - Календарь
Полная версия: Проверьте, пожалуйста
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
goosberry
В общем, мне нужно написать программу для решения примера
Изображение
Вот что я понаписала
Код

program zadacha;
uses crt;
const e=2.7;
var x,a,b,c,d,y:real;
begin
clrscr;
write ('x=');
read (x);
a:=abs(1-sqr(sin(x/2)));
b:=exp(ln(-sin(x)/cos(x))*3);
c:=exp(ln(2*e)*b);
d:=exp(ln(a)*1/5)+c;
y:=exp(ln(d)*1/3);
write('y= ',y:5:3);
readkey;
end.

А ещё мне нужно написать алгоритм к моей программе, мне там тогда все действия описывать (a,b,c,d и y), или как, а то я уже подзабыла что-то?
DarkMoonSide
Ну просто пример пишеш по синтаксису и по действиям и все.
И про алгоритм-да.
на каждое присвоение переменной значинаия рисуеш блок smile.gif
Если писала алгоритмы, то думаю знаеш как тогда обозначаются по правилам блоки.
goosberry
Спасибо))
volvo
Цитата
b:=exp(ln(-sin(x)/cos(x))*3);
- очень велика вероятность ошибки. Если sin(x) и cos(x) будут одновременно > 0, или одновременно будут < 0, то аргумент Ln станет отрицательным, и будет... Ну, скажем, нехорошо будет... Я уж не говорю о случае, когда Cos(x) или Sin(x) будут равны 0. Кстати, константа e тебе не нужна, она всегда может быть получена через Exp(1)...
goosberry
Цитата(volvo @ 14.02.2009 1:08) *

- очень велика вероятность ошибки. Если sin(x) и cos(x) будут одновременно > 0, или одновременно будут < 0, то аргумент Ln станет отрицательным, и будет... Ну, скажем, нехорошо будет... Я уж не говорю о случае, когда Cos(x) или Sin(x) будут равны 0. Кстати, константа e тебе не нужна, она всегда может быть получена через Exp(1)...
А как же тогда правильно записать, не подскажете? Просто я раньше с этим не сталкивалась blink.gif
volvo
Ну, правильно было бы сначала проверить, что Cos(x) не равен 0, и только потом продолжать:

program zadacha;
uses crt;
var x, a, b, c, d, y: real;
begin
clrscr;
write('x = '); readln(x);
if abs(cos(x)) > 10e-9 then begin
a:=abs(1-sqr(sin(x/2)));
b:=-sqr(sin(x)/cos(x)) * (sin(x)/cos(x)); { Вот так вычисляем куб тангенса }
c:=2*exp(b); { <--- Вот тут тоже обрати внимание !!! }
d:=exp(ln(a)*(1/5))+c;
y:=exp(ln(d)*(1/3));
writeln('y = ', y:5 :3);
end
else writeln('cos(x) = 0; деление на 0 !!!');
readkey;
end.
goosberry
Цитата(volvo @ 14.02.2009 19:27) *

Ну, правильно было бы сначала проверить, что Cos(x) не равен 0, и только потом продолжать:

Болшьшое спасибо, только вот у нас вроде задание написать неразветвлённую программу, ну ладно))
И ещё по блок-схеме: в блоке ввода данных указывать только x или как?
volvo
Цитата
в блоке ввода данных указывать только x или как?
Ну, ты же вводишь только Х? Значит, только его и указывай...
goosberry
Цитата(volvo @ 14.02.2009 19:47) *

Ну, ты же вводишь только Х? Значит, только его и указывай...

Ага, спасибо большое give_rose.gif , я просто подумала, что может опять на меня напало настроение тормоза wacko.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.