Форум программистов, компьютерный форум CyberForum.ru

Вычислить значение выражения с тремя переменными - C++

Восстановить пароль Регистрация
 
VIVern
0 / 0 / 0
Регистрация: 05.09.2014
Сообщений: 14
05.09.2014, 23:08     Вычислить значение выражения с тремя переменными #1
Log: Domain Error

Добрый день! В C++ совсем начинающий, и собственно в универе есть лабораторная работа, нужно написать програму которая будет вычислять значение выражения, в котором 3 переменных. Программу я вроде бы написал и она работает на случайных цифрах, однако у меня есть конкретные значения X,Y,Z которые подставив я долже получить ответ( который у меня есть), что бы проверить правильность программы. Беда в том что при вводе в поля для значений x и y отрицательных значений, при компиляции программы выдает ошибку log: Domain Error. И если при Y это понятно, ведь значение стоящее под знаком логорифма не может быть отрицательным, то вот с Х не понятно, ибо чуть выше прописано что мы берем модуль Х. Заранее извиняюсь если не правильно истолковал проблему, но думаю по коду будет все ясно.
 Комментарий модератора 
Тексты программ нужно переписывать в сообщение, а не вставлять в виде картинок или ссылок на другие сайты!


Вычислить значение выражения с тремя переменными
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5950 / 5555 / 1786
Регистрация: 18.12.2011
Сообщений: 14,196
Завершенные тесты: 1
06.09.2014, 12:30     Вычислить значение выражения с тремя переменными #2
Что-нибудь в Вашей картинке прочитать чрезвычайно трудно.
Единственное, что разглядел pow(k,1/2).
1/2 равно нулю, т.к. целое делится на целое.
Да и степень 0.5 - это корень квадратный, т.е. sqrt(k)
VIVern
0 / 0 / 0
Регистрация: 05.09.2014
Сообщений: 14
06.09.2014, 13:20  [ТС]     Вычислить значение выражения с тремя переменными #3
C++
1
2
3
4
5
6
7
8
9
10
double x,y,z,a,b,c,r,k ;
 x=StrToFloat(Edit1->Text);
 y=StrToFloat(Edit2->Text);
 z=StrToFloat(Edit3->Text);
 k=fabs(x);
 a=log(pow(1/y,sqrt(k))*(k-y/2));
 b=pow(sin(atan(z)),2);
 r=a+b;
 
 Memo1->Lines->Add("r ="+FloatToStr(r));
вот код программы. нужно что бы она выполнялась при значениях x=-15,246 y=4,642e-2 z=20,001e2
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
06.09.2014, 13:26     Вычислить значение выражения с тремя переменными #4
Цитата Сообщение от VIVern Посмотреть сообщение
\alpha =ln({y}^{-\sqrt{\left|x \right|}})(x-\frac{y}{2})+{sin}^{2}arctg(z)
На форуме есть редактор формул для таких случаев.
Цитата Сообщение от VIVern Посмотреть сообщение
при компиляции программы выдает ошибку log: Domain Error.
Может быть всё-таки при выполнении, а не при компиляции?
Вероятно аргумент логарифма получается <=0 вот и ошибка.
VIVern
0 / 0 / 0
Регистрация: 05.09.2014
Сообщений: 14
06.09.2014, 14:14  [ТС]     Вычислить значение выражения с тремя переменными #5
так вот я понимаю, что значит эта ошибка, и что под логарифмом не должно быть значение меньше нуля, но при тех значениях которые я должен ввести(по которым у меня будут проверять программу) получаеться что x-отрицательное и под всем логарифмом выражение становиться меньше нуля.

Не понял как работает редактор формул. смог набрать в нем формулу но как ее в текст сообщения вставить не понял.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
06.09.2014, 14:32     Вычислить значение выражения с тремя переменными #6
Вроде бы всё нормально: http://ideone.com/uhgGTu
Может разделить должен быть точка, а не запятая? Хотя тогда бы StrToFloat ругался.

Не по теме:

Цитата Сообщение от VIVern Посмотреть сообщение
Не понял как работает редактор формул
Нажать "Предпросмотр" и скопировать текст, обрамленный тегами LATEX в форму ответа. Там даже справка есть кстати (ссылка слева внизу).

VIVern
0 / 0 / 0
Регистрация: 05.09.2014
Сообщений: 14
06.09.2014, 15:00  [ТС]     Вычислить значение выражения с тремя переменными #7
http://www.cyberforum.ru/cgi-bin/latex.cgi?\alpha =ln({y}^{-\sqrt{\left|x \right|}})(x-\frac{y}{2})+{sin}^{2}arctg(z) при x=-15,246 y=4,642e-2 z=20,001e2. Вот собственно само задание
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
06.09.2014, 15:12     Вычислить значение выражения с тремя переменными #8
Почти всё правильно. Только в строке 6 нужно значит x, а не k:
C++
1
a=log(pow(1/y,sqrt(k))*(x-y/2))
VIVern
0 / 0 / 0
Регистрация: 05.09.2014
Сообщений: 14
06.09.2014, 15:24  [ТС]     Вычислить значение выражения с тремя переменными #9
да, но ведь если мы вводим отрицательное значение Х, то все выражение под знаком логарифма станет отрицательным и мы получим ошибку Log: Domain error
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.09.2014, 16:03     Вычислить значение выражения с тремя переменными
Еще ссылки по теме:

Вычислить значение выражения C++
C++ Вычислить значение выражения
Вычислить значение выражения C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
06.09.2014, 16:03     Вычислить значение выражения с тремя переменными #10
Цитата Сообщение от VIVern Посмотреть сообщение
если мы вводим отрицательное значение Х, то все выражение под знаком логарифма станет отрицательным
Почему? В логарифме же Y, а не Х.
Yandex
Объявления
06.09.2014, 16:03     Вычислить значение выражения с тремя переменными
Ответ Создать тему
Опции темы

Текущее время: 12:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru