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

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

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

> Вычислить функцию по заданным условиям, Надо вычислить значение функции при разных выборках
Leya
сообщение 26.04.2007 0:58
Сообщение #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 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 6)
Lapp
сообщение 26.04.2007 1:14
Сообщение #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 
 К началу страницы 
+ Ответить 
volvo
сообщение 26.04.2007 1:17
Сообщение #3


Гость






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


ну, и во втором случае - аналогично...
Кстати, у тебя еще и ** стоит вместо одного умножения ...
 К началу страницы 
+ Ответить 
Leya
сообщение 26.04.2007 1:30
Сообщение #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 
 К началу страницы 
+ Ответить 
Lapp
сообщение 26.04.2007 1:36
Сообщение #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 
 К началу страницы 
+ Ответить 
Leya
сообщение 26.04.2007 1:38
Сообщение #6





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

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


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

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


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

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

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


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

все работает

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


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

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

 



- Текстовая версия 20.07.2025 2:50
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"