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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
VIVern
0 / 0 / 0
Регистрация: 05.09.2014
Сообщений: 14
#1

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

05.09.2014, 23:08. Просмотров 390. Ответов 9
Метки нет (Все метки)

Log: Domain Error

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


Вычислить значение выражения с тремя переменными
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.09.2014, 23:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вычислить значение выражения с тремя переменными (C++):

Вычислить значение суммы тремя способами - C++
Вычислить значение суммы тремя способами, с помощью операторов цикла а) for; b) while; c) do while.

Уравнение с тремя переменными С++ - C++
Уважаемые форумчане, помогите решить задачу на С++. Задано уравнение третьей степени 11*x*x*x-13*y*y*y+17*z*z*z-4503=0 Определить,...

Неверные расчеты калькулятора с тремя переменными - C++
Я начинающий в программировании и в c++, решил сделать программу, которая будет простым калькулятором: вводишь 3 переменные и тебе...

Вычислить значение функции y = f(x), предварительно выполнив действия над целыми переменными - C++
9 p=(--p^b--) <<(p&b) p = 3, b = 4, x = π/10 Задание Вычислить значение функции y = f(x), предварительно выполнив действия над...

Вычислить значение выражения - C++
Задание 2. Даны действительное число х и натуральное число n. Вычислить значение выражения при заданных x и n для выражения.

Вычислить значение выражения - C++
как решыть вот такое уравнение v= (1+〖sin〗^2 (x+y))/|x-2y/(1+x^2 y^2 )| x^|y| +〖cos〗^2 (arctg 1/z) При x=3.74 , y=-0.825, z=0.16 ,...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
zss
Модератор
Эксперт С++
6355 / 5919 / 1919
Регистрация: 18.12.2011
Сообщений: 15,215
Завершенные тесты: 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
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
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
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
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
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
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
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
06.09.2014, 16:03 #10
Цитата Сообщение от VIVern Посмотреть сообщение
если мы вводим отрицательное значение Х, то все выражение под знаком логарифма станет отрицательным
Почему? В логарифме же Y, а не Х.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.09.2014, 16:03
Привет! Вот еще темы с ответами:

Вычислить значение выражения - C++
#include &lt;stdio.h&gt; #include &lt;fstream&gt; #include &lt;iostream&gt; #include &lt;math.h&gt; void main() { int n; int matrix; ...

Вычислить значение выражения - C++
Ввести вещественное число X (|X| &lt; 1) и целое число N (&gt; 0). Вывести X – X3/3 + X5/5 – ... + (–1)NX2N+1/(2N+1). Ребят помогите...

Вычислить значение выражения - C++
Задан массив {ау} размерности М*М. Требуется вычислить

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
06.09.2014, 16:03
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru