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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.11.2013, 18:22   #1
rigger
Новичок
Джуниор
 
Регистрация: 28.11.2013
Сообщений: 2
Восклицание Помогите разобраться с заданием "Найти функцию с точностью e..."

Найти функцию с точностью e , т.е. пока |fn+1-fn| < e . Определить необходимое число членов ряда. Определить абсолютную разность между табличной функцией и суммой ряда. Определить с какой точностью в машине определяется эта функция.
ln(1+x) = x - x2/2 + x3/3 - ... |x| < 1

// ConsoleApplication21.cpp: определяет точку входа для консольного приложения.
//


Код:
#include "stdafx.h"
#include <iostream> // функции стандартного ввода вывода
#include <conio.h> 
#include <clocale>
#include <string>
#include <math.h>

using namespace std; // использовать пространство имен std (группа определенных функций, классов и т.п. Практически для всех стандартных библиотек С++)


int _tmain(int argc, _TCHAR* argv[])
{
	setlocale(LC_ALL, "Russian");  //чтение русских надписей


	wchar_t x,f1,f2,k,mod1;
	int i;
	cout << "Введите х: ";
	cin >> x;

	i = 2;
	f1 = x;
	f2 = f1 + (-1)*(pow(x, 2) /2 );
	mod1 = f2 - f1;
	if (mod1 < 0)
		mod1 = (-1)*mod1;
	cout << f1 << "\n";
	cout << f2 << "\n";

		// pow(-1,i)
	while (mod1<exp(1))
	{
		k = f2;
		f2 = f1 + pow(-1,(i+1))*(pow(x, i) / i);
		f1 = k;
		mod1 = f2 - f1;
		if (mod1 < 0)
			mod1 = (-1)*mod1;
	}
	cout << f2;

	return 0;
}
Выдает ошибку: преобразование "double" в "wchar_t", возможна потеря данных!

Помогите!
rigger вне форума Ответить с цитированием
Старый 28.11.2013, 20:00   #2
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Стесняюсь спросить, а почему
Код:
wchar_t x,f1,f2,k,mod1;
Почему нельзя
Код:
double x,f1,f2,k,mod1;
?
type_Oleg вне форума Ответить с цитированием
Старый 29.11.2013, 04:50   #3
rigger
Новичок
Джуниор
 
Регистрация: 28.11.2013
Сообщений: 2
По умолчанию

Цитата:
Сообщение от type_Oleg Посмотреть сообщение
Стесняюсь спросить, а почему
Код:
wchar_t x,f1,f2,k,mod1;
Почему нельзя
Код:
double x,f1,f2,k,mod1;
?
Потому что |x|<1 и если double x,f1,f2,k,mod1;
то на в цикле mod1 становится равен 0 и зацикливается
rigger вне форума Ответить с цитированием
Старый 29.11.2013, 15:32   #4
Shad0wF1rst
Форумчанин
 
Регистрация: 11.01.2013
Сообщений: 149
По умолчанию

Цитата:
Сообщение от rigger Посмотреть сообщение
Потому что |x|<1 и если double x,f1,f2,k,mod1;
то на в цикле mod1 становится равен 0 и зацикливается
Насколько мне известно wchar_t это все таки строковый тип данных, так как вы вычисления делаете?!
А насчет того что он равен нулю не забываем, что при вычислениях обычно приводится к типу int, и понятное дело что если результат вычисления будет меньше 1цы, то присвоится 0, что бы этого избежать обычно дописывается к чему нибудь *1.0 или явно приводится к типу данных с точкой:
1 случай double otv = 1/3; выдаст вам otv = 0;
2 случай double otv = 1.0/3; выдаст otv = 0.3333333;
3 случай double otv = (double) 1/3; должен выдать otv = 0.3333333, почему должен, потому что обычно пользуюсь вторым случаем.
Может это и чушь, но это моя чушь и я ее никому не отдам.

Последний раз редактировалось Shad0wF1rst; 29.11.2013 в 15:38.
Shad0wF1rst вне форума Ответить с цитированием
Старый 29.11.2013, 20:29   #5
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

rigger, Только что заметил, что вы неправильно поняли задание.
Найти функцию с точностью e - имеется ввиду не число Эйлера e = 2,718...,
имеется ввиду эпсилон - погрешность . Число типа 0,01 или 0,0001 и т.д., которое нужно задавать.
Согласитесь, точность +- 2,718 - уж слишком какая то .. тем более значение самой функции у вас -от - ∞ до 0,69
type_Oleg вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
на вход подаются сведения об учениках и оценках. Найти тех, кто сдал на "4" и "5" ( Паскаль ) weech Помощь студентам 1 18.11.2011 13:57
Помогите пожайлуста найти, кто человек "вконтакте", зная его "мэйл" Аксюнька1990 Помощь студентам 1 12.06.2009 06:16
помогите разобраться с "Клиен и сервер" Briz Работа с сетью в Delphi 3 04.11.2007 06:54