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

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

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

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

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

Log: Domain Error

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


Вычислить значение выражения с тремя переменными
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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++
Доброе время суток уважаемые форумчанины. Занимаюсь само изучением языков программирования (C++).При решение очередной задачи я остался в...

Вычислить значение выражения - C++
Дано натуральное число n. Вычислить . i1 j1 i 2 j

9
zss
Модератор
Эксперт С++
6486 / 6049 / 1987
Регистрация: 18.12.2011
Сообщений: 15,691
Завершенные тесты: 1
06.09.2014, 12:30 #2
Что-нибудь в Вашей картинке прочитать чрезвычайно трудно.
Единственное, что разглядел pow(k,1/2).
1/2 равно нулю, т.к. целое делится на целое.
Да и степень 0.5 - это корень квадратный, т.е. sqrt(k)
0
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
0
Tulosba
:)
Эксперт С++
4396 / 3232 / 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 вот и ошибка.
0
VIVern
0 / 0 / 0
Регистрация: 05.09.2014
Сообщений: 14
06.09.2014, 14:14  [ТС] #5
так вот я понимаю, что значит эта ошибка, и что под логарифмом не должно быть значение меньше нуля, но при тех значениях которые я должен ввести(по которым у меня будут проверять программу) получаеться что x-отрицательное и под всем логарифмом выражение становиться меньше нуля.

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

Не по теме:

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

0
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. Вот собственно само задание
0
Tulosba
:)
Эксперт С++
4396 / 3232 / 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))
0
VIVern
0 / 0 / 0
Регистрация: 05.09.2014
Сообщений: 14
06.09.2014, 15:24  [ТС] #9
да, но ведь если мы вводим отрицательное значение Х, то все выражение под знаком логарифма станет отрицательным и мы получим ошибку Log: Domain error
0
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
06.09.2014, 16:03 #10
Цитата Сообщение от VIVern Посмотреть сообщение
если мы вводим отрицательное значение Х, то все выражение под знаком логарифма станет отрицательным
Почему? В логарифме же Y, а не Х.
0
06.09.2014, 16:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.09.2014, 16:03
Привет! Вот еще темы с ответами:

Вычислить значение выражения - C++
Помогите пожалуйста написать программный код) Af^2+B(sqrt(f+1)), f&lt;1; A=1.3;B=0.5 ...

Вычислить значение выражения - C++
помогите составить уравнение, которое начинается на w

Вычислить значение выражения - C++
Помогите пожалуйста написать программу, в этом я только новичок . Вычислить значение выражения: min(a, b+c, max(d,d^2,b)). Значения...

Вычислить значение выражения - C++
Составит программу на языке С++ для решения Первого варианта задания с применением оператора switch!


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

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