Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.12.2016, 14:51   #1
Dima-91
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 198
По умолчанию Проблема с расчетами тангенса

Код:
#include <stdio.h>
#include <iostream.h>
#include <math.h>
class my_Fun
{
	double x,y,z,h;
	public:
	my_Fun (void)
	{
	x = 2.444;
	y = 0.00869;
	z = -130.0;
	}
	void set (double x, double y,double z)
	{
		cout<< "Enter x: ";
		cin>>x;
		cout<< "Enter y: ";
		cin>>y;
		cout<< "Enter z: ";
		cin>>z;
	}
	void print (void)
	{
    	cout<<"h = "<<h<<endl;
    }
	void Run (void)
	{
		double a,b,c;
		a = ((pow(x,y+1) + exp(y-1))/(1 + x*abs(y-tan(z))))*(1+abs(y-x));
		b = pow(y-x, 2)/2;
		c = pow(y-x, 3)/3;
		h = a+b-c;
	}
};
int _tmain(int argc, _TCHAR* argv[]) 
{
	my_Fun x;
	x.Run();
	x.print();

	system("pause");
	return 0;
}
Проблема в расчете тангенса, получаю не то значения h.
При x = 2,444, y = 0,869 * 10^(-2), z = –0,13*10^3, h = –0,49871.

И второй вопрос, для развития, можно ли объявить в условии значения заранее. К примеру: y = 0.869*pow(10,-2)?? Компилятор выдает ошибку, а такая форма записи бы не помешала)
Dima-91 вне форума Ответить с цитированием
Старый 04.12.2016, 14:54   #2
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Цитата:
Сообщение от Dima-91 Посмотреть сообщение

И второй вопрос, для развития, можно ли объявить в условии значения заранее. К примеру: y = 0.869*pow(10,-2)?? Компилятор выдает ошибку, а такая форма записи бы не помешала)
Ну посчитайте и объявите как константу.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 04.12.2016, 15:06   #3
Dima-91
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 198
По умолчанию

Цитата:
Сообщение от WorldMaster Посмотреть сообщение
Ну посчитайте и объявите как константу.
Так то я так сделал...
Код:
	double x,y,z,h;
	public:
	my_Fun (void)
	{
	x = 2.444;
	y = 0.00869;
	z = -130.0;
	}
Тема больше относиться к первому вопросу, может есть соображения?
Dima-91 вне форума Ответить с цитированием
Старый 04.12.2016, 15:14   #4
olej.tsil
Заблокирован
 
Регистрация: 29.11.2016
Сообщений: 215
По умолчанию

Цитата:
Сообщение от Dima-91 Посмотреть сообщение
tan(z)
Цитата:
Сообщение от Dima-91 Посмотреть сообщение
z = -130.0;
Это вы функцию tan() решили вычислять от градусов, что ли?
olej.tsil вне форума Ответить с цитированием
Старый 04.12.2016, 15:18   #5
Dima-91
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 198
По умолчанию

точка в
Код:
z= -130.0
не делает разницы в расчетах, так я пытался подчеркнуть что число вещественного типа, что бы убрать путаницу.
Дело в другом сама функция tan(z), которая является tan(-130) выдает не тот результат. Или же я не ту функцию для tg(z) использую.
Dima-91 вне форума Ответить с цитированием
Старый 04.12.2016, 15:19   #6
olej.tsil
Заблокирован
 
Регистрация: 29.11.2016
Сообщений: 215
По умолчанию

Цитата:
Сообщение от Dima-91 Посмотреть сообщение
можно ли объявить в условии значения заранее. К примеру: y = 0.869*pow(10,-2)?? Компилятор выдает ошибку, а такая форма записи бы не помешала)
Можно, конечно
Только весь вопрос: когда и к чему относится инициализация и в какое время она делается?

У вас там class вообще "ни к селу ни к городу" - там чисто функциональные вычисления, а инициализацию x, y, z вы могли бы сделать только в конструкторе ... потому что у вас и объекта то ещё не существует!
olej.tsil вне форума Ответить с цитированием
Старый 04.12.2016, 15:20   #7
olej.tsil
Заблокирован
 
Регистрация: 29.11.2016
Сообщений: 215
По умолчанию

Цитата:
Сообщение от Dima-91 Посмотреть сообщение
Дело в другом сама функция tan(z), которая является tan(-130) выдает не тот результат.
Функция tan() предполагает значение параметра в радианах.

А точку компилятор и без вас подставит
olej.tsil вне форума Ответить с цитированием
Старый 04.12.2016, 15:25   #8
Dima-91
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 198
По умолчанию

Спасибо, за пояснение.
Как же из условия tg(z), получить нужное число, если функция tan(z) выдает другое?
Dima-91 вне форума Ответить с цитированием
Старый 04.12.2016, 15:38   #9
Dima-91
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 198
По умолчанию

Думал через синус и косинус сделать, облом. Так же не верное значение выдает.
Dima-91 вне форума Ответить с цитированием
Старый 04.12.2016, 15:52   #10
olej.tsil
Заблокирован
 
Регистрация: 29.11.2016
Сообщений: 215
По умолчанию

Цитата:
Сообщение от Dima-91 Посмотреть сообщение
Как же из условия tg(z), получить нужное число, если функция tan(z) выдает другое?
tan() всегда выдаёт именно то что нужно значение!
Это вы ему подсовываете параметром значение в градусах вместо радиан.
Переведите градусы в радианы - и будет вам счастье.
olej.tsil вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с расчетами и их применением. hapera2 PHP 11 03.09.2015 18:34
Помогите с расчетами... Protuberanez Microsoft Office Access 4 11.12.2014 18:46
Power Pivot для Excel (добавление столбца с расчетами) baters Microsoft Office Excel 1 10.08.2012 14:19
Помогите пожалуйста с расчетами .... Sashko Паскаль, Turbo Pascal, PascalABC.NET 12 22.11.2008 11:52
Помогите с расчетами в Excel Eugene*** Microsoft Office Excel 1 19.11.2008 22:08