IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Вычислить функцию по заданным условиям, Надо вычислить значение функции при разных выборках
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 3
Пол: Женский
Реальное имя: Ольга

Репутация: -  0  +


Код
program Lab_2;
        uses crt;
        var
           F,a,b,c,d,x:real;
           q:char;
        begin
           ClrScr;
           writeln('a=');
           readln(a);
           writeln('b=');
           readln(b);
           writeln('c=');
           readln(c);
           writeln('d=');
           readln(d);
           x:=0.2*sqrt(a)/(sin(b)/cos(b));
                 if x in (a,b) then F:=exp(sin(x)**3)+ln(arctan(x))
                 else if x in (c,d) then F:=sqrt(x)*sin(x/a)
                 else F:=ln(a+3*exp(a*x)));
           writeln (' a= ', a,' b= ', b,' c= ', c,' d= ', d,' x= ', x,' F= ', F);
           readln(q);
        end.


Выдает ошибку.

А выражение выглядит так:
^ - возведение в степень
F(x)=
{exp^(sin^3(x))+ln(arctg(x));
(x^1/2)*sin(x/a);
ln(a+3*(exp^ax))},
если x принадлежит |a,b|, если x принадлежит |c,d|, в остальных случаях.

x=0,2*(a^1/2)/tg(b),
a=4.44
b=3.076
c=6.03
d=8.4

За меня решать не прошу... просто обьясните что у меня не так в коде (шутку про ДНК я знаю). Я пишу программу второй раз в жизни. mega_chok.gif Прошу не ругать и не стебацца. Заранее спасибо за помощь.

Добавлено через 3 мин.
Если бы можно было у кого-то спросить еще.. я бы не стала тратить чужое время на это. Но мучать некого... unsure.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Leya @ 26.04.2007 1:58) *

Прошу не ругать и не стебацца.

Ругать тебя пока что не за что (будет - поругаю, будь уверена smile.gif), а второго слова я не знаю.. no1.gif

Ошибка твоя вот, в чем..
Ты проверяешь на принадлежность интервалу:

if x in (a,b) then F:=exp(sin(x)**3)+ln(arctan(x))


- и дальше тоже, аналогично. А нужно проверять так:

if (x>a)and(x<b) then F:=exp(sin(x)**3)+ln(arctan(x))


- и дальше аналогично..
В Паскале есть оператор in, но он только для множеств, которые не могут содержать такой тип, как real. Прочти в учебнике про тип set, чтобы разобраться.
Дальше я не смотрел..
Если непонятно объяснил или что еще неясно - спрашивай smile.gif
Успехов!

PS
и используй паскалевсие теги [cоde=pas], пожалуйста


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Цитата
просто обьясните что у меня не так в коде
Просто In работает только со множествами... Для того, чтобы (как ты хочешь) проверить попадание числа в интервал, надо делать так:
if (x >= a) and (x <= b) then ...


ну, и во втором случае - аналогично...
Кстати, у тебя еще и ** стоит вместо одного умножения ...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4





Группа: Пользователи
Сообщений: 3
Пол: Женский
Реальное имя: Ольга

Репутация: -  0  +


Цитата(Lapp @ 26.04.2007 2:14) *

А нужно проверять так:

if (x>a)and(x<b) then F:=exp(sin(x)**3)+ln(arctan(x))




Исходя из этого b>a, а если наоборот окажется?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(volvo @ 26.04.2007 2:17) *

Кстати, у тебя еще и ** стоит вместо одного умножения ...

Это не умножение, это куб..
Leya, чтобы получить куб можно перемножить три раза, а можно сделать настоящую степень через экспоненту и логарифм. Операции ** не существует..
Цитата(Leya @ 26.04.2007 2:30) *

Исходя из этого b>a, а если наоборот окажется?

Ну, тогда можно так, например:
if (x-a)*(x-b)<0 then ...


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6





Группа: Пользователи
Сообщений: 3
Пол: Женский
Реальное имя: Ольга

Репутация: -  0  +


2 Lapp Большое спасибо, я попробую. blush.gif

Добавлено через 11 мин.
Большое спасибо за помощь, все работает rolleyes.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Leya @ 26.04.2007 2:38) *

все работает

Йес!! smile.gif
только синус запомни где-нить, прежде чем умножать три раза.. Ладно?


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 16:10
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name